Works without supporting prefixes
This commit is contained in:
parent
aa33f2f6a7
commit
09f09afd34
1 changed files with 44 additions and 2 deletions
46
magit.el
46
magit.el
|
@ -1392,6 +1392,10 @@ FUNC should leave point at the end of the modified region"
|
||||||
(magit-define-level-shower 3)
|
(magit-define-level-shower 3)
|
||||||
(magit-define-level-shower 4)
|
(magit-define-level-shower 4)
|
||||||
|
|
||||||
|
(defvar magit-menu
|
||||||
|
(list '("Log" ?l "Short log" magit-log)
|
||||||
|
'("Log" ?L "Detailed log" magit-log-long)))
|
||||||
|
|
||||||
(defvar magit-mode-map
|
(defvar magit-mode-map
|
||||||
(let ((map (make-keymap)))
|
(let ((map (make-keymap)))
|
||||||
(suppress-keymap map t)
|
(suppress-keymap map t)
|
||||||
|
@ -1434,7 +1438,7 @@ FUNC should leave point at the end of the modified region"
|
||||||
(define-key map (kbd "f") 'magit-remote-update)
|
(define-key map (kbd "f") 'magit-remote-update)
|
||||||
(define-key map (kbd "F") 'magit-pull)
|
(define-key map (kbd "F") 'magit-pull)
|
||||||
(define-key map (kbd "c") 'magit-log-edit)
|
(define-key map (kbd "c") 'magit-log-edit)
|
||||||
(define-key map (kbd "l") 'magit-log)
|
(define-key map (kbd "l") 'magit-log-menu)
|
||||||
(define-key map (kbd "L") 'magit-log-long)
|
(define-key map (kbd "L") 'magit-log-long)
|
||||||
(define-key map (kbd "h") 'magit-reflog-head)
|
(define-key map (kbd "h") 'magit-reflog-head)
|
||||||
(define-key map (kbd "H") 'magit-reflog)
|
(define-key map (kbd "H") 'magit-reflog)
|
||||||
|
@ -1569,7 +1573,7 @@ FUNC should leave point at the end of the modified region"
|
||||||
"---"
|
"---"
|
||||||
["Diff working tree" magit-diff-working-tree t]
|
["Diff working tree" magit-diff-working-tree t]
|
||||||
["Diff" magit-diff t]
|
["Diff" magit-diff t]
|
||||||
["Log" magit-log t]
|
["Log" magit-log-menu t]
|
||||||
["Long Log" magit-log-long t]
|
["Long Log" magit-log-long t]
|
||||||
["Reflog head" magit-reflog-head t]
|
["Reflog head" magit-reflog-head t]
|
||||||
["Reflog" magit-reflog t]
|
["Reflog" magit-reflog t]
|
||||||
|
@ -3519,6 +3523,44 @@ With a non numeric prefix ARG, show all entries"
|
||||||
(interactive "P")
|
(interactive "P")
|
||||||
(magit-display-log arg))
|
(magit-display-log arg))
|
||||||
|
|
||||||
|
(defun magit-log-menu (&optional arg)
|
||||||
|
(interactive "P")
|
||||||
|
(magit-submenu "Log" arg))
|
||||||
|
|
||||||
|
(defun magit-menu-for-group (group)
|
||||||
|
(let ((magit-group-menu (concat group " commands\n")))
|
||||||
|
(dolist (item magit-menu)
|
||||||
|
(when (string= (car item) group)
|
||||||
|
(setq magit-group-menu
|
||||||
|
(concat magit-group-menu
|
||||||
|
(format "\n%s %s" (string (nth 1 item)) (nth 2 item))))))
|
||||||
|
magit-group-menu))
|
||||||
|
|
||||||
|
(defun magit-submenu (group &optional arg)
|
||||||
|
(let ((magit-buf (current-buffer))
|
||||||
|
(menu (magit-menu-for-group group))
|
||||||
|
(chosen-fn nil))
|
||||||
|
(save-window-excursion
|
||||||
|
(delete-other-windows)
|
||||||
|
(switch-to-buffer-other-window " *Magit Commands*")
|
||||||
|
(erase-buffer)
|
||||||
|
(insert menu)
|
||||||
|
(setq buffer-read-only nil)
|
||||||
|
(fit-window-to-buffer)
|
||||||
|
(catch 'exit
|
||||||
|
(while t
|
||||||
|
(setq c (read-char-exclusive "Command key: "))
|
||||||
|
(message "%s" c)
|
||||||
|
(let ((case-fold-search nil))
|
||||||
|
(dolist (item magit-menu)
|
||||||
|
(when (char-equal c (nth 1 item))
|
||||||
|
(message "%s" (nth 2 item))
|
||||||
|
(setq chosen-fn (nth 3 item))
|
||||||
|
(throw 'exit 0))))
|
||||||
|
(error "Invalid key %c" c))))
|
||||||
|
(when chosen-fn
|
||||||
|
(call-interactively chosen-fn))))
|
||||||
|
|
||||||
(defun magit-log-grep (str)
|
(defun magit-log-grep (str)
|
||||||
"Search for regexp specified by STR in the commit log."
|
"Search for regexp specified by STR in the commit log."
|
||||||
(interactive "sGrep in commit log: ")
|
(interactive "sGrep in commit log: ")
|
||||||
|
|
Loading…
Add table
Reference in a new issue