[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/git-commit 565818845e 1/4: Use defvar-keymap from Emacs 29
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/git-commit 565818845e 1/4: Use defvar-keymap from Emacs 29.1 or the Compat package |
Date: |
Tue, 14 Feb 2023 17:59:24 -0500 (EST) |
branch: elpa/git-commit
commit 565818845e7a10f5fb1dafc901b841b0fe9e2d64
Author: Jonas Bernoulli <jonas@bernoul.li>
Commit: Jonas Bernoulli <jonas@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."