Generate interactive popup functions (thanks Rémi).

This commit is contained in:
Phil Jackson 2010-09-07 21:11:03 +01:00
parent eba6873dc1
commit 527cc7af10
2 changed files with 31 additions and 49 deletions

View file

@ -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)

View file

@ -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