emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master 3ff29ba: Convert more parts of Gnus from `gnus-define-keys' to `d


From: Lars Ingebrigtsen
Subject: master 3ff29ba: Convert more parts of Gnus from `gnus-define-keys' to `define-keymap'
Date: Tue, 5 Oct 2021 15:49:38 -0400 (EDT)

branch: master
commit 3ff29babbfa2f8b46848944629c1e047291e916b
Author: Lars Ingebrigtsen <larsi@gnus.org>
Commit: Lars Ingebrigtsen <larsi@gnus.org>

    Convert more parts of Gnus from `gnus-define-keys' to `define-keymap'
    
    * lisp/gnus/spam.el (gnus-summary-mode-map):
    * lisp/gnus/gnus-topic.el (gnus-topic-mode-map):
    * lisp/gnus/gnus-sum.el (gnus-summary-mode-map):
    * lisp/gnus/gnus-srvr.el (gnus-server-mode-map):
    (gnus-server-mode-map):
    (gnus-browse-mode-map):
    * lisp/gnus/gnus-score.el (gnus-summary-score-map):
    * lisp/gnus/gnus-draft.el (gnus-draft-mode-map):
    * lisp/gnus/gnus-agent.el (gnus-agent-group-mode-map):
    (gnus-agent-summary-mode-map):
    (gnus-agent-server-mode-map):
    (gnus-category-mode-map): Convert from `gnus-define-keys' to
    `define-keymap'.
    
    * lisp/gnus/gnus.el: Define more commands.
---
 lisp/gnus/gnus-agent.el |  82 ++---
 lisp/gnus/gnus-draft.el |  15 +-
 lisp/gnus/gnus-score.el |  27 +-
 lisp/gnus/gnus-srvr.el  | 135 ++++---
 lisp/gnus/gnus-sum.el   | 956 ++++++++++++++++++++++++------------------------
 lisp/gnus/gnus-topic.el | 105 +++---
 lisp/gnus/gnus.el       |  35 +-
 lisp/gnus/spam.el       |  14 +-
 8 files changed, 686 insertions(+), 683 deletions(-)

diff --git a/lisp/gnus/gnus-agent.el b/lisp/gnus/gnus-agent.el
index 6426d82..20da295 100644
--- a/lisp/gnus/gnus-agent.el
+++ b/lisp/gnus/gnus-agent.el
@@ -475,17 +475,16 @@ manipulated as follows:
     (gnus-run-hooks 'gnus-agent-mode-hook
                    (intern (format "gnus-agent-%s-mode-hook" buffer)))))
 
-(defvar gnus-agent-group-mode-map (make-sparse-keymap))
-(gnus-define-keys gnus-agent-group-mode-map
-  "Ju" gnus-agent-fetch-groups
-  "Jc" gnus-enter-category-buffer
-  "Jj" gnus-agent-toggle-plugged
-  "Js" gnus-agent-fetch-session
-  "JY" gnus-agent-synchronize-flags
-  "JS" gnus-group-send-queue
-  "Ja" gnus-agent-add-group
-  "Jr" gnus-agent-remove-group
-  "Jo" gnus-agent-toggle-group-plugged)
+(defvar-keymap gnus-agent-group-mode-map
+  "Ju" #'gnus-agent-fetch-groups
+  "Jc" #'gnus-enter-category-buffer
+  "Jj" #'gnus-agent-toggle-plugged
+  "Js" #'gnus-agent-fetch-session
+  "JY" #'gnus-agent-synchronize-flags
+  "JS" #'gnus-group-send-queue
+  "Ja" #'gnus-agent-add-group
+  "Jr" #'gnus-agent-remove-group
+  "Jo" #'gnus-agent-toggle-group-plugged)
 
 (defun gnus-agent-group-make-menu-bar ()
   (unless (boundp 'gnus-agent-group-menu)
@@ -504,16 +503,15 @@ manipulated as follows:
        ["Synchronize flags" gnus-agent-synchronize-flags t]
        ))))
 
-(defvar gnus-agent-summary-mode-map (make-sparse-keymap))
-(gnus-define-keys gnus-agent-summary-mode-map
-  "Jj" gnus-agent-toggle-plugged
-  "Ju" gnus-agent-summary-fetch-group
-  "JS" gnus-agent-fetch-group
-  "Js" gnus-agent-summary-fetch-series
-  "J#" gnus-agent-mark-article
-  "J\M-#" gnus-agent-unmark-article
-  "@" gnus-agent-toggle-mark
-  "Jc" gnus-agent-catchup)
+(defvar-keymap gnus-agent-summary-mode-map
+  "Jj" #'gnus-agent-toggle-plugged
+  "Ju" #'gnus-agent-summary-fetch-group
+  "JS" #'gnus-agent-fetch-group
+  "Js" #'gnus-agent-summary-fetch-series
+  "J#" #'gnus-agent-mark-article
+  "J\M-#" #'gnus-agent-unmark-article
+  "@" #'gnus-agent-toggle-mark
+  "Jc" #'gnus-agent-catchup)
 
 (defun gnus-agent-summary-make-menu-bar ()
   (unless (boundp 'gnus-agent-summary-menu)
@@ -527,11 +525,10 @@ manipulated as follows:
        ["Fetch downloadable" gnus-agent-summary-fetch-group t]
        ["Catchup undownloaded" gnus-agent-catchup t]))))
 
-(defvar gnus-agent-server-mode-map (make-sparse-keymap))
-(gnus-define-keys gnus-agent-server-mode-map
-  "Jj" gnus-agent-toggle-plugged
-  "Ja" gnus-agent-add-server
-  "Jr" gnus-agent-remove-server)
+(defvar-keymap gnus-agent-server-mode-map
+  "Jj" #'gnus-agent-toggle-plugged
+  "Ja" #'gnus-agent-add-server
+  "Jr" #'gnus-agent-remove-server)
 
 (defun gnus-agent-server-make-menu-bar ()
   (unless (boundp 'gnus-agent-server-menu)
@@ -2597,25 +2594,20 @@ General format specifiers can also be used.  See Info 
node
 (defvar gnus-category-line-format-spec nil)
 (defvar gnus-category-mode-line-format-spec nil)
 
-(defvar gnus-category-mode-map nil)
-
-(unless gnus-category-mode-map
-  (setq gnus-category-mode-map (make-sparse-keymap))
-  (suppress-keymap gnus-category-mode-map)
-
-  (gnus-define-keys gnus-category-mode-map
-    "q" gnus-category-exit
-    "k" gnus-category-kill
-    "c" gnus-category-copy
-    "a" gnus-category-add
-    "e" gnus-agent-customize-category
-    "p" gnus-category-edit-predicate
-    "g" gnus-category-edit-groups
-    "s" gnus-category-edit-score
-    "l" gnus-category-list
-
-    "\C-c\C-i" gnus-info-find-node
-    "\C-c\C-b" gnus-bug))
+(defvar-keymap gnus-category-mode-map
+  :suppress t
+  "q" #'gnus-category-exit
+  "k" #'gnus-category-kill
+  "c" #'gnus-category-copy
+  "a" #'gnus-category-add
+  "e" #'gnus-agent-customize-category
+  "p" #'gnus-category-edit-predicate
+  "g" #'gnus-category-edit-groups
+  "s" #'gnus-category-edit-score
+  "l" #'gnus-category-list
+
+  "\C-c\C-i" #'gnus-info-find-node
+  "\C-c\C-b" #'gnus-bug)
 
 (defcustom gnus-category-menu-hook nil
   "Hook run after the creation of the menu."
diff --git a/lisp/gnus/gnus-draft.el b/lisp/gnus/gnus-draft.el
index 9a0f213..756e6d2 100644
--- a/lisp/gnus/gnus-draft.el
+++ b/lisp/gnus/gnus-draft.el
@@ -33,15 +33,12 @@
 
 ;;; Draft minor mode
 
-(defvar gnus-draft-mode-map
-  (let ((map (make-sparse-keymap)))
-    (gnus-define-keys map
-     "Dt" gnus-draft-toggle-sending
-     "e"  gnus-draft-edit-message ;; Use `B w' for `gnus-summary-edit-article'
-     "De" gnus-draft-edit-message
-     "Ds" gnus-draft-send-message
-     "DS" gnus-draft-send-all-messages)
-    map))
+(defvar-keymap gnus-draft-mode-map
+  "Dt" #'gnus-draft-toggle-sending
+  "e" #' gnus-draft-edit-message ;; Use `B w' for `gnus-summary-edit-article'
+  "De" #'gnus-draft-edit-message
+  "Ds" #'gnus-draft-send-message
+  "DS" #'gnus-draft-send-all-messages)
 
 (defun gnus-draft-make-menu-bar ()
   (unless (boundp 'gnus-draft-menu)
diff --git a/lisp/gnus/gnus-score.el b/lisp/gnus/gnus-score.el
index e0ad9f6..2ca2580 100644
--- a/lisp/gnus/gnus-score.el
+++ b/lisp/gnus/gnus-score.el
@@ -502,19 +502,20 @@ of the last successful match.")
 
 ;;; Summary mode score maps.
 
-(gnus-define-keys (gnus-summary-score-map "V" gnus-summary-mode-map)
-  "s" gnus-summary-set-score
-  "S" gnus-summary-current-score
-  "c" gnus-score-change-score-file
-  "C" gnus-score-customize
-  "m" gnus-score-set-mark-below
-  "x" gnus-score-set-expunge-below
-  "R" gnus-summary-rescore
-  "e" gnus-score-edit-current-scores
-  "f" gnus-score-edit-file
-  "F" gnus-score-flush-cache
-  "t" gnus-score-find-trace
-  "w" gnus-score-find-favorite-words)
+(define-key gnus-summary-mode-map "V"
+  (define-keymap :prefix 'gnus-summary-score-map
+    "s" #'gnus-summary-set-score
+    "S" #'gnus-summary-current-score
+    "c" #'gnus-score-change-score-file
+    "C" #'gnus-score-customize
+    "m" #'gnus-score-set-mark-below
+    "x" #'gnus-score-set-expunge-below
+    "R" #'gnus-summary-rescore
+    "e" #'gnus-score-edit-current-scores
+    "f" #'gnus-score-edit-file
+    "F" #'gnus-score-flush-cache
+    "t" #'gnus-score-find-trace
+    "w" #'gnus-score-find-favorite-words))
 
 ;; Summary score file commands
 
diff --git a/lisp/gnus/gnus-srvr.el b/lisp/gnus/gnus-srvr.el
index 5f2fc46..f2ffb06 100644
--- a/lisp/gnus/gnus-srvr.el
+++ b/lisp/gnus/gnus-srvr.el
@@ -103,7 +103,43 @@ If nil, a faster, but more primitive, buffer is used 
instead."
 (defvar gnus-server-mode-line-format-spec nil)
 (defvar gnus-server-killed-servers nil)
 
-(defvar gnus-server-mode-map nil)
+(defvar-keymap gnus-server-mode-map
+  :full t :suppress t
+  " " #'gnus-server-read-server-in-server-buffer
+  "\r" #'gnus-server-read-server
+  [mouse-2] #'gnus-server-pick-server
+  "q" #'gnus-server-exit
+  "l" #'gnus-server-list-servers
+  "k" #'gnus-server-kill-server
+  "y" #'gnus-server-yank-server
+  "c" #'gnus-server-copy-server
+  "a" #'gnus-server-add-server
+  "e" #'gnus-server-edit-server
+  "S" #'gnus-server-show-server
+  "s" #'gnus-server-scan-server
+
+  "O" #'gnus-server-open-server
+  "\M-o" #'gnus-server-open-all-servers
+  "C" #'gnus-server-close-server
+  "\M-c" #'gnus-server-close-all-servers
+  "D" #'gnus-server-deny-server
+  "L" #'gnus-server-offline-server
+  "R" #'gnus-server-remove-denials
+
+  "n" #'next-line
+  "p" #'previous-line
+
+  "g" #'gnus-server-regenerate-server
+
+  "G" #'gnus-group-read-ephemeral-search-group
+
+  "z" #'gnus-server-compact-server
+
+  "i" #'gnus-server-toggle-cloud-server
+  "I" #'gnus-server-set-cloud-method-server
+
+  "\C-c\C-i" #'gnus-info-find-node
+  "\C-c\C-b" #'gnus-bug)
 
 (defcustom gnus-server-menu-hook nil
   "Hook run after the creation of the server mode menu."
@@ -145,47 +181,6 @@ If nil, a faster, but more primitive, buffer is used 
instead."
 
     (gnus-run-hooks 'gnus-server-menu-hook)))
 
-(unless gnus-server-mode-map
-  (setq gnus-server-mode-map (make-keymap))
-  (suppress-keymap gnus-server-mode-map)
-
-  (gnus-define-keys gnus-server-mode-map
-    " " gnus-server-read-server-in-server-buffer
-    "\r" gnus-server-read-server
-    [mouse-2] gnus-server-pick-server
-    "q" gnus-server-exit
-    "l" gnus-server-list-servers
-    "k" gnus-server-kill-server
-    "y" gnus-server-yank-server
-    "c" gnus-server-copy-server
-    "a" gnus-server-add-server
-    "e" gnus-server-edit-server
-    "S" gnus-server-show-server
-    "s" gnus-server-scan-server
-
-    "O" gnus-server-open-server
-    "\M-o" gnus-server-open-all-servers
-    "C" gnus-server-close-server
-    "\M-c" gnus-server-close-all-servers
-    "D" gnus-server-deny-server
-    "L" gnus-server-offline-server
-    "R" gnus-server-remove-denials
-
-    "n" next-line
-    "p" previous-line
-
-    "g" gnus-server-regenerate-server
-
-    "G" gnus-group-read-ephemeral-search-group
-
-    "z" gnus-server-compact-server
-
-    "i" gnus-server-toggle-cloud-server
-    "I" gnus-server-set-cloud-method-server
-
-    "\C-c\C-i" gnus-info-find-node
-    "\C-c\C-b" gnus-bug))
-
 (defface gnus-server-agent
   '((((class color) (background light)) (:foreground "PaleTurquoise" :bold t))
     (((class color) (background dark)) (:foreground "PaleTurquoise" :bold t))
@@ -697,37 +692,31 @@ claim them."
                function
                (repeat function)))
 
-(defvar gnus-browse-mode-map nil)
-
-(unless gnus-browse-mode-map
-  (setq gnus-browse-mode-map (make-keymap))
-  (suppress-keymap gnus-browse-mode-map)
-
-  (gnus-define-keys
-      gnus-browse-mode-map
-    " " gnus-browse-read-group
-    "=" gnus-browse-select-group
-    "n" gnus-browse-next-group
-    "p" gnus-browse-prev-group
-    "\177" gnus-browse-prev-group
-    [delete] gnus-browse-prev-group
-    "N" gnus-browse-next-group
-    "P" gnus-browse-prev-group
-    "\M-n" gnus-browse-next-group
-    "\M-p" gnus-browse-prev-group
-    "\r" gnus-browse-select-group
-    "u" gnus-browse-toggle-subscription-at-point
-    "l" gnus-browse-exit
-    "L" gnus-browse-exit
-    "q" gnus-browse-exit
-    "Q" gnus-browse-exit
-    "d" gnus-browse-describe-group
-    [delete] gnus-browse-delete-group
-    "\C-c\C-c" gnus-browse-exit
-    "?" gnus-browse-describe-briefly
-
-    "\C-c\C-i" gnus-info-find-node
-    "\C-c\C-b" gnus-bug))
+(defvar-keymap gnus-browse-mode-map
+  :full t :suppress t
+  " " #'gnus-browse-read-group
+  "=" #'gnus-browse-select-group
+  "n" #'gnus-browse-next-group
+  "p" #'gnus-browse-prev-group
+  "\177" #'gnus-browse-prev-group
+  [delete] #'gnus-browse-prev-group
+  "N" #'gnus-browse-next-group
+  "P" #'gnus-browse-prev-group
+  "\M-n" #'gnus-browse-next-group
+  "\M-p" #'gnus-browse-prev-group
+  "\r" #'gnus-browse-select-group
+  "u" #'gnus-browse-toggle-subscription-at-point
+  "l" #'gnus-browse-exit
+  "L" #'gnus-browse-exit
+  "q" #'gnus-browse-exit
+  "Q" #'gnus-browse-exit
+  "d" #'gnus-browse-describe-group
+  [delete] #'gnus-browse-delete-group
+  "\C-c\C-c" #'gnus-browse-exit
+  "?" #'gnus-browse-describe-briefly
+
+  "\C-c\C-i" #'gnus-info-find-node
+  "\C-c\C-b" #'gnus-bug)
 
 (defun gnus-browse-make-menu-bar ()
   (gnus-turn-off-edit-menu 'browse)
diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el
index d790655..6d09576 100644
--- a/lisp/gnus/gnus-sum.el
+++ b/lisp/gnus/gnus-sum.el
@@ -1907,485 +1907,485 @@ increase the score of each group you read."
 
 ;; Non-orthogonal keys
 
-(gnus-define-keys gnus-summary-mode-map
-  " " gnus-summary-next-page
-  [?\S-\ ] gnus-summary-prev-page
-  "\177" gnus-summary-prev-page
-  [delete] gnus-summary-prev-page
-  "\r" gnus-summary-scroll-up
-  "\M-\r" gnus-summary-scroll-down
-  "n" gnus-summary-next-unread-article
-  "p" gnus-summary-prev-unread-article
-  "N" gnus-summary-next-article
-  "P" gnus-summary-prev-article
-  "\M-\C-n" gnus-summary-next-same-subject
-  "\M-\C-p" gnus-summary-prev-same-subject
-  "\M-n" gnus-summary-next-unread-subject
-  "\M-p" gnus-summary-prev-unread-subject
-  "." gnus-summary-first-unread-article
-  "," gnus-summary-best-unread-article
-  "[" gnus-summary-prev-unseen-article
-  "]" gnus-summary-next-unseen-article
-  "\M-s\M-s" gnus-summary-search-article-forward
-  "\M-s\M-r" gnus-summary-search-article-backward
-  "\M-r" gnus-summary-search-article-backward
-  "\M-S" gnus-summary-repeat-search-article-forward
-  "\M-R" gnus-summary-repeat-search-article-backward
-  "<" gnus-summary-beginning-of-article
-  ">" gnus-summary-end-of-article
-  "j" gnus-summary-goto-article
-  "^" gnus-summary-refer-parent-article
-  "\M-^" gnus-summary-refer-article
-  "u" gnus-summary-tick-article-forward
-  "!" gnus-summary-tick-article-forward
-  "U" gnus-summary-tick-article-backward
-  "d" gnus-summary-mark-as-read-forward
-  "D" gnus-summary-mark-as-read-backward
-  "E" gnus-summary-mark-as-expirable
-  "\M-u" gnus-summary-clear-mark-forward
-  "\M-U" gnus-summary-clear-mark-backward
-  "k" gnus-summary-kill-same-subject-and-select
-  "\C-k" gnus-summary-kill-same-subject
-  "\M-\C-k" gnus-summary-kill-thread
-  "\M-\C-l" gnus-summary-lower-thread
-  "e" gnus-summary-edit-article
-  "#" gnus-summary-mark-as-processable
-  "\M-#" gnus-summary-unmark-as-processable
-  "\M-\C-t" gnus-summary-toggle-threads
-  "\M-\C-s" gnus-summary-show-thread
-  "\M-\C-h" gnus-summary-hide-thread
-  "\M-\C-f" gnus-summary-next-thread
-  "\M-\C-b" gnus-summary-prev-thread
-  [(meta down)] gnus-summary-next-thread
-  [(meta up)] gnus-summary-prev-thread
-  "\M-\C-u" gnus-summary-up-thread
-  "\M-\C-d" gnus-summary-down-thread
-  "&" gnus-summary-execute-command
-  "c" gnus-summary-catchup-and-exit
-  "\C-w" gnus-summary-mark-region-as-read
-  "\C-t" toggle-truncate-lines
-  "?" gnus-summary-mark-as-dormant
-  "\C-c\M-\C-s" gnus-summary-limit-include-expunged
-  "\C-c\C-s\C-n" gnus-summary-sort-by-number
-  "\C-c\C-s\C-m\C-n" gnus-summary-sort-by-most-recent-number
-  "\C-c\C-s\C-l" gnus-summary-sort-by-lines
-  "\C-c\C-s\C-c" gnus-summary-sort-by-chars
-  "\C-c\C-s\C-m\C-m" gnus-summary-sort-by-marks
-  "\C-c\C-s\C-a" gnus-summary-sort-by-author
-  "\C-c\C-s\C-t" gnus-summary-sort-by-recipient
-  "\C-c\C-s\C-s" gnus-summary-sort-by-subject
-  "\C-c\C-s\C-d" gnus-summary-sort-by-date
-  "\C-c\C-s\C-m\C-d" gnus-summary-sort-by-most-recent-date
-  "\C-c\C-s\C-i" gnus-summary-sort-by-score
-  "\C-c\C-s\C-o" gnus-summary-sort-by-original
-  "\C-c\C-s\C-r" gnus-summary-sort-by-random
-  "\C-c\C-s\C-u" gnus-summary-sort-by-newsgroups
-  "\C-c\C-s\C-x" gnus-summary-sort-by-extra
-  "=" gnus-summary-expand-window
-  "\C-x\C-s" gnus-summary-reselect-current-group
-  "\M-g" gnus-summary-rescan-group
-  "\C-c\C-r" gnus-summary-caesar-message
-  "f" gnus-summary-followup
-  "F" gnus-summary-followup-with-original
-  "C" gnus-summary-cancel-article
-  "r" gnus-summary-reply
-  "R" gnus-summary-reply-with-original
-  "\C-c\C-f" gnus-summary-mail-forward
-  "o" gnus-summary-save-article
-  "\C-o" gnus-summary-save-article-mail
-  "|" gnus-summary-pipe-output
-  "\M-k" gnus-summary-edit-local-kill
-  "\M-K" gnus-summary-edit-global-kill
+(define-keymap :keymap gnus-summary-mode-map
+  " " #'gnus-summary-next-page
+  [?\S-\ ] #'gnus-summary-prev-page
+  "\177" #'gnus-summary-prev-page
+  [delete] #'gnus-summary-prev-page
+  "\r" #'gnus-summary-scroll-up
+  "\M-\r" #'gnus-summary-scroll-down
+  "n" #'gnus-summary-next-unread-article
+  "p" #'gnus-summary-prev-unread-article
+  "N" #'gnus-summary-next-article
+  "P" #'gnus-summary-prev-article
+  "\M-\C-n" #'gnus-summary-next-same-subject
+  "\M-\C-p" #'gnus-summary-prev-same-subject
+  "\M-n" #'gnus-summary-next-unread-subject
+  "\M-p" #'gnus-summary-prev-unread-subject
+  "." #'gnus-summary-first-unread-article
+  "," #'gnus-summary-best-unread-article
+  "[" #'gnus-summary-prev-unseen-article
+  "]" #'gnus-summary-next-unseen-article
+  "\M-s\M-s" #'gnus-summary-search-article-forward
+  "\M-s\M-r" #'gnus-summary-search-article-backward
+  "\M-r" #'gnus-summary-search-article-backward
+  "\M-S" #'gnus-summary-repeat-search-article-forward
+  "\M-R" #'gnus-summary-repeat-search-article-backward
+  "<" #'gnus-summary-beginning-of-article
+  ">" #'gnus-summary-end-of-article
+  "j" #'gnus-summary-goto-article
+  "^" #'gnus-summary-refer-parent-article
+  "\M-^" #'gnus-summary-refer-article
+  "u" #'gnus-summary-tick-article-forward
+  "!" #'gnus-summary-tick-article-forward
+  "U" #'gnus-summary-tick-article-backward
+  "d" #'gnus-summary-mark-as-read-forward
+  "D" #'gnus-summary-mark-as-read-backward
+  "E" #'gnus-summary-mark-as-expirable
+  "\M-u" #'gnus-summary-clear-mark-forward
+  "\M-U" #'gnus-summary-clear-mark-backward
+  "k" #'gnus-summary-kill-same-subject-and-select
+  "\C-k" #'gnus-summary-kill-same-subject
+  "\M-\C-k" #'gnus-summary-kill-thread
+  "\M-\C-l" #'gnus-summary-lower-thread
+  "e" #'gnus-summary-edit-article
+  "#" #'gnus-summary-mark-as-processable
+  "\M-#" #'gnus-summary-unmark-as-processable
+  "\M-\C-t" #'gnus-summary-toggle-threads
+  "\M-\C-s" #'gnus-summary-show-thread
+  "\M-\C-h" #'gnus-summary-hide-thread
+  "\M-\C-f" #'gnus-summary-next-thread
+  "\M-\C-b" #'gnus-summary-prev-thread
+  [(meta down)] #'gnus-summary-next-thread
+  [(meta up)] #'gnus-summary-prev-thread
+  "\M-\C-u" #'gnus-summary-up-thread
+  "\M-\C-d" #'gnus-summary-down-thread
+  "&" #'gnus-summary-execute-command
+  "c" #'gnus-summary-catchup-and-exit
+  "\C-w" #'gnus-summary-mark-region-as-read
+  "\C-t" #'toggle-truncate-lines
+  "?" #'gnus-summary-mark-as-dormant
+  "\C-c\M-\C-s" #'gnus-summary-limit-include-expunged
+  "\C-c\C-s\C-n" #'gnus-summary-sort-by-number
+  "\C-c\C-s\C-m\C-n" #'gnus-summary-sort-by-most-recent-number
+  "\C-c\C-s\C-l" #'gnus-summary-sort-by-lines
+  "\C-c\C-s\C-c" #'gnus-summary-sort-by-chars
+  "\C-c\C-s\C-m\C-m" #'gnus-summary-sort-by-marks
+  "\C-c\C-s\C-a" #'gnus-summary-sort-by-author
+  "\C-c\C-s\C-t" #'gnus-summary-sort-by-recipient
+  "\C-c\C-s\C-s" #'gnus-summary-sort-by-subject
+  "\C-c\C-s\C-d" #'gnus-summary-sort-by-date
+  "\C-c\C-s\C-m\C-d" #'gnus-summary-sort-by-most-recent-date
+  "\C-c\C-s\C-i" #'gnus-summary-sort-by-score
+  "\C-c\C-s\C-o" #'gnus-summary-sort-by-original
+  "\C-c\C-s\C-r" #'gnus-summary-sort-by-random
+  "\C-c\C-s\C-u" #'gnus-summary-sort-by-newsgroups
+  "\C-c\C-s\C-x" #'gnus-summary-sort-by-extra
+  "=" #'gnus-summary-expand-window
+  "\C-x\C-s" #'gnus-summary-reselect-current-group
+  "\M-g" #'gnus-summary-rescan-group
+  "\C-c\C-r" #'gnus-summary-caesar-message
+  "f" #'gnus-summary-followup
+  "F" #'gnus-summary-followup-with-original
+  "C" #'gnus-summary-cancel-article
+  "r" #'gnus-summary-reply
+  "R" #'gnus-summary-reply-with-original
+  "\C-c\C-f" #'gnus-summary-mail-forward
+  "o" #'gnus-summary-save-article
+  "\C-o" #'gnus-summary-save-article-mail
+  "|" #'gnus-summary-pipe-output
+  "\M-k" #'gnus-summary-edit-local-kill
+  "\M-K" #'gnus-summary-edit-global-kill
   ;; "V" gnus-version
-  "\C-c\C-d" gnus-summary-describe-group
-  "\C-c\C-p" gnus-summary-make-group-from-search
-  "q" gnus-summary-exit
-  "Q" gnus-summary-exit-no-update
-  "\C-c\C-i" gnus-info-find-node
-  [mouse-2] gnus-mouse-pick-article
-  [follow-link] mouse-face
-  "m" gnus-summary-mail-other-window
-  "a" gnus-summary-post-news
-  "x" gnus-summary-limit-to-unread
-  "s" gnus-summary-isearch-article
-  "\t" gnus-summary-button-forward
-  [backtab] gnus-summary-button-backward
-  "w" gnus-summary-browse-url
-  "t" gnus-summary-toggle-header
-  "g" gnus-summary-show-article
-  "l" gnus-summary-goto-last-article
-  "\C-c\C-v\C-v" gnus-uu-decode-uu-view
-  "\C-d" gnus-summary-enter-digest-group
-  "\M-\C-d" gnus-summary-read-document
-  "\M-\C-e" gnus-summary-edit-parameters
-  "\M-\C-a" gnus-summary-customize-parameters
-  "\C-c\C-b" gnus-bug
-  "*" gnus-cache-enter-article
-  "\M-*" gnus-cache-remove-article
-  "\M-&" gnus-summary-universal-argument
-  "\C-l" gnus-recenter
-  "I" gnus-summary-increase-score
-  "L" gnus-summary-lower-score
-  "\M-i" gnus-symbolic-argument
-  "h" gnus-summary-select-article-buffer
-
-  "b" gnus-article-view-part
-  "\M-t" gnus-summary-toggle-display-buttonized
-
-  "V" gnus-summary-score-map
-  "X" gnus-uu-extract-map
-  "S" gnus-summary-send-map)
-
-;; Sort of orthogonal keymap
-(gnus-define-keys (gnus-summary-mark-map "M" gnus-summary-mode-map)
-  "t" gnus-summary-tick-article-forward
-  "!" gnus-summary-tick-article-forward
-  "d" gnus-summary-mark-as-read-forward
-  "r" gnus-summary-mark-as-read-forward
-  "c" gnus-summary-clear-mark-forward
-  " " gnus-summary-clear-mark-forward
-  "e" gnus-summary-mark-as-expirable
-  "x" gnus-summary-mark-as-expirable
-  "?" gnus-summary-mark-as-dormant
-  "b" gnus-summary-set-bookmark
-  "B" gnus-summary-remove-bookmark
-  "#" gnus-summary-mark-as-processable
-  "\M-#" gnus-summary-unmark-as-processable
-  "S" gnus-summary-limit-include-expunged
-  "C" gnus-summary-catchup
-  "H" gnus-summary-catchup-to-here
-  "h" gnus-summary-catchup-from-here
-  "\C-c" gnus-summary-catchup-all
-  "k" gnus-summary-kill-same-subject-and-select
-  "K" gnus-summary-kill-same-subject
-  "P" gnus-uu-mark-map)
-
-(gnus-define-keys (gnus-summary-mscore-map "V" gnus-summary-mark-map)
-  "c" gnus-summary-clear-above
-  "u" gnus-summary-tick-above
-  "m" gnus-summary-mark-above
-  "k" gnus-summary-kill-below)
-
-(gnus-define-keys (gnus-summary-limit-map "/" gnus-summary-mode-map)
-  "/" gnus-summary-limit-to-subject
-  "n" gnus-summary-limit-to-articles
-  "b" gnus-summary-limit-to-bodies
-  "h" gnus-summary-limit-to-headers
-  "w" gnus-summary-pop-limit
-  "s" gnus-summary-limit-to-subject
-  "a" gnus-summary-limit-to-author
-  "u" gnus-summary-limit-to-unread
-  "m" gnus-summary-limit-to-marks
-  "M" gnus-summary-limit-exclude-marks
-  "v" gnus-summary-limit-to-score
-  "*" gnus-summary-limit-include-cached
-  "D" gnus-summary-limit-include-dormant
-  "T" gnus-summary-limit-include-thread
-  "d" gnus-summary-limit-exclude-dormant
-  "t" gnus-summary-limit-to-age
-  "." gnus-summary-limit-to-unseen
-  "x" gnus-summary-limit-to-extra
-  "p" gnus-summary-limit-to-display-predicate
-  "E" gnus-summary-limit-include-expunged
-  "c" gnus-summary-limit-exclude-childless-dormant
-  "C" gnus-summary-limit-mark-excluded-as-read
-  "o" gnus-summary-insert-old-articles
-  "N" gnus-summary-insert-new-articles
-  "S" gnus-summary-limit-to-singletons
-  "r" gnus-summary-limit-to-replied
-  "R" gnus-summary-limit-to-recipient
-  "A" gnus-summary-limit-to-address)
-
-(gnus-define-keys (gnus-summary-goto-map "G" gnus-summary-mode-map)
-  "n" gnus-summary-next-unread-article
-  "p" gnus-summary-prev-unread-article
-  "N" gnus-summary-next-article
-  "P" gnus-summary-prev-article
-  "\C-n" gnus-summary-next-same-subject
-  "\C-p" gnus-summary-prev-same-subject
-  "\M-n" gnus-summary-next-unread-subject
-  "\M-p" gnus-summary-prev-unread-subject
-  "f" gnus-summary-first-unread-article
-  "b" gnus-summary-best-unread-article
-  "u" gnus-summary-next-unseen-article
-  "U" gnus-summary-prev-unseen-article
-  "j" gnus-summary-goto-article
-  "g" gnus-summary-goto-subject
-  "l" gnus-summary-goto-last-article
-  "o" gnus-summary-pop-article)
-
-(gnus-define-keys (gnus-summary-thread-map "T" gnus-summary-mode-map)
-  "k" gnus-summary-kill-thread
-  "E" gnus-summary-expire-thread
-  "l" gnus-summary-lower-thread
-  "i" gnus-summary-raise-thread
-  "T" gnus-summary-toggle-threads
-  "t" gnus-summary-rethread-current
-  "^" gnus-summary-reparent-thread
-  "\M-^" gnus-summary-reparent-children
-  "s" gnus-summary-show-thread
-  "S" gnus-summary-show-all-threads
-  "h" gnus-summary-hide-thread
-  "H" gnus-summary-hide-all-threads
-  "n" gnus-summary-next-thread
-  "p" gnus-summary-prev-thread
-  "u" gnus-summary-up-thread
-  "o" gnus-summary-top-thread
-  "d" gnus-summary-down-thread
-  "#" gnus-uu-mark-thread
-  "\M-#" gnus-uu-unmark-thread)
-
-(gnus-define-keys (gnus-summary-buffer-map "Y" gnus-summary-mode-map)
-  "g" gnus-summary-prepare
-  "c" gnus-summary-insert-cached-articles
-  "d" gnus-summary-insert-dormant-articles
-  "t" gnus-summary-insert-ticked-articles)
-
-(gnus-define-keys (gnus-summary-exit-map "Z" gnus-summary-mode-map)
-  "c" gnus-summary-catchup-and-exit
-  "C" gnus-summary-catchup-all-and-exit
-  "E" gnus-summary-exit-no-update
-  "Q" gnus-summary-exit
-  "Z" gnus-summary-exit
-  "n" gnus-summary-catchup-and-goto-next-group
-  "p" gnus-summary-catchup-and-goto-prev-group
-  "R" gnus-summary-reselect-current-group
-  "G" gnus-summary-rescan-group
-  "N" gnus-summary-next-group
-  "s" gnus-summary-save-newsrc
-  "P" gnus-summary-prev-group)
-
-(gnus-define-keys (gnus-summary-article-map "A" gnus-summary-mode-map)
-  " " gnus-summary-next-page
-  "n" gnus-summary-next-page
-  [?\S-\ ] gnus-summary-prev-page
-  "\177" gnus-summary-prev-page
-  [delete] gnus-summary-prev-page
-  "p" gnus-summary-prev-page
-  "\r" gnus-summary-scroll-up
-  "\M-\r" gnus-summary-scroll-down
-  "<" gnus-summary-beginning-of-article
-  ">" gnus-summary-end-of-article
-  "b" gnus-summary-beginning-of-article
-  "e" gnus-summary-end-of-article
-  "^" gnus-summary-refer-parent-article
-  "r" gnus-summary-refer-parent-article
-  "C" gnus-summary-show-complete-article
-  "D" gnus-summary-enter-digest-group
-  "R" gnus-summary-refer-references
-  "T" gnus-summary-refer-thread
-  "W" gnus-warp-to-article
-  "g" gnus-summary-show-article
-  "s" gnus-summary-isearch-article
-  "\t" gnus-summary-button-forward
-  [backtab] gnus-summary-button-backward
-  "w" gnus-summary-browse-url
-  "P" gnus-summary-print-article
-  "S" gnus-sticky-article
-  "M" gnus-mailing-list-insinuate
-  "t" gnus-article-babel)
-
-(gnus-define-keys (gnus-summary-wash-map "W" gnus-summary-mode-map)
-  "b" gnus-article-add-buttons
-  "B" gnus-article-add-buttons-to-head
-  "o" gnus-article-treat-overstrike
-  "e" gnus-article-emphasize
-  "w" gnus-article-fill-cited-article
-  "Q" gnus-article-fill-long-lines
-  "L" gnus-article-toggle-truncate-lines
-  "C" gnus-article-capitalize-sentences
-  "c" gnus-article-remove-cr
-  "q" gnus-article-de-quoted-unreadable
-  "6" gnus-article-de-base64-unreadable
-  "Z" gnus-article-decode-HZ
-  "A" gnus-article-treat-ansi-sequences
-  "h" gnus-article-wash-html
-  "u" gnus-article-unsplit-urls
-  "s" gnus-summary-force-verify-and-decrypt
-  "f" gnus-article-display-x-face
-  "l" gnus-summary-stop-page-breaking
-  "r" gnus-summary-caesar-message
-  "m" gnus-summary-morse-message
-  "t" gnus-summary-toggle-header
-  "g" gnus-treat-smiley
-  "v" gnus-summary-verbose-headers
-  "a" gnus-article-strip-headers-in-body ;; mnemonic: wash archive
-  "p" gnus-article-verify-x-pgp-sig
-  "d" gnus-article-treat-smartquotes
-  "U" gnus-article-treat-non-ascii
-  "i" gnus-summary-idna-message)
-
-(gnus-define-keys (gnus-summary-wash-deuglify-map "Y" gnus-summary-wash-map)
-  ;; mnemonic: deuglif*Y*
-  "u" gnus-article-outlook-unwrap-lines
-  "a" gnus-article-outlook-repair-attribution
-  "c" gnus-article-outlook-rearrange-citation
-  "f" gnus-article-outlook-deuglify-article) ;; mnemonic: full deuglify
-
-(gnus-define-keys (gnus-summary-wash-hide-map "W" gnus-summary-wash-map)
-  "a" gnus-article-hide
-  "h" gnus-article-hide-headers
-  "b" gnus-article-hide-boring-headers
-  "s" gnus-article-hide-signature
-  "c" gnus-article-hide-citation
-  "C" gnus-article-hide-citation-in-followups
-  "l" gnus-article-hide-list-identifiers
-  "B" gnus-article-strip-banner
-  "P" gnus-article-hide-pem
-  "\C-c" gnus-article-hide-citation-maybe)
-
-(gnus-define-keys (gnus-summary-wash-highlight-map "H" gnus-summary-wash-map)
-  "a" gnus-article-highlight
-  "h" gnus-article-highlight-headers
-  "c" gnus-article-highlight-citation
-  "s" gnus-article-highlight-signature)
-
-(gnus-define-keys (gnus-summary-wash-header-map "G" gnus-summary-wash-map)
-  "f" gnus-article-treat-fold-headers
-  "u" gnus-article-treat-unfold-headers
-  "n" gnus-article-treat-fold-newsgroups)
-
-(gnus-define-keys (gnus-summary-wash-display-map "D" gnus-summary-wash-map)
-  "x" gnus-article-display-x-face
-  "d" gnus-article-display-face
-  "s" gnus-treat-smiley
-  "D" gnus-article-remove-images
-  "W" gnus-article-show-images
-  "F" gnus-article-toggle-fonts
-  "f" gnus-treat-from-picon
-  "m" gnus-treat-mail-picon
-  "n" gnus-treat-newsgroups-picon
-  "g" gnus-treat-from-gravatar
-  "h" gnus-treat-mail-gravatar)
-
-(gnus-define-keys (gnus-summary-wash-mime-map "M" gnus-summary-wash-map)
-  "w" gnus-article-decode-mime-words
-  "c" gnus-article-decode-charset
-  "h" gnus-mime-buttonize-attachments-in-header
-  "v" gnus-mime-view-all-parts
-  "b" gnus-article-view-part)
-
-(gnus-define-keys (gnus-summary-wash-time-map "T" gnus-summary-wash-map)
-  "z" gnus-article-date-ut
-  "u" gnus-article-date-ut
-  "l" gnus-article-date-local
-  "p" gnus-article-date-english
-  "e" gnus-article-date-lapsed
-  "o" gnus-article-date-original
-  "i" gnus-article-date-iso8601
-  "s" gnus-article-date-user)
-
-(gnus-define-keys (gnus-summary-wash-empty-map "E" gnus-summary-wash-map)
-  "t" gnus-article-remove-trailing-blank-lines
-  "l" gnus-article-strip-leading-blank-lines
-  "m" gnus-article-strip-multiple-blank-lines
-  "a" gnus-article-strip-blank-lines
-  "A" gnus-article-strip-all-blank-lines
-  "s" gnus-article-strip-leading-space
-  "e" gnus-article-strip-trailing-space
-  "w" gnus-article-remove-leading-whitespace)
-
-(gnus-define-keys (gnus-summary-help-map "H" gnus-summary-mode-map)
-  "v" gnus-version
-  "d" gnus-summary-describe-group
-  "h" gnus-summary-describe-briefly
-  "i" gnus-info-find-node)
-
-(gnus-define-keys (gnus-summary-backend-map "B" gnus-summary-mode-map)
-  "e" gnus-summary-expire-articles
-  "\M-\C-e" gnus-summary-expire-articles-now
-  "\177" gnus-summary-delete-article
-  [delete] gnus-summary-delete-article
-  [backspace] gnus-summary-delete-article
-  "m" gnus-summary-move-article
-  "r" gnus-summary-respool-article
-  "w" gnus-summary-edit-article
-  "c" gnus-summary-copy-article
-  "B" gnus-summary-crosspost-article
-  "q" gnus-summary-respool-query
-  "t" gnus-summary-respool-trace
-  "i" gnus-summary-import-article
-  "I" gnus-summary-create-article
-  "p" gnus-summary-article-posted-p)
-
-(gnus-define-keys (gnus-summary-save-map "O" gnus-summary-mode-map)
-  "o" gnus-summary-save-article
-  "m" gnus-summary-save-article-mail
-  "F" gnus-summary-write-article-file
-  "r" gnus-summary-save-article-rmail
-  "f" gnus-summary-save-article-file
-  "b" gnus-summary-save-article-body-file
-  "B" gnus-summary-write-article-body-file
-  "h" gnus-summary-save-article-folder
-  "v" gnus-summary-save-article-vm
-  "p" gnus-summary-pipe-output
-  "P" gnus-summary-muttprint)
-
-(gnus-define-keys (gnus-summary-mime-map "K" gnus-summary-mode-map)
-  "b" gnus-summary-display-buttonized
-  "m" gnus-summary-repair-multipart
-  "v" gnus-article-view-part
-  "o" gnus-article-save-part
-  "O" gnus-article-save-part-and-strip
-  "r" gnus-article-replace-part
-  "d" gnus-article-delete-part
-  "t" gnus-article-view-part-as-type
-  "j" gnus-article-jump-to-part
-  "c" gnus-article-copy-part
-  "C" gnus-article-view-part-as-charset
-  "e" gnus-article-view-part-externally
-  "H" gnus-article-browse-html-article
-  "E" gnus-article-encrypt-body
-  "i" gnus-article-inline-part
-  "|" gnus-article-pipe-part)
-
-(gnus-define-keys (gnus-uu-mark-map "P" gnus-summary-mark-map)
-  "p" gnus-summary-mark-as-processable
-  "u" gnus-summary-unmark-as-processable
-  "U" gnus-summary-unmark-all-processable
-  "v" gnus-uu-mark-over
-  "s" gnus-uu-mark-series
-  "r" gnus-uu-mark-region
-  "g" gnus-uu-unmark-region
-  "R" gnus-uu-mark-by-regexp
-  "G" gnus-uu-unmark-by-regexp
-  "t" gnus-uu-mark-thread
-  "T" gnus-uu-unmark-thread
-  "a" gnus-uu-mark-all
-  "b" gnus-uu-mark-buffer
-  "S" gnus-uu-mark-sparse
-  "k" gnus-summary-kill-process-mark
-  "y" gnus-summary-yank-process-mark
-  "w" gnus-summary-save-process-mark
-  "i" gnus-uu-invert-processable)
-
-(gnus-define-keys (gnus-uu-extract-map "X" gnus-summary-mode-map)
-  ;;"x" gnus-uu-extract-any
-  "m" gnus-summary-save-parts
-  "u" gnus-uu-decode-uu
-  "U" gnus-uu-decode-uu-and-save
-  "s" gnus-uu-decode-unshar
-  "S" gnus-uu-decode-unshar-and-save
-  "o" gnus-uu-decode-save
-  "O" gnus-uu-decode-save
-  "b" gnus-uu-decode-binhex
-  "B" gnus-uu-decode-binhex
-  "Y" gnus-uu-decode-yenc
-  "p" gnus-uu-decode-postscript
-  "P" gnus-uu-decode-postscript-and-save)
-
-(gnus-define-keys
-    (gnus-uu-extract-view-map "v" gnus-uu-extract-map)
-  "u" gnus-uu-decode-uu-view
-  "U" gnus-uu-decode-uu-and-save-view
-  "s" gnus-uu-decode-unshar-view
-  "S" gnus-uu-decode-unshar-and-save-view
-  "o" gnus-uu-decode-save-view
-  "O" gnus-uu-decode-save-view
-  "b" gnus-uu-decode-binhex-view
-  "B" gnus-uu-decode-binhex-view
-  "p" gnus-uu-decode-postscript-view
-  "P" gnus-uu-decode-postscript-and-save-view)
+  "\C-c\C-d" #'gnus-summary-describe-group
+  "\C-c\C-p" #'gnus-summary-make-group-from-search
+  "q" #'gnus-summary-exit
+  "Q" #'gnus-summary-exit-no-update
+  "\C-c\C-i" #'gnus-info-find-node
+  [mouse-2] #'gnus-mouse-pick-article
+  [follow-link] 'mouse-face
+  "m" #'gnus-summary-mail-other-window
+  "a" #'gnus-summary-post-news
+  "x" #'gnus-summary-limit-to-unread
+  "s" #'gnus-summary-isearch-article
+  "\t" #'gnus-summary-button-forward
+  [backtab] #'gnus-summary-button-backward
+  "w" #'gnus-summary-browse-url
+  "t" #'gnus-summary-toggle-header
+  "g" #'gnus-summary-show-article
+  "l" #'gnus-summary-goto-last-article
+  "\C-c\C-v\C-v" #'gnus-uu-decode-uu-view
+  "\C-d" #'gnus-summary-enter-digest-group
+  "\M-\C-d" #'gnus-summary-read-document
+  "\M-\C-e" #'gnus-summary-edit-parameters
+  "\M-\C-a" #'gnus-summary-customize-parameters
+  "\C-c\C-b" #'gnus-bug
+  "*" #'gnus-cache-enter-article
+  "\M-*" #'gnus-cache-remove-article
+  "\M-&" #'gnus-summary-universal-argument
+  "\C-l" #'gnus-recenter
+  "I" #'gnus-summary-increase-score
+  "L" #'gnus-summary-lower-score
+  "\M-i" #'gnus-symbolic-argument
+  "h" #'gnus-summary-select-article-buffer
+
+  "b" #'gnus-article-view-part
+  "\M-t" #'gnus-summary-toggle-display-buttonized
+
+  "V" #'gnus-summary-score-map
+  "X" #'gnus-uu-extract-map
+  "S" #'gnus-summary-send-map
+
+  ;; Sort of orthogonal keymaps.
+  "M" (define-keymap :prefix 'gnus-summary-mark-map
+        "t" #'gnus-summary-tick-article-forward
+        "!" #'gnus-summary-tick-article-forward
+        "d" #'gnus-summary-mark-as-read-forward
+        "r" #'gnus-summary-mark-as-read-forward
+        "c" #'gnus-summary-clear-mark-forward
+        " " #'gnus-summary-clear-mark-forward
+        "e" #'gnus-summary-mark-as-expirable
+        "x" #'gnus-summary-mark-as-expirable
+        "?" #'gnus-summary-mark-as-dormant
+        "b" #'gnus-summary-set-bookmark
+        "B" #'gnus-summary-remove-bookmark
+        "#" #'gnus-summary-mark-as-processable
+        "\M-#" #'gnus-summary-unmark-as-processable
+        "S" #'gnus-summary-limit-include-expunged
+        "C" #'gnus-summary-catchup
+        "H" #'gnus-summary-catchup-to-here
+        "h" #'gnus-summary-catchup-from-here
+        "\C-c" #'gnus-summary-catchup-all
+        "k" #'gnus-summary-kill-same-subject-and-select
+        "K" #'gnus-summary-kill-same-subject
+        "P" #'gnus-uu-mark-map)
+
+  "V" (define-keymap :prefix 'gnus-summary-mscore-map
+        "c" #'gnus-summary-clear-above
+        "u" #'gnus-summary-tick-above
+        "m" #'gnus-summary-mark-above
+        "k" #'gnus-summary-kill-below)
+
+  "/" (define-keymap :prefix 'gnus-summary-limit-map
+        "/" #'gnus-summary-limit-to-subject
+        "n" #'gnus-summary-limit-to-articles
+        "b" #'gnus-summary-limit-to-bodies
+        "h" #'gnus-summary-limit-to-headers
+        "w" #'gnus-summary-pop-limit
+        "s" #'gnus-summary-limit-to-subject
+        "a" #'gnus-summary-limit-to-author
+        "u" #'gnus-summary-limit-to-unread
+        "m" #'gnus-summary-limit-to-marks
+        "M" #'gnus-summary-limit-exclude-marks
+        "v" #'gnus-summary-limit-to-score
+        "*" #'gnus-summary-limit-include-cached
+        "D" #'gnus-summary-limit-include-dormant
+        "T" #'gnus-summary-limit-include-thread
+        "d" #'gnus-summary-limit-exclude-dormant
+        "t" #'gnus-summary-limit-to-age
+        "." #'gnus-summary-limit-to-unseen
+        "x" #'gnus-summary-limit-to-extra
+        "p" #'gnus-summary-limit-to-display-predicate
+        "E" #'gnus-summary-limit-include-expunged
+        "c" #'gnus-summary-limit-exclude-childless-dormant
+        "C" #'gnus-summary-limit-mark-excluded-as-read
+        "o" #'gnus-summary-insert-old-articles
+        "N" #'gnus-summary-insert-new-articles
+        "S" #'gnus-summary-limit-to-singletons
+        "r" #'gnus-summary-limit-to-replied
+        "R" #'gnus-summary-limit-to-recipient
+        "A" #'gnus-summary-limit-to-address)
+
+  "G" (define-keymap :prefix 'gnus-summary-goto-map
+        "n" #'gnus-summary-next-unread-article
+        "p" #'gnus-summary-prev-unread-article
+        "N" #'gnus-summary-next-article
+        "P" #'gnus-summary-prev-article
+        "\C-n" #'gnus-summary-next-same-subject
+        "\C-p" #'gnus-summary-prev-same-subject
+        "\M-n" #'gnus-summary-next-unread-subject
+        "\M-p" #'gnus-summary-prev-unread-subject
+        "f" #'gnus-summary-first-unread-article
+        "b" #'gnus-summary-best-unread-article
+        "u" #'gnus-summary-next-unseen-article
+        "U" #'gnus-summary-prev-unseen-article
+        "j" #'gnus-summary-goto-article
+        "g" #'gnus-summary-goto-subject
+        "l" #'gnus-summary-goto-last-article
+        "o" #'gnus-summary-pop-article)
+
+  "T" (define-keymap :prefix 'gnus-summary-thread-map
+        "k" #'gnus-summary-kill-thread
+        "E" #'gnus-summary-expire-thread
+        "l" #'gnus-summary-lower-thread
+        "i" #'gnus-summary-raise-thread
+        "T" #'gnus-summary-toggle-threads
+        "t" #'gnus-summary-rethread-current
+        "^" #'gnus-summary-reparent-thread
+        "\M-^" #'gnus-summary-reparent-children
+        "s" #'gnus-summary-show-thread
+        "S" #'gnus-summary-show-all-threads
+        "h" #'gnus-summary-hide-thread
+        "H" #'gnus-summary-hide-all-threads
+        "n" #'gnus-summary-next-thread
+        "p" #'gnus-summary-prev-thread
+        "u" #'gnus-summary-up-thread
+        "o" #'gnus-summary-top-thread
+        "d" #'gnus-summary-down-thread
+        "#" #'gnus-uu-mark-thread
+        "\M-#" #'gnus-uu-unmark-thread)
+
+  "Y" (define-keymap :prefix 'gnus-summary-buffer-map
+        "g" #'gnus-summary-prepare
+        "c" #'gnus-summary-insert-cached-articles
+        "d" #'gnus-summary-insert-dormant-articles
+        "t" #'gnus-summary-insert-ticked-articles)
+
+  "Z" (define-keymap :prefix 'gnus-summary-exit-map
+        "c" #'gnus-summary-catchup-and-exit
+        "C" #'gnus-summary-catchup-all-and-exit
+        "E" #'gnus-summary-exit-no-update
+        "Q" #'gnus-summary-exit
+        "Z" #'gnus-summary-exit
+        "n" #'gnus-summary-catchup-and-goto-next-group
+        "p" #'gnus-summary-catchup-and-goto-prev-group
+        "R" #'gnus-summary-reselect-current-group
+        "G" #'gnus-summary-rescan-group
+        "N" #'gnus-summary-next-group
+        "s" #'gnus-summary-save-newsrc
+        "P" #'gnus-summary-prev-group)
+
+  "A" (define-keymap :prefix 'gnus-summary-article-map
+        " " #'gnus-summary-next-page
+        "n" #'gnus-summary-next-page
+        [?\S-\ ] #'gnus-summary-prev-page
+        "\177" #'gnus-summary-prev-page
+        [delete] #'gnus-summary-prev-page
+        "p" #'gnus-summary-prev-page
+        "\r" #'gnus-summary-scroll-up
+        "\M-\r" #'gnus-summary-scroll-down
+        "<" #'gnus-summary-beginning-of-article
+        ">" #'gnus-summary-end-of-article
+        "b" #'gnus-summary-beginning-of-article
+        "e" #'gnus-summary-end-of-article
+        "^" #'gnus-summary-refer-parent-article
+        "r" #'gnus-summary-refer-parent-article
+        "C" #'gnus-summary-show-complete-article
+        "D" #'gnus-summary-enter-digest-group
+        "R" #'gnus-summary-refer-references
+        "T" #'gnus-summary-refer-thread
+        "W" #'gnus-warp-to-article
+        "g" #'gnus-summary-show-article
+        "s" #'gnus-summary-isearch-article
+        "\t" #'gnus-summary-button-forward
+        [backtab] #'gnus-summary-button-backward
+        "w" #'gnus-summary-browse-url
+        "P" #'gnus-summary-print-article
+        "S" #'gnus-sticky-article
+        "M" #'gnus-mailing-list-insinuate
+        "t" #'gnus-article-babel)
+
+  "W" (define-keymap :prefix 'gnus-summary-wash-map
+        "b" #'gnus-article-add-buttons
+        "B" #'gnus-article-add-buttons-to-head
+        "o" #'gnus-article-treat-overstrike
+        "e" #'gnus-article-emphasize
+        "w" #'gnus-article-fill-cited-article
+        "Q" #'gnus-article-fill-long-lines
+        "L" #'gnus-article-toggle-truncate-lines
+        "C" #'gnus-article-capitalize-sentences
+        "c" #'gnus-article-remove-cr
+        "q" #'gnus-article-de-quoted-unreadable
+        "6" #'gnus-article-de-base64-unreadable
+        "Z" #'gnus-article-decode-HZ
+        "A" #'gnus-article-treat-ansi-sequences
+        "h" #'gnus-article-wash-html
+        "u" #'gnus-article-unsplit-urls
+        "s" #'gnus-summary-force-verify-and-decrypt
+        "f" #'gnus-article-display-x-face
+        "l" #'gnus-summary-stop-page-breaking
+        "r" #'gnus-summary-caesar-message
+        "m" #'gnus-summary-morse-message
+        "t" #'gnus-summary-toggle-header
+        "g" #'gnus-treat-smiley
+        "v" #'gnus-summary-verbose-headers
+        "a" #'gnus-article-strip-headers-in-body ;; mnemonic: wash archive
+        "p" #'gnus-article-verify-x-pgp-sig
+        "d" #'gnus-article-treat-smartquotes
+        "U" #'gnus-article-treat-non-ascii
+        "i" #'gnus-summary-idna-message
+
+        "Y" (define-keymap :prefix 'gnus-summary-wash-deuglify-map
+              ;; mnemonic: deuglif*Y*
+              "u" #'gnus-article-outlook-unwrap-lines
+              "a" #'gnus-article-outlook-repair-attribution
+              "c" #'gnus-article-outlook-rearrange-citation
+              ;; mnemonic: full deuglify
+              "f" #'gnus-article-outlook-deuglify-article)
+
+        "W" (define-keymap :prefix 'gnus-summary-wash-hide-map
+              "a" #'gnus-article-hide
+              "h" #'gnus-article-hide-headers
+              "b" #'gnus-article-hide-boring-headers
+              "s" #'gnus-article-hide-signature
+              "c" #'gnus-article-hide-citation
+              "C" #'gnus-article-hide-citation-in-followups
+              "l" #'gnus-article-hide-list-identifiers
+              "B" #'gnus-article-strip-banner
+              "P" #'gnus-article-hide-pem
+              "\C-c" #'gnus-article-hide-citation-maybe)
+
+        "H" (define-keymap :prefix 'gnus-summary-wash-highlight-map
+              "a" #'gnus-article-highlight
+              "h" #'gnus-article-highlight-headers
+              "c" #'gnus-article-highlight-citation
+              "s" #'gnus-article-highlight-signature)
+
+        "G" (define-keymap :prefix 'gnus-summary-wash-header-map
+              "f" #'gnus-article-treat-fold-headers
+              "u" #'gnus-article-treat-unfold-headers
+              "n" #'gnus-article-treat-fold-newsgroups)
+
+        "D" (define-keymap :prefix 'gnus-summary-wash-display-map
+              "x" #'gnus-article-display-x-face
+              "d" #'gnus-article-display-face
+              "s" #'gnus-treat-smiley
+              "D" #'gnus-article-remove-images
+              "W" #'gnus-article-show-images
+              "F" #'gnus-article-toggle-fonts
+              "f" #'gnus-treat-from-picon
+              "m" #'gnus-treat-mail-picon
+              "n" #'gnus-treat-newsgroups-picon
+              "g" #'gnus-treat-from-gravatar
+              "h" #'gnus-treat-mail-gravatar)
+
+        "M" (define-keymap :prefix 'gnus-summary-wash-mime-map
+              "w" #'gnus-article-decode-mime-words
+              "c" #'gnus-article-decode-charset
+              "h" #'gnus-mime-buttonize-attachments-in-header
+              "v" #'gnus-mime-view-all-parts
+              "b" #'gnus-article-view-part)
+
+        "T" (define-keymap :prefix 'gnus-summary-wash-time-map
+              "z" #'gnus-article-date-ut
+              "u" #'gnus-article-date-ut
+              "l" #'gnus-article-date-local
+              "p" #'gnus-article-date-english
+              "e" #'gnus-article-date-lapsed
+              "o" #'gnus-article-date-original
+              "i" #'gnus-article-date-iso8601
+              "s" #'gnus-article-date-user)
+
+        "E" (define-keymap :prefix 'gnus-summary-wash-empty-map
+              "t" #'gnus-article-remove-trailing-blank-lines
+              "l" #'gnus-article-strip-leading-blank-lines
+              "m" #'gnus-article-strip-multiple-blank-lines
+              "a" #'gnus-article-strip-blank-lines
+              "A" #'gnus-article-strip-all-blank-lines
+              "s" #'gnus-article-strip-leading-space
+              "e" #'gnus-article-strip-trailing-space
+              "w" #'gnus-article-remove-leading-whitespace))
+
+  "H" (define-keymap :prefix 'gnus-summary-help-map
+        "v" #'gnus-version
+        "d" #'gnus-summary-describe-group
+        "h" #'gnus-summary-describe-briefly
+        "i" #'gnus-info-find-node)
+
+  "B" (define-keymap :prefix 'gnus-summary-backend-map
+        "e" #'gnus-summary-expire-articles
+        "\M-\C-e" #'gnus-summary-expire-articles-now
+        "\177" #'gnus-summary-delete-article
+        [delete] #'gnus-summary-delete-article
+        [backspace] #'gnus-summary-delete-article
+        "m" #'gnus-summary-move-article
+        "r" #'gnus-summary-respool-article
+        "w" #'gnus-summary-edit-article
+        "c" #'gnus-summary-copy-article
+        "B" #'gnus-summary-crosspost-article
+        "q" #'gnus-summary-respool-query
+        "t" #'gnus-summary-respool-trace
+        "i" #'gnus-summary-import-article
+        "I" #'gnus-summary-create-article
+        "p" #'gnus-summary-article-posted-p)
+
+  "O" (define-keymap :prefix 'gnus-summary-save-map
+        "o" #'gnus-summary-save-article
+        "m" #'gnus-summary-save-article-mail
+        "F" #'gnus-summary-write-article-file
+        "r" #'gnus-summary-save-article-rmail
+        "f" #'gnus-summary-save-article-file
+        "b" #'gnus-summary-save-article-body-file
+        "B" #'gnus-summary-write-article-body-file
+        "h" #'gnus-summary-save-article-folder
+        "v" #'gnus-summary-save-article-vm
+        "p" #'gnus-summary-pipe-output
+        "P" #'gnus-summary-muttprint)
+
+  "K" (define-keymap :prefix 'gnus-summary-mime-map
+        "b" #'gnus-summary-display-buttonized
+        "m" #'gnus-summary-repair-multipart
+        "v" #'gnus-article-view-part
+        "o" #'gnus-article-save-part
+        "O" #'gnus-article-save-part-and-strip
+        "r" #'gnus-article-replace-part
+        "d" #'gnus-article-delete-part
+        "t" #'gnus-article-view-part-as-type
+        "j" #'gnus-article-jump-to-part
+        "c" #'gnus-article-copy-part
+        "C" #'gnus-article-view-part-as-charset
+        "e" #'gnus-article-view-part-externally
+        "H" #'gnus-article-browse-html-article
+        "E" #'gnus-article-encrypt-body
+        "i" #'gnus-article-inline-part
+        "|" #'gnus-article-pipe-part)
+
+  "P" (define-keymap :prefix 'gnus-uu-mark-map
+        "p" #'gnus-summary-mark-as-processable
+        "u" #'gnus-summary-unmark-as-processable
+        "U" #'gnus-summary-unmark-all-processable
+        "v" #'gnus-uu-mark-over
+        "s" #'gnus-uu-mark-series
+        "r" #'gnus-uu-mark-region
+        "g" #'gnus-uu-unmark-region
+        "R" #'gnus-uu-mark-by-regexp
+        "G" #'gnus-uu-unmark-by-regexp
+        "t" #'gnus-uu-mark-thread
+        "T" #'gnus-uu-unmark-thread
+        "a" #'gnus-uu-mark-all
+        "b" #'gnus-uu-mark-buffer
+        "S" #'gnus-uu-mark-sparse
+        "k" #'gnus-summary-kill-process-mark
+        "y" #'gnus-summary-yank-process-mark
+        "w" #'gnus-summary-save-process-mark
+        "i" #'gnus-uu-invert-processable)
+
+  "X" (define-keymap :prefix 'gnus-uu-extract-map
+        ;;"x" gnus-uu-extract-any
+        "m" #'gnus-summary-save-parts
+        "u" #'gnus-uu-decode-uu
+        "U" #'gnus-uu-decode-uu-and-save
+        "s" #'gnus-uu-decode-unshar
+        "S" #'gnus-uu-decode-unshar-and-save
+        "o" #'gnus-uu-decode-save
+        "O" #'gnus-uu-decode-save
+        "b" #'gnus-uu-decode-binhex
+        "B" #'gnus-uu-decode-binhex
+        "Y" #'gnus-uu-decode-yenc
+        "p" #'gnus-uu-decode-postscript
+        "P" #'gnus-uu-decode-postscript-and-save
+
+        "v" (define-keymap :prefix 'gnus-uu-extract-view-map
+              "u" #'gnus-uu-decode-uu-view
+              "U" #'gnus-uu-decode-uu-and-save-view
+              "s" #'gnus-uu-decode-unshar-view
+              "S" #'gnus-uu-decode-unshar-and-save-view
+              "o" #'gnus-uu-decode-save-view
+              "O" #'gnus-uu-decode-save-view
+              "b" #'gnus-uu-decode-binhex-view
+              "B" #'gnus-uu-decode-binhex-view
+              "p" #'gnus-uu-decode-postscript-view
+              "P" #'gnus-uu-decode-postscript-and-save-view)))
 
 (defvar gnus-article-post-menu nil)
 
diff --git a/lisp/gnus/gnus-topic.el b/lisp/gnus/gnus-topic.el
index c8bcccd..e78dd15 100644
--- a/lisp/gnus/gnus-topic.el
+++ b/lisp/gnus/gnus-topic.el
@@ -1056,63 +1056,56 @@ articles in the topic and its subtopics."
 
 ;;; Topic mode, commands and keymap.
 
-(defvar gnus-topic-mode-map nil)
-(defvar gnus-group-topic-map nil)
-
-(unless gnus-topic-mode-map
-  (setq gnus-topic-mode-map (make-sparse-keymap))
-
+(defvar-keymap gnus-topic-mode-map
   ;; Override certain group mode keys.
-  (gnus-define-keys gnus-topic-mode-map
-    "=" gnus-topic-select-group
-    "\r" gnus-topic-select-group
-    " " gnus-topic-read-group
-    "\C-c\C-x" gnus-topic-expire-articles
-    "c" gnus-topic-catchup-articles
-    "\C-k" gnus-topic-kill-group
-    "\C-y" gnus-topic-yank-group
-    "\M-g" gnus-topic-get-new-news-this-topic
-    "AT" gnus-topic-list-active
-    "Gp" gnus-topic-edit-parameters
-    "#" gnus-topic-mark-topic
-    "\M-#" gnus-topic-unmark-topic
-    [tab] gnus-topic-indent
-    [(meta tab)] gnus-topic-unindent
-    "\C-i" gnus-topic-indent
-    "\M-\C-i" gnus-topic-unindent
-    [mouse-2] gnus-mouse-pick-topic)
-
-  ;; Define a new submap.
-  (gnus-define-keys (gnus-group-topic-map "T" gnus-group-mode-map)
-    "#" gnus-topic-mark-topic
-    "\M-#" gnus-topic-unmark-topic
-    "n" gnus-topic-create-topic
-    "m" gnus-topic-move-group
-    "D" gnus-topic-remove-group
-    "c" gnus-topic-copy-group
-    "h" gnus-topic-hide-topic
-    "s" gnus-topic-show-topic
-    "j" gnus-topic-jump-to-topic
-    "M" gnus-topic-move-matching
-    "C" gnus-topic-copy-matching
-    "\M-p" gnus-topic-goto-previous-topic
-    "\M-n" gnus-topic-goto-next-topic
-    "\C-i" gnus-topic-indent
-    [tab] gnus-topic-indent
-    "r" gnus-topic-rename
-    "\177" gnus-topic-delete
-    [delete] gnus-topic-delete
-    "H" gnus-topic-toggle-display-empty-topics)
-
-  (gnus-define-keys (gnus-topic-sort-map "S" gnus-group-topic-map)
-    "s" gnus-topic-sort-groups
-    "a" gnus-topic-sort-groups-by-alphabet
-    "u" gnus-topic-sort-groups-by-unread
-    "l" gnus-topic-sort-groups-by-level
-    "e" gnus-topic-sort-groups-by-server
-    "v" gnus-topic-sort-groups-by-score
-    "r" gnus-topic-sort-groups-by-rank
-    "m" gnus-topic-sort-groups-by-method))
+  "=" #'gnus-topic-select-group
+  "\r" #'gnus-topic-select-group
+  " " #'gnus-topic-read-group
+  "\C-c\C-x" #'gnus-topic-expire-articles
+  "c" #'gnus-topic-catchup-articles
+  "\C-k" #'gnus-topic-kill-group
+  "\C-y" #'gnus-topic-yank-group
+  "\M-g" #'gnus-topic-get-new-news-this-topic
+  "AT" #'gnus-topic-list-active
+  "Gp" #'gnus-topic-edit-parameters
+  "#" #'gnus-topic-mark-topic
+  "\M-#" #'gnus-topic-unmark-topic
+  [tab] #'gnus-topic-indent
+  [(meta tab)] #'gnus-topic-unindent
+  "\C-i" #'gnus-topic-indent
+  "\M-\C-i" #'gnus-topic-unindent
+  [mouse-2] #'gnus-mouse-pick-topic
+
+  "T" (define-keymap :prefix 'gnus-group-topic-map
+        "#" #'gnus-topic-mark-topic
+        "\M-#" #'gnus-topic-unmark-topic
+        "n" #'gnus-topic-create-topic
+        "m" #'gnus-topic-move-group
+        "D" #'gnus-topic-remove-group
+        "c" #'gnus-topic-copy-group
+        "h" #'gnus-topic-hide-topic
+        "s" #'gnus-topic-show-topic
+        "j" #'gnus-topic-jump-to-topic
+        "M" #'gnus-topic-move-matching
+        "C" #'gnus-topic-copy-matching
+        "\M-p" #'gnus-topic-goto-previous-topic
+        "\M-n" #'gnus-topic-goto-next-topic
+        "\C-i" #'gnus-topic-indent
+        [tab] #'gnus-topic-indent
+        "r" #'gnus-topic-rename
+        "\177" #'gnus-topic-delete
+        [delete] #'gnus-topic-delete
+        "H" #'gnus-topic-toggle-display-empty-topics
+
+        "S" (define-keymap :prefix 'gnus-topic-sort-map
+              "s" #'gnus-topic-sort-groups
+              "a" #'gnus-topic-sort-groups-by-alphabet
+              "u" #'gnus-topic-sort-groups-by-unread
+              "l" #'gnus-topic-sort-groups-by-level
+              "e" #'gnus-topic-sort-groups-by-server
+              "v" #'gnus-topic-sort-groups-by-score
+              "r" #'gnus-topic-sort-groups-by-rank
+              "m" #'gnus-topic-sort-groups-by-method)))
 
 (defun gnus-topic-make-menu-bar ()
   (unless (boundp 'gnus-topic-menu)
diff --git a/lisp/gnus/gnus.el b/lisp/gnus/gnus.el
index 3c2e4ad..6644cc4 100644
--- a/lisp/gnus/gnus.el
+++ b/lisp/gnus/gnus.el
@@ -2609,7 +2609,11 @@ are always t.")
       gnus-uu-decode-uu-and-save-view gnus-uu-decode-unshar-view
       gnus-uu-decode-unshar-and-save-view gnus-uu-decode-save-view
       gnus-uu-decode-binhex-view gnus-uu-unmark-thread
-      gnus-uu-mark-over gnus-uu-post-news gnus-uu-invert-processable)
+      gnus-uu-mark-over gnus-uu-post-news gnus-uu-invert-processable
+      gnus-uu-decode-postscript-and-save-view
+      gnus-uu-decode-postscript-view gnus-uu-decode-postscript-and-save
+      gnus-uu-decode-yenc gnus-uu-unmark-by-regexp gnus-uu-unmark-region
+      gnus-uu-decode-postscript)
      ("gnus-uu" gnus-uu-delete-work-dir gnus-uu-unmark-thread)
      ("gnus-msg" (gnus-summary-send-map keymap)
       gnus-article-mail gnus-copy-article-buffer gnus-extended-version)
@@ -2667,7 +2671,34 @@ are always t.")
       gnus-article-edit-mode gnus-article-edit-article
       gnus-article-edit-done gnus-article-decode-encoded-words
       gnus-start-date-timer gnus-stop-date-timer
-      gnus-mime-view-all-parts)
+      gnus-mime-view-all-parts gnus-article-pipe-part
+      gnus-article-inline-part gnus-article-encrypt-body
+      gnus-article-browse-html-article gnus-article-view-part-externally
+      gnus-article-view-part-as-charset gnus-article-copy-part
+      gnus-article-jump-to-part gnus-article-view-part-as-type
+      gnus-article-delete-part gnus-article-replace-part
+      gnus-article-save-part-and-strip gnus-article-save-part
+      gnus-article-remove-leading-whitespace gnus-article-strip-trailing-space
+      gnus-article-strip-leading-space gnus-article-strip-all-blank-lines
+      gnus-article-strip-blank-lines gnus-article-strip-multiple-blank-lines
+      gnus-article-date-user gnus-article-date-iso8601
+      gnus-article-date-english gnus-article-date-ut
+      gnus-article-decode-charset gnus-article-decode-mime-words
+      gnus-article-toggle-fonts gnus-article-show-images
+      gnus-article-remove-images gnus-article-display-face
+      gnus-article-treat-fold-newsgroups gnus-article-treat-unfold-headers
+      gnus-article-treat-fold-headers gnus-article-highlight-signature
+      gnus-article-highlight-headers gnus-article-highlight
+      gnus-article-strip-banner gnus-article-hide-list-identifiers
+      gnus-article-hide gnus-article-outlook-rearrange-citation
+      gnus-article-treat-non-ascii gnus-article-treat-smartquotes
+      gnus-article-verify-x-pgp-sig gnus-article-strip-headers-in-body
+      gnus-treat-smiley gnus-article-treat-ansi-sequences
+      gnus-article-capitalize-sentences gnus-article-toggle-truncate-lines
+      gnus-article-fill-long-lines gnus-article-emphasize
+      gnus-article-add-buttons-to-head gnus-article-add-button
+      gnus-article-babel gnus-sticky-article gnus-article-view-part
+      gnus-article-add-buttons)
      ("gnus-int" gnus-request-type)
      ("gnus-start" gnus-newsrc-parse-options gnus-1 gnus-no-server-1
       gnus-dribble-enter gnus-read-init-file gnus-dribble-touch
diff --git a/lisp/gnus/spam.el b/lisp/gnus/spam.el
index d00f0a6..cfef69f 100644
--- a/lisp/gnus/spam.el
+++ b/lisp/gnus/spam.el
@@ -663,13 +663,13 @@ order for SpamAssassin to recognize the new registered 
spam."
 
 ;;; Key bindings for spam control.
 
-(gnus-define-keys gnus-summary-mode-map
-  "St" spam-generic-score
-  "Sx" gnus-summary-mark-as-spam
-  "Mst" spam-generic-score
-  "Msx" gnus-summary-mark-as-spam
-  "\M-d" gnus-summary-mark-as-spam
-  "$" gnus-summary-mark-as-spam)
+(define-keymap :keymap gnus-summary-mode-map
+  "St" #'spam-generic-score
+  "Sx" #'gnus-summary-mark-as-spam
+  "Mst" #'spam-generic-score
+  "Msx" #'gnus-summary-mark-as-spam
+  "\M-d" #'gnus-summary-mark-as-spam
+  "$" #'gnus-summary-mark-as-spam)
 
 (defvar spam-cache-lookups t
   "Whether spam.el will try to cache lookups using `spam-caches'.")



reply via email to

[Prev in Thread] Current Thread [Next in Thread]