diff --git a/magit-key-mode.el b/magit-key-mode.el index a19c0a88..17739c5d 100644 --- a/magit-key-mode.el +++ b/magit-key-mode.el @@ -298,4 +298,18 @@ put it in magit-key-mode-key-maps for fast lookup." (magit-key-mode-draw-switches switches) (magit-key-mode-draw-args arguments))) +(defun magit-key-mode-generate (sym) + "Generate the key-group menu for SYM" + (let ((opts (magit-key-mode-options-for-group sym))) + (eval + `(defun ,(intern (concat "magit-key-mode-popup-" (symbol-name sym))) nil + ,(concat "Key menu for " (symbol-name sym)) + (interactive) + (magit-key-mode (quote ,sym)))))) + +;; create the interactive functions for the key mode popups +(mapc (lambda (g) + (magit-key-mode-generate (car g))) + magit-key-mode-groups) + (provide 'magit-key-mode) diff --git a/magit.el b/magit.el index 589bc501..6a971183 100644 --- a/magit.el +++ b/magit.el @@ -374,36 +374,20 @@ Many Magit faces inherit from this one by default." (define-key map (kbd "g") 'magit-refresh) (define-key map (kbd "G") 'magit-refresh-all) (define-key map (kbd "?") 'magit-describe-item) - (define-key map (kbd "!") (lambda () - (interactive) - (magit-key-mode 'running))) + (define-key map (kbd "!") 'magit-key-mode-popup-running) (define-key map (kbd ":") 'magit-git-command) (define-key map (kbd "RET") 'magit-visit-item) (define-key map (kbd "SPC") 'magit-show-item-or-scroll-up) (define-key map (kbd "DEL") 'magit-show-item-or-scroll-down) (define-key map (kbd "C-w") 'magit-copy-item-as-kill) (define-key map (kbd "R") 'magit-rebase-step) - (define-key map (kbd "t") (lambda () - (interactive) - (magit-key-mode 'tagging))) - (define-key map (kbd "r") (lambda () - (interactive) - (magit-key-mode 'rewriting))) - (define-key map (kbd "P") (lambda () - (interactive) - (magit-key-mode 'pushing))) - (define-key map (kbd "f") (lambda () - (interactive) - (magit-key-mode 'fetching))) - (define-key map (kbd "b") (lambda () - (interactive) - (magit-key-mode 'branching))) - (define-key map (kbd "F") (lambda () - (interactive) - (magit-key-mode 'pulling))) - (define-key map (kbd "l") (lambda () - (interactive) - (magit-key-mode 'logging))) + (define-key map (kbd "t") 'magit-key-mode-popup-tagging) + (define-key map (kbd "r") 'magit-key-mode-popup-rewriting) + (define-key map (kbd "P") 'magit-key-mode-popup-pushing) + (define-key map (kbd "f") 'magit-key-mode-popup-fetching) + (define-key map (kbd "b") 'magit-key-mode-popup-branching) + (define-key map (kbd "F") 'magit-key-mode-popup-pulling) + (define-key map (kbd "l") 'magit-key-mode-popup-logging) (define-key map (kbd "$") 'magit-display-process) (define-key map (kbd "c") 'magit-log-edit) (define-key map (kbd "E") 'magit-interactive-rebase) @@ -435,20 +419,14 @@ Many Magit faces inherit from this one by default." (define-key map (kbd "a") 'magit-apply-item) (define-key map (kbd "A") 'magit-cherry-pick-item) (define-key map (kbd "v") 'magit-revert-item) - (define-key map (kbd "b") (lambda () - (interactive) - (magit-key-mode 'branching))) - (define-key map (kbd "m") (lambda () - (interactive) - (magit-key-mode 'merging))) + (define-key map (kbd "b") 'magit-key-mode-popup-branching) + (define-key map (kbd "m") 'magit-key-mode-popup-merging) (define-key map (kbd "k") 'magit-discard-item) (define-key map (kbd "e") 'magit-interactive-resolve-item) (define-key map (kbd "C") 'magit-add-log) (define-key map (kbd "x") 'magit-reset-head) (define-key map (kbd "X") 'magit-reset-working-tree) - (define-key map (kbd "z") (lambda () - (interactive) - (magit-key-mode 'stashing))) + (define-key map (kbd "z") 'magit-key-mode-popup-stashing) map)) (defvar magit-stash-mode-map @@ -470,17 +448,11 @@ Many Magit faces inherit from this one by default." (define-key map (kbd "a") 'magit-apply-item) (define-key map (kbd "A") 'magit-cherry-pick-item) (define-key map (kbd "v") 'magit-revert-item) - (define-key map (kbd "b") (lambda () - (interactive) - (magit-key-mode 'branching))) - (define-key map (kbd "m") (lambda () - (interactive) - (magit-key-mode 'merging))) + (define-key map (kbd "b") 'magit-key-mode-popup-branching) + (define-key map (kbd "m") 'magit-key-mode-popup-merging) (define-key map (kbd "x") 'magit-reset-head) (define-key map (kbd "e") 'magit-log-show-more-entries) - (define-key map (kbd "l") (lambda () - (interactive) - (magit-key-mode 'logging))) + (define-key map (kbd "l") 'magit-key-mode-popup-logging) map)) (defvar magit-reflog-mode-map @@ -514,12 +486,8 @@ Many Magit faces inherit from this one by default." (define-key map (kbd "a") 'magit-apply-item) (define-key map (kbd "A") 'magit-cherry-pick-item) (define-key map (kbd "v") 'magit-revert-item) - (define-key map (kbd "b") (lambda () - (interactive) - (magit-key-mode 'branching))) - (define-key map (kbd "m") (lambda () - (interactive) - (magit-key-mode 'merging))) + (define-key map (kbd "b") 'magit-key-mode-popup-branching) + (define-key map (kbd "m") 'magit-key-mode-popup-merging) (define-key map (kbd "x") 'magit-reset-head) (define-key map (kbd "i") 'magit-ignore-item) map)) @@ -3326,7 +3294,7 @@ Tag will point to the current 'HEAD'." (list (read-string "Tag name: ") (magit-read-rev "Place tag on: " (or (magit-default-rev) "HEAD")))) - (magit-pop-to-log-edit 'tag)) + (magit-pop-to-log-edit 'tagging)) ;;; Stashing