summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--init.el3
-rw-r--r--lisp/km-magit.el19
2 files changed, 22 insertions, 0 deletions
diff --git a/init.el b/init.el
index 2db8b38..7d9d381 100644
--- a/init.el
+++ b/init.el
@@ -1000,6 +1000,9 @@
(define-key magit-revision-mode-map (kbd "C-c C-r")
#'km/magit-revision-insert-related-refs)
+ (define-key magit-cherry-mode-map "u"
+ #'km/magit-cherry-toggle-upstream-section)
+
(bind-keys :map km/magit-map
("c" . km/magit-find-commit-file)
("g" . km/git-map)
diff --git a/lisp/km-magit.el b/lisp/km-magit.el
index 9455237..d4b89f2 100644
--- a/lisp/km-magit.el
+++ b/lisp/km-magit.el
@@ -594,6 +594,25 @@ show tags by default."
((derived-mode-p 'magit-cherry-mode)
(call-interactively #'km/magit-cherry-flip-revs))))
+(defun km/magit-cherry-insert-in-upstream ()
+ (insert ?\n)
+ (magit-insert-section (cherries)
+ (magit-insert-heading "In upstream:")
+ (magit-git-wash (apply-partially 'magit-log-wash-log 'cherry)
+ "cherry" "-v" "--abbrev"
+ (nth 1 magit-refresh-args) (nth 0 magit-refresh-args))))
+
+(defun km/magit-cherry-toggle-upstream-section ()
+ (interactive)
+ (let ((pos (point)))
+ (if (memq #'km/magit-cherry-insert-in-upstream magit-cherry-sections-hook)
+ (kill-local-variable 'magit-cherry-sections-hook)
+ (setq-local magit-cherry-sections-hook
+ (append magit-cherry-sections-hook
+ '(km/magit-cherry-insert-in-upstream))))
+ (magit-refresh-buffer)
+ (goto-char pos)))
+
(defun km/magit-diff-visit-file (&optional prev-rev other-window)
"Like `magit-diff-visit-file', but with the option to visit REV^.