branch: elpa/git-commit commit 565818845e7a10f5fb1dafc901b841b0fe9e2d64 Author: Jonas Bernoulli <jo...@bernoul.li> Commit: Jonas Bernoulli <jo...@bernoul.li>
Use defvar-keymap from Emacs 29.1 or the Compat package --- lisp/git-commit.el | 34 +++++----- lisp/git-rebase.el | 69 ++++++++++---------- lisp/magit-base.el | 10 ++- lisp/magit-blame.el | 48 +++++++------- lisp/magit-diff.el | 30 ++++----- lisp/magit-files.el | 18 +++--- lisp/magit-log.el | 91 +++++++++++--------------- lisp/magit-merge.el | 8 +-- lisp/magit-mode.el | 166 ++++++++++++++++++++++++------------------------ lisp/magit-process.el | 17 ++--- lisp/magit-reflog.el | 12 ++-- lisp/magit-refs.el | 12 ++-- lisp/magit-repos.el | 18 +++--- lisp/magit-section.el | 14 ++-- lisp/magit-status.el | 12 ++-- lisp/magit-submodule.el | 8 +-- 16 files changed, 257 insertions(+), 310 deletions(-) diff --git a/lisp/git-commit.el b/lisp/git-commit.el index 0a2eb6b7dd..7d77fa0075 100644 --- a/lisp/git-commit.el +++ b/lisp/git-commit.el @@ -410,24 +410,22 @@ This is only used if Magit is available." ;;; Keymap -(defvar git-commit-mode-map - (let ((map (make-sparse-keymap))) - (define-key map (kbd "M-p") #'git-commit-prev-message) - (define-key map (kbd "M-n") #'git-commit-next-message) - (define-key map (kbd "C-c M-p") #'git-commit-search-message-backward) - (define-key map (kbd "C-c M-n") #'git-commit-search-message-forward) - (define-key map (kbd "C-c C-i") #'git-commit-insert-pseudo-header) - (define-key map (kbd "C-c C-a") #'git-commit-ack) - (define-key map (kbd "C-c M-i") #'git-commit-suggested) - (define-key map (kbd "C-c C-m") #'git-commit-modified) - (define-key map (kbd "C-c C-o") #'git-commit-cc) - (define-key map (kbd "C-c C-p") #'git-commit-reported) - (define-key map (kbd "C-c C-r") #'git-commit-review) - (define-key map (kbd "C-c C-s") #'git-commit-signoff) - (define-key map (kbd "C-c C-t") #'git-commit-test) - (define-key map (kbd "C-c M-s") #'git-commit-save-message) - map) - "Key map used by `git-commit-mode'.") +(defvar-keymap git-commit-mode-map + :doc "Key map used by `git-commit-mode'." + "M-p" #'git-commit-prev-message + "M-n" #'git-commit-next-message + "C-c M-p" #'git-commit-search-message-backward + "C-c M-n" #'git-commit-search-message-forward + "C-c C-i" #'git-commit-insert-pseudo-header + "C-c C-a" #'git-commit-ack + "C-c M-i" #'git-commit-suggested + "C-c C-m" #'git-commit-modified + "C-c C-o" #'git-commit-cc + "C-c C-p" #'git-commit-reported + "C-c C-r" #'git-commit-review + "C-c C-s" #'git-commit-signoff + "C-c C-t" #'git-commit-test + "C-c M-s" #'git-commit-save-message) ;;; Menu diff --git a/lisp/git-rebase.el b/lisp/git-rebase.el index 6168f500c4..793a6c2f0d 100644 --- a/lisp/git-rebase.el +++ b/lisp/git-rebase.el @@ -143,42 +143,39 @@ ;;; Keymaps -(defvar git-rebase-mode-map - (let ((map (make-sparse-keymap))) - (set-keymap-parent map special-mode-map) - (define-key map (kbd "C-m") #'git-rebase-show-commit) - (define-key map (kbd "p") #'git-rebase-backward-line) - (define-key map (kbd "n") #'forward-line) - (define-key map (kbd "M-p") #'git-rebase-move-line-up) - (define-key map (kbd "M-n") #'git-rebase-move-line-down) - (define-key map (kbd "c") #'git-rebase-pick) - (define-key map (kbd "k") #'git-rebase-kill-line) - (define-key map (kbd "C-k") #'git-rebase-kill-line) - (define-key map (kbd "b") #'git-rebase-break) - (define-key map (kbd "e") #'git-rebase-edit) - (define-key map (kbd "l") #'git-rebase-label) - (define-key map (kbd "M M") #'git-rebase-merge) - (define-key map (kbd "M t") #'git-rebase-merge-toggle-editmsg) - (define-key map (kbd "m") #'git-rebase-edit) - (define-key map (kbd "f") #'git-rebase-fixup) - (define-key map (kbd "q") #'undefined) - (define-key map (kbd "r") #'git-rebase-reword) - (define-key map (kbd "w") #'git-rebase-reword) - (define-key map (kbd "s") #'git-rebase-squash) - (define-key map (kbd "t") #'git-rebase-reset) - (define-key map (kbd "u") #'git-rebase-update-ref) - (define-key map (kbd "x") #'git-rebase-exec) - (define-key map (kbd "y") #'git-rebase-insert) - (define-key map (kbd "z") #'git-rebase-noop) - (define-key map (kbd "SPC") #'git-rebase-show-or-scroll-up) - (define-key map (kbd "DEL") #'git-rebase-show-or-scroll-down) - (define-key map (kbd "C-x C-t") #'git-rebase-move-line-up) - (define-key map [M-up] #'git-rebase-move-line-up) - (define-key map [M-down] #'git-rebase-move-line-down) - (define-key map [remap undo] #'git-rebase-undo) - map) - "Keymap for Git-Rebase mode.") - +(defvar-keymap git-rebase-mode-map + :doc "Keymap for Git-Rebase mode." + :parent special-mode-map + "C-m" #'git-rebase-show-commit + "p" #'git-rebase-backward-line + "n" #'forward-line + "M-p" #'git-rebase-move-line-up + "M-n" #'git-rebase-move-line-down + "c" #'git-rebase-pick + "k" #'git-rebase-kill-line + "C-k" #'git-rebase-kill-line + "b" #'git-rebase-break + "e" #'git-rebase-edit + "l" #'git-rebase-label + "M M" #'git-rebase-merge + "M t" #'git-rebase-merge-toggle-editmsg + "m" #'git-rebase-edit + "f" #'git-rebase-fixup + "q" #'undefined + "r" #'git-rebase-reword + "w" #'git-rebase-reword + "s" #'git-rebase-squash + "t" #'git-rebase-reset + "u" #'git-rebase-update-ref + "x" #'git-rebase-exec + "y" #'git-rebase-insert + "z" #'git-rebase-noop + "SPC" #'git-rebase-show-or-scroll-up + "DEL" #'git-rebase-show-or-scroll-down + "C-x C-t" #'git-rebase-move-line-up + "M-<up>" #'git-rebase-move-line-up + "M-<down>" #'git-rebase-move-line-down + "<remap> <undo>" #'git-rebase-undo) (put 'git-rebase-reword :advertised-binding (kbd "r")) (put 'git-rebase-move-line-up :advertised-binding (kbd "M-p")) (put 'git-rebase-kill-line :advertised-binding (kbd "k")) diff --git a/lisp/magit-base.el b/lisp/magit-base.el index ac0c6c1e8e..de88b44a6c 100644 --- a/lisp/magit-base.el +++ b/lisp/magit-base.el @@ -700,12 +700,10 @@ back to built-in `completing-read' for now." :error) (format "%s (default %s): " (substring prompt 0 -2) def) prompt)) -(defvar magit-minibuffer-local-ns-map - (let ((map (make-sparse-keymap))) - (set-keymap-parent map minibuffer-local-map) - (define-key map "\s" #'magit-whitespace-disallowed) - (define-key map "\t" #'magit-whitespace-disallowed) - map)) +(defvar-keymap magit-minibuffer-local-ns-map + :parent minibuffer-local-map + "SPC" #'magit-whitespace-disallowed + "TAB" #'magit-whitespace-disallowed) (defun magit-whitespace-disallowed () "Beep to tell the user that whitespace is not allowed." diff --git a/lisp/magit-blame.el b/lisp/magit-blame.el index 26fde4c309..1b9ea262dc 100644 --- a/lisp/magit-blame.el +++ b/lisp/magit-blame.el @@ -289,33 +289,29 @@ Also see option `magit-blame-styles'." ;;; Keymaps -(defvar magit-blame-mode-map - (let ((map (make-sparse-keymap))) - (define-key map (kbd "C-c C-q") 'magit-blame-quit) - map) - "Keymap for `magit-blame-mode'. +(defvar-keymap magit-blame-mode-map + :doc "Keymap for `magit-blame-mode'. Note that most blaming key bindings are defined -in `magit-blame-read-only-mode-map' instead.") - -(defvar magit-blame-read-only-mode-map - (let ((map (make-sparse-keymap))) - (define-key map (kbd "C-m") #'magit-show-commit) - (define-key map (kbd "p") #'magit-blame-previous-chunk) - (define-key map (kbd "P") #'magit-blame-previous-chunk-same-commit) - (define-key map (kbd "n") #'magit-blame-next-chunk) - (define-key map (kbd "N") #'magit-blame-next-chunk-same-commit) - (define-key map (kbd "b") #'magit-blame-addition) - (define-key map (kbd "r") #'magit-blame-removal) - (define-key map (kbd "f") #'magit-blame-reverse) - (define-key map (kbd "B") #'magit-blame) - (define-key map (kbd "c") #'magit-blame-cycle-style) - (define-key map (kbd "q") #'magit-blame-quit) - (define-key map (kbd "M-w") #'magit-blame-copy-hash) - (define-key map (kbd "SPC") #'magit-diff-show-or-scroll-up) - (define-key map (kbd "S-SPC") #'magit-diff-show-or-scroll-down) - (define-key map (kbd "DEL") #'magit-diff-show-or-scroll-down) - map) - "Keymap for `magit-blame-read-only-mode'.") +in `magit-blame-read-only-mode-map' instead." + "C-c C-q" #'magit-blame-quit) + +(defvar-keymap magit-blame-read-only-mode-map + :doc "Keymap for `magit-blame-read-only-mode'." + "C-m" #'magit-show-commit + "p" #'magit-blame-previous-chunk + "P" #'magit-blame-previous-chunk-same-commit + "n" #'magit-blame-next-chunk + "N" #'magit-blame-next-chunk-same-commit + "b" #'magit-blame-addition + "r" #'magit-blame-removal + "f" #'magit-blame-reverse + "B" #'magit-blame + "c" #'magit-blame-cycle-style + "q" #'magit-blame-quit + "M-w" #'magit-blame-copy-hash + "SPC" #'magit-diff-show-or-scroll-up + "S-SPC" #'magit-diff-show-or-scroll-down + "DEL" #'magit-diff-show-or-scroll-down) ;;; Modes ;;;; Base Mode diff --git a/lisp/magit-diff.el b/lisp/magit-diff.el index 5bb1c0d772..c7ccad0845 100644 --- a/lisp/magit-diff.el +++ b/lisp/magit-diff.el @@ -1869,18 +1869,16 @@ commit or stash at point, then prompt for a commit." ;;; Diff Mode -(defvar magit-diff-mode-map - (let ((map (make-sparse-keymap))) - (set-keymap-parent map magit-mode-map) - (define-key map (kbd "C-c C-d") #'magit-diff-while-committing) - (define-key map (kbd "C-c C-b") #'magit-go-backward) - (define-key map (kbd "C-c C-f") #'magit-go-forward) - (define-key map (kbd "SPC") #'scroll-up) - (define-key map (kbd "DEL") #'scroll-down) - (define-key map (kbd "j") #'magit-jump-to-diffstat-or-diff) - (define-key map [remap write-file] #'magit-patch-save) - map) - "Keymap for `magit-diff-mode'.") +(defvar-keymap magit-diff-mode-map + :doc "Keymap for `magit-diff-mode'." + :parent magit-mode-map + "C-c C-d" #'magit-diff-while-committing + "C-c C-b" #'magit-go-backward + "C-c C-f" #'magit-go-forward + "SPC" #'scroll-up + "DEL" #'scroll-down + "j" #'magit-jump-to-diffstat-or-diff + "<remap> <write-file>" #'magit-patch-save) (define-derived-mode magit-diff-mode magit-mode "Magit Diff" "Mode for looking at a Git diff. @@ -2006,11 +2004,9 @@ The classes `magit-file-section' and `magit-hunk-section' derive from the abstract `magit-diff-section' class. Accordingly this keymap is the parent of their keymaps.") -(defvar magit-file-section-map - (let ((map (make-sparse-keymap))) - (set-keymap-parent map magit-diff-section-base-map) - map) - "Keymap for `file' sections.") +(defvar-keymap magit-file-section-map + :doc "Keymap for `file' sections." + :parent magit-diff-section-base-map) (defvar magit-hunk-section-map (let ((map (make-sparse-keymap))) diff --git a/lisp/magit-files.el b/lisp/magit-files.el index 63c2c1cee3..6afdd42799 100644 --- a/lisp/magit-files.el +++ b/lisp/magit-files.el @@ -322,16 +322,14 @@ to `magit-dispatch'." ;;; Blob Mode -(defvar magit-blob-mode-map - (let ((map (make-sparse-keymap))) - (define-key map "p" #'magit-blob-previous) - (define-key map "n" #'magit-blob-next) - (define-key map "b" #'magit-blame-addition) - (define-key map "r" #'magit-blame-removal) - (define-key map "f" #'magit-blame-reverse) - (define-key map "q" #'magit-kill-this-buffer) - map) - "Keymap for `magit-blob-mode'.") +(defvar-keymap magit-blob-mode-map + :doc "Keymap for `magit-blob-mode'." + "p" #'magit-blob-previous + "n" #'magit-blob-next + "b" #'magit-blame-addition + "r" #'magit-blame-removal + "f" #'magit-blame-reverse + "q" #'magit-kill-this-buffer) (define-minor-mode magit-blob-mode "Enable some Magit features in blob-visiting buffers. diff --git a/lisp/magit-log.el b/lisp/magit-log.el index 4a806630ad..c0d75ebc18 100644 --- a/lisp/magit-log.el +++ b/lisp/magit-log.el @@ -610,11 +610,9 @@ commits before and half after." ;;;; Setup Commands -(defvar magit-log-read-revs-map - (let ((map (make-sparse-keymap))) - (set-keymap-parent map crm-local-completion-map) - (define-key map "\s" #'self-insert-command) - map)) +(defvar-keymap magit-log-read-revs-map + :parent crm-local-completion-map + "SPC" #'self-insert-command) (defun magit-log-read-revs (&optional use-current) (or (and use-current (and-let* ((buf (magit-get-current-branch))) (list buf))) @@ -1004,19 +1002,17 @@ of the current repository first; creating it if necessary." '("-G" "--grep" "--author") "Arguments which disable the graph speedup hack.") -(defvar magit-log-mode-map - (let ((map (make-sparse-keymap))) - (set-keymap-parent map magit-mode-map) - (define-key map (kbd "C-c C-b") #'magit-go-backward) - (define-key map (kbd "C-c C-f") #'magit-go-forward) - (define-key map (kbd "C-c C-n") #'magit-log-move-to-parent) - (define-key map "j" #'magit-log-move-to-revision) - (define-key map "=" #'magit-log-toggle-commit-limit) - (define-key map "+" #'magit-log-double-commit-limit) - (define-key map "-" #'magit-log-half-commit-limit) - (define-key map "q" #'magit-log-bury-buffer) - map) - "Keymap for `magit-log-mode'.") +(defvar-keymap magit-log-mode-map + :doc "Keymap for `magit-log-mode'." + :parent magit-mode-map + "C-c C-b" #'magit-go-backward + "C-c C-f" #'magit-go-forward + "C-c C-n" #'magit-log-move-to-parent + "j" #'magit-log-move-to-revision + "=" #'magit-log-toggle-commit-limit + "+" #'magit-log-double-commit-limit + "-" #'magit-log-half-commit-limit + "q" #'magit-log-bury-buffer) (define-derived-mode magit-log-mode magit-mode "Magit Log" "Mode for looking at Git log. @@ -1169,11 +1165,9 @@ Do not add this to a hook variable." map) "Keymap for `commit' sections.") -(defvar magit-module-commit-section-map - (let ((map (make-sparse-keymap))) - (set-keymap-parent map magit-commit-section-map) - map) - "Keymap for `module-commit' sections.") +(defvar-keymap magit-module-commit-section-map + :doc "Keymap for `module-commit' sections." + :parent magit-commit-section-map) (defconst magit-log-heading-re ;; Note: A form feed instead of a null byte is used as the delimiter @@ -1595,19 +1589,16 @@ The shortstat style is experimental and rather slow." ;;; Select Mode -(defvar magit-log-select-mode-map - (let ((map (make-sparse-keymap))) - (set-keymap-parent map magit-log-mode-map) - (define-key map (kbd "C-c C-b") #'undefined) - (define-key map (kbd "C-c C-f") #'undefined) - (define-key map (kbd ".") #'magit-log-select-pick) - (define-key map (kbd "e") #'magit-log-select-pick) - (define-key map (kbd "C-c C-c") #'magit-log-select-pick) - (define-key map (kbd "q") #'magit-log-select-quit) - (define-key map (kbd "C-c C-k") #'magit-log-select-quit) - map) - "Keymap for `magit-log-select-mode'.") - +(defvar-keymap magit-log-select-mode-map + :doc "Keymap for `magit-log-select-mode'." + :parent magit-log-mode-map + "C-c C-b" #'undefined + "C-c C-f" #'undefined + "." #'magit-log-select-pick + "e" #'magit-log-select-pick + "C-c C-c" #'magit-log-select-pick + "q" #'magit-log-select-quit + "C-c C-k" #'magit-log-select-quit) (put 'magit-log-select-pick :advertised-binding [?\C-c ?\C-c]) (put 'magit-log-select-quit :advertised-binding [?\C-c ?\C-k]) @@ -1703,13 +1694,11 @@ Call `magit-log-select-quit-function' if set." ;;; Cherry Mode -(defvar magit-cherry-mode-map - (let ((map (make-sparse-keymap))) - (set-keymap-parent map magit-mode-map) - (define-key map "q" #'magit-log-bury-buffer) - (define-key map "L" #'magit-margin-settings) - map) - "Keymap for `magit-cherry-mode'.") +(defvar-keymap magit-cherry-mode-map + :doc "Keymap for `magit-cherry-mode'." + :parent magit-mode-map + "q" #'magit-log-bury-buffer + "L" #'magit-margin-settings) (define-derived-mode magit-cherry-mode magit-mode "Magit Cherry" "Mode for looking at commits not merged upstream. @@ -1782,11 +1771,9 @@ The classes `magit-{unpulled,unpushed,unmerged}-section' derive from the abstract `magit-log-section' class. Accordingly this keymap is the parent of their keymaps.") -(defvar magit-unpulled-section-map - (let ((map (make-sparse-keymap))) - (set-keymap-parent map magit-log-section-map) - map) - "Keymap for `unpulled' sections.") +(defvar-keymap magit-unpulled-section-map + :doc "Keymap for `unpulled' sections." + :parent magit-log-section-map) (cl-defmethod magit-section-ident-value ((section magit-unpulled-section)) "\"..@{push}\" cannot be used as the value because that is @@ -1827,11 +1814,9 @@ in the pushremote case." (magit-insert-log (concat ".." it) magit-buffer-log-args) (magit-log-insert-child-count))))) -(defvar magit-unpushed-section-map - (let ((map (make-sparse-keymap))) - (set-keymap-parent map magit-log-section-map) - map) - "Keymap for `unpushed' sections.") +(defvar-keymap magit-unpushed-section-map + :doc "Keymap for `unpushed' sections." + :parent magit-log-section-map) (cl-defmethod magit-section-ident-value ((section magit-unpushed-section)) "\"..@{push}\" cannot be used as the value because that is diff --git a/lisp/magit-merge.el b/lisp/magit-merge.el index 140bbe4864..374c2eb47a 100644 --- a/lisp/magit-merge.el +++ b/lisp/magit-merge.el @@ -289,11 +289,9 @@ then also remove the respective remote branch." ;;; Sections -(defvar magit-unmerged-section-map - (let ((map (make-sparse-keymap))) - (set-keymap-parent map magit-log-section-map) - map) - "Keymap for `unmerged' sections.") +(defvar-keymap magit-unmerged-section-map + :doc "Keymap for `unmerged' sections." + :parent magit-log-section-map) (defun magit-insert-merge-log () "Insert section for the on-going merge. diff --git a/lisp/magit-mode.el b/lisp/magit-mode.el index f00e4b1f69..de7bb5700b 100644 --- a/lisp/magit-mode.el +++ b/lisp/magit-mode.el @@ -323,90 +323,88 @@ recommended value." ;;; Key Bindings -(defvar magit-mode-map - (let ((map (make-sparse-keymap))) - (set-keymap-parent map magit-section-mode-map) - ;; Don't function-quote but make sure all commands are autoloaded. - (define-key map [C-return] 'magit-visit-thing) - (define-key map (kbd "RET") 'magit-visit-thing) - (define-key map (kbd "M-TAB") 'magit-dired-jump) - (define-key map [M-tab] 'magit-section-cycle-diffs) - (define-key map (kbd "SPC") 'magit-diff-show-or-scroll-up) - (define-key map (kbd "S-SPC") 'magit-diff-show-or-scroll-down) - (define-key map (kbd "DEL") 'magit-diff-show-or-scroll-down) - (define-key map "+" 'magit-diff-more-context) - (define-key map "-" 'magit-diff-less-context) - (define-key map "0" 'magit-diff-default-context) - (define-key map "a" 'magit-cherry-apply) - (define-key map "A" 'magit-cherry-pick) - (define-key map "b" 'magit-branch) - (define-key map "B" 'magit-bisect) - (define-key map "c" 'magit-commit) - (define-key map "C" 'magit-clone) - (define-key map "d" 'magit-diff) - (define-key map "D" 'magit-diff-refresh) - (define-key map "e" 'magit-ediff-dwim) - (define-key map "E" 'magit-ediff) - (define-key map "f" 'magit-fetch) - (define-key map "F" 'magit-pull) - (define-key map "g" 'magit-refresh) - (define-key map "G" 'magit-refresh-all) - (define-key map "h" 'magit-dispatch) - (define-key map "?" 'magit-dispatch) - (define-key map "H" 'magit-describe-section) - (define-key map "i" 'magit-gitignore) - (define-key map "I" 'magit-init) - (define-key map "j" 'magit-status-quick) - (define-key map "J" 'magit-display-repository-buffer) - (define-key map "k" 'magit-delete-thing) - (define-key map "K" 'magit-file-untrack) - (define-key map "l" 'magit-log) - (define-key map "L" 'magit-log-refresh) - (define-key map "m" 'magit-merge) - (define-key map "M" 'magit-remote) - ;; section-map "n" magit-section-forward - ;; reserved "N" forge-dispatch - (define-key map "o" 'magit-submodule) - (define-key map "O" 'magit-subtree) - ;; section-map "p" magit-section-backward - (define-key map "P" 'magit-push) - (define-key map "q" 'magit-mode-bury-buffer) - (define-key map "Q" 'magit-git-command) - (define-key map ":" 'magit-git-command) - (define-key map "r" 'magit-rebase) - (define-key map "R" 'magit-file-rename) - (define-key map "s" 'magit-stage-file) - (define-key map "S" 'magit-stage-modified) - (define-key map "t" 'magit-tag) - (define-key map "T" 'magit-notes) - (define-key map "u" 'magit-unstage-file) - (define-key map "U" 'magit-unstage-all) - (define-key map "v" 'magit-revert-no-commit) - (define-key map "V" 'magit-revert) - (define-key map "w" 'magit-am) - (define-key map "W" 'magit-patch) - (define-key map "x" 'magit-reset-quickly) - (define-key map "X" 'magit-reset) - (define-key map "y" 'magit-show-refs) - (define-key map "Y" 'magit-cherry) - (define-key map "z" 'magit-stash) - (define-key map "Z" 'magit-worktree) - (define-key map "%" 'magit-worktree) - (define-key map "$" 'magit-process-buffer) - (define-key map "!" 'magit-run) - (define-key map ">" 'magit-sparse-checkout) - (define-key map (kbd "C-c C-c") 'magit-dispatch) - (define-key map (kbd "C-c C-e") 'magit-edit-thing) - (define-key map (kbd "C-c C-o") 'magit-browse-thing) - (define-key map (kbd "C-c C-w") 'magit-browse-thing) - (define-key map (kbd "C-w") 'magit-copy-section-value) - (define-key map (kbd "M-w") 'magit-copy-buffer-revision) - (define-key map [remap previous-line] 'magit-previous-line) - (define-key map [remap next-line] 'magit-next-line) - (define-key map [remap evil-previous-line] 'evil-previous-visual-line) - (define-key map [remap evil-next-line] 'evil-next-visual-line) - map) - "Parent keymap for all keymaps of modes derived from `magit-mode'.") +(defvar-keymap magit-mode-map + :doc "Parent keymap for all keymaps of modes derived from `magit-mode'." + :parent magit-section-mode-map + ;; Don't function-quote but make sure all commands are autoloaded. + "C-<return>" 'magit-visit-thing + "RET" 'magit-visit-thing + "M-TAB" 'magit-dired-jump + "M-<tab>" 'magit-section-cycle-diffs + "SPC" 'magit-diff-show-or-scroll-up + "S-SPC" 'magit-diff-show-or-scroll-down + "DEL" 'magit-diff-show-or-scroll-down + "+" 'magit-diff-more-context + "-" 'magit-diff-less-context + "0" 'magit-diff-default-context + "a" 'magit-cherry-apply + "A" 'magit-cherry-pick + "b" 'magit-branch + "B" 'magit-bisect + "c" 'magit-commit + "C" 'magit-clone + "d" 'magit-diff + "D" 'magit-diff-refresh + "e" 'magit-ediff-dwim + "E" 'magit-ediff + "f" 'magit-fetch + "F" 'magit-pull + "g" 'magit-refresh + "G" 'magit-refresh-all + "h" 'magit-dispatch + "?" 'magit-dispatch + "H" 'magit-describe-section + "i" 'magit-gitignore + "I" 'magit-init + "j" 'magit-status-quick + "J" 'magit-display-repository-buffer + "k" 'magit-delete-thing + "K" 'magit-file-untrack + "l" 'magit-log + "L" 'magit-log-refresh + "m" 'magit-merge + "M" 'magit-remote + ;; "n" magit-section-forward in magit-section-mode-map + ;; "N" forge-dispatch, added by forge package + "o" 'magit-submodule + "O" 'magit-subtree + ;; "p" magit-section-backward in magit-section-mode-map + "P" 'magit-push + "q" 'magit-mode-bury-buffer + "Q" 'magit-git-command + ":" 'magit-git-command + "r" 'magit-rebase + "R" 'magit-file-rename + "s" 'magit-stage-file + "S" 'magit-stage-modified + "t" 'magit-tag + "T" 'magit-notes + "u" 'magit-unstage-file + "U" 'magit-unstage-all + "v" 'magit-revert-no-commit + "V" 'magit-revert + "w" 'magit-am + "W" 'magit-patch + "x" 'magit-reset-quickly + "X" 'magit-reset + "y" 'magit-show-refs + "Y" 'magit-cherry + "z" 'magit-stash + "Z" 'magit-worktree + "%" 'magit-worktree + "$" 'magit-process-buffer + "!" 'magit-run + ">" 'magit-sparse-checkout + "C-c C-c" 'magit-dispatch + "C-c C-e" 'magit-edit-thing + "C-c C-o" 'magit-browse-thing + "C-c C-w" 'magit-browse-thing + "C-w" 'magit-copy-section-value + "M-w" 'magit-copy-buffer-revision + "<remap> <previous-line>" 'magit-previous-line + "<remap> <next-line>" 'magit-next-line + "<remap> <evil-previous-line>" 'evil-previous-visual-line + "<remap> <evil-next-line>" 'evil-next-visual-line) (defun magit-delete-thing () "This is a placeholder command. diff --git a/lisp/magit-process.el b/lisp/magit-process.el index d4392b2fe7..5705a5f39e 100644 --- a/lisp/magit-process.el +++ b/lisp/magit-process.el @@ -269,11 +269,9 @@ Used when `magit-process-display-mode-line-error' is non-nil." ;;; Process Mode -(defvar magit-process-mode-map - (let ((map (make-sparse-keymap))) - (set-keymap-parent map magit-mode-map) - map) - "Keymap for `magit-process-mode'.") +(defvar-keymap magit-process-mode-map + :doc "Keymap for `magit-process-mode'." + :parent magit-mode-map) (define-derived-mode magit-process-mode magit-mode "Magit Process" "Mode for looking at Git process output." @@ -979,12 +977,9 @@ as argument." (advice-add 'tramp-sh-handle-process-file :around #'tramp-sh-handle-process-file--magit-tramp-process-environment) -(defvar magit-mode-line-process-map - (let ((map (make-sparse-keymap))) - (define-key map (kbd "<mode-line> <mouse-1>") - 'magit-process-buffer) - map) - "Keymap for `mode-line-process'.") +(defvar-keymap magit-mode-line-process-map + :doc "Keymap for `mode-line-process'." + "<mode-line> <mouse-1>" ''magit-process-buffer) (defun magit-process-set-mode-line (program args) "Display the git command (sans arguments) in the mode line." diff --git a/lisp/magit-reflog.el b/lisp/magit-reflog.el index b099d8512a..b64e39d44d 100644 --- a/lisp/magit-reflog.el +++ b/lisp/magit-reflog.el @@ -130,13 +130,11 @@ If `HEAD' is detached, then show the reflog for that instead." ;;; Mode -(defvar magit-reflog-mode-map - (let ((map (make-sparse-keymap))) - (set-keymap-parent map magit-log-mode-map) - (define-key map (kbd "C-c C-n") #'undefined) - (define-key map (kbd "L") #'magit-margin-settings) - map) - "Keymap for `magit-reflog-mode'.") +(defvar-keymap magit-reflog-mode-map + :doc "Keymap for `magit-reflog-mode'." + :parent magit-log-mode-map + "C-c C-n" #'undefined + "L" #'magit-margin-settings) (define-derived-mode magit-reflog-mode magit-mode "Magit Reflog" "Mode for looking at Git reflog. diff --git a/lisp/magit-refs.el b/lisp/magit-refs.el index 71c10e996c..cddc05d40d 100644 --- a/lisp/magit-refs.el +++ b/lisp/magit-refs.el @@ -271,13 +271,11 @@ the outcome. ;;; Mode -(defvar magit-refs-mode-map - (let ((map (make-sparse-keymap))) - (set-keymap-parent map magit-mode-map) - (define-key map (kbd "C-y") #'magit-refs-set-show-commit-count) - (define-key map (kbd "L") #'magit-margin-settings) - map) - "Keymap for `magit-refs-mode'.") +(defvar-keymap magit-refs-mode-map + :doc "Keymap for `magit-refs-mode'." + :parent magit-mode-map + "C-y" #'magit-refs-set-show-commit-count + "L" #'magit-margin-settings) (define-derived-mode magit-refs-mode magit-mode "Magit Refs" "Mode which lists and compares references. diff --git a/lisp/magit-repos.el b/lisp/magit-repos.el index 68391bfc84..a313b5d46a 100644 --- a/lisp/magit-repos.el +++ b/lisp/magit-repos.el @@ -254,16 +254,14 @@ If it contains \"%s\" then the directory is substituted for that." ;;;; Mode -(defvar magit-repolist-mode-map - (let ((map (make-sparse-keymap))) - (set-keymap-parent map tabulated-list-mode-map) - (define-key map (kbd "C-m") #'magit-repolist-status) - (define-key map (kbd "m") #'magit-repolist-mark) - (define-key map (kbd "u") #'magit-repolist-unmark) - (define-key map (kbd "f") #'magit-repolist-fetch) - (define-key map (kbd "5") #'magit-repolist-find-file-other-frame) - map) - "Local keymap for Magit-Repolist mode buffers.") +(defvar-keymap magit-repolist-mode-map + :doc "Local keymap for Magit-Repolist mode buffers." + :parent tabulated-list-mode-map + "C-m" #'magit-repolist-status + "m" #'magit-repolist-mark + "u" #'magit-repolist-unmark + "f" #'magit-repolist-fetch + "5" #'magit-repolist-find-file-other-frame) (define-derived-mode magit-repolist-mode tabulated-list-mode "Repos" "Major mode for browsing a list of Git repositories." diff --git a/lisp/magit-section.el b/lisp/magit-section.el index fa8fa98007..434c0ba699 100644 --- a/lisp/magit-section.el +++ b/lisp/magit-section.el @@ -344,15 +344,13 @@ no effect. This also has no effect for Emacs >= 28, where (defvar symbol-overlay-inhibit-map) -(defvar magit-section-heading-map - (let ((map (make-sparse-keymap))) - (define-key map [double-down-mouse-1] #'ignore) - (define-key map [double-mouse-1] #'magit-mouse-toggle-section) - (define-key map [double-mouse-2] #'magit-mouse-toggle-section) - map) - "Keymap used in the heading line of all expandable sections. +(defvar-keymap magit-section-heading-map + :doc "Keymap used in the heading line of all expandable sections. This keymap is used in addition to the section-specific keymap, -if any.") +if any." + "<double-down-mouse-1>" #'ignore + "<double-mouse-1>" #'magit-mouse-toggle-section + "<double-mouse-2>" #'magit-mouse-toggle-section) (defvar magit-section-mode-map (let ((map (make-keymap))) diff --git a/lisp/magit-status.el b/lisp/magit-status.el index 27c7af262d..ee8e2d6fd1 100644 --- a/lisp/magit-status.el +++ b/lisp/magit-status.el @@ -332,13 +332,11 @@ init file: (global-set-key (kbd \"C-x g\") \\='magit-status-quick)." ;;; Mode -(defvar magit-status-mode-map - (let ((map (make-sparse-keymap))) - (set-keymap-parent map magit-mode-map) - (define-key map "j" #'magit-status-jump) - (define-key map [remap dired-jump] #'magit-dired-jump) - map) - "Keymap for `magit-status-mode'.") +(defvar-keymap magit-status-mode-map + :doc "Keymap for `magit-status-mode'." + :parent magit-mode-map + "j" #'magit-status-jump + "<remap> <dired-jump>" #'magit-dired-jump) (transient-define-prefix magit-status-jump () "In a Magit-Status buffer, jump to a section." diff --git a/lisp/magit-submodule.el b/lisp/magit-submodule.el index 55e6fa8332..7219a2938a 100644 --- a/lisp/magit-submodule.el +++ b/lisp/magit-submodule.el @@ -632,11 +632,9 @@ These sections can be expanded to show the respective commits." (interactive) (magit-submodule-list-setup magit-submodule-list-columns)) -(defvar magit-submodule-list-mode-map - (let ((map (make-sparse-keymap))) - (set-keymap-parent map magit-repolist-mode-map) - map) - "Local keymap for Magit-Submodule-List mode buffers.") +(defvar-keymap magit-submodule-list-mode-map + :doc "Local keymap for Magit-Submodule-List mode buffers." + :parent magit-repolist-mode-map) (define-derived-mode magit-submodule-list-mode tabulated-list-mode "Modules" "Major mode for browsing a list of Git submodules."