Changes committed gnus/lisp (gnus-art.el)

"Katsumi Yamaoka" <[email protected]>
Newsgroups gmane.emacs.gnus.commits
Message-ID <[email protected]>
Modified: gnus-art.el

(gnus-article-describe-bindings): New function.
(gnus-article-read-summary-keys): Use it.
(gnus-article-mode-map): Bind `C-h b' to it.


Index: gnus-art.el
diff -u gnus/lisp/gnus-art.el:7.251 gnus/lisp/gnus-art.el:7.252
--- gnus-art.el:7.251	Thu Jan 10 09:08:19 2008
+++ gnus-art.el	Fri Jan 11 07:47:41 2008
@@ -4215,6 +4215,7 @@
   "F" gnus-article-followup-with-original
   "\C-hk" gnus-article-describe-key
   "\C-hc" gnus-article-describe-key-briefly
+  "\C-hb" gnus-article-describe-bindings
 
   "\C-d" gnus-article-read-summary-keys
   "\M-*" gnus-article-read-summary-keys
@@ -6260,27 +6261,7 @@
 
     (cond
      ((eq (aref keys (1- (length keys))) ?\C-h)
-      (if (featurep 'xemacs)
-	  (let ((keymap (with-current-buffer gnus-article-current-summary
-			  (copy-keymap (current-local-map)))))
-	    (map-keymap
-	     (lambda (key def)
-	       (define-key keymap (vector ?S key) def))
-	     gnus-article-send-map)
-	    (with-temp-buffer
-	      (setq major-mode 'gnus-article-mode)
-	      (use-local-map keymap)
-	      (describe-bindings (substring keys 0 -1))))
-	(let ((keymap (make-sparse-keymap))
-	      (map (copy-keymap gnus-article-send-map)))
-	  (define-key keymap "S" map)
-	  (define-key map [t] nil)
-	  (set-keymap-parent keymap
-			     (with-current-buffer gnus-article-current-summary
-			       (current-local-map)))
-	  (with-temp-buffer
-	    (use-local-map keymap)
-	    (describe-bindings (substring keys 0 -1))))))
+      (gnus-article-describe-bindings (substring keys 0 -1)))
      ((or (member keys nosaves)
 	  (member keys nosave-but-article)
 	  (member keys nosave-in-article))
@@ -6417,6 +6398,60 @@
 	      gnus-pick-mode)
 	  (describe-key-briefly (read-key-sequence nil t) insert)))
     (describe-key-briefly key insert)))
+
+(defun gnus-article-describe-bindings (&optional prefix)
+  "Show a list of all defined keys, and their definitions.
+The optional argument PREFIX, if non-nil, should be a key sequence;
+then we display only bindings in the summary buffer that start with
+that prefix."
+  (interactive)
+  (gnus-article-check-buffer)
+  (if (featurep 'xemacs)
+      (if prefix
+	  (let ((keymap (with-current-buffer gnus-article-current-summary
+			  (copy-keymap (current-local-map)))))
+	    (map-keymap
+	     (lambda (key def)
+	       (define-key keymap (vector ?S key) def))
+	     gnus-article-send-map)
+	    (with-temp-buffer
+	      (setq major-mode 'gnus-article-mode)
+	      (use-local-map keymap)
+	      (describe-bindings prefix)))
+	(let ((keymap (copy-keymap gnus-article-mode-map))
+	      def)
+	  (with-current-buffer gnus-article-current-summary
+	    (map-keymap
+	     (lambda (key def)
+	       (when (and (eq def 'gnus-article-read-summary-keys)
+			  (setq def (key-binding key)))
+		 (define-key keymap key def)))
+	     gnus-article-mode-map))
+	  (with-temp-buffer
+	    (setq major-mode 'gnus-article-mode)
+	    (use-local-map keymap)
+	    (describe-bindings))))
+    (if prefix
+	(let ((keymap (make-sparse-keymap))
+	      (map (copy-keymap gnus-article-send-map)))
+	  (define-key keymap "S" map)
+	  (define-key map [t] nil)
+	  (set-keymap-parent keymap
+			     (with-current-buffer gnus-article-current-summary
+			       (current-local-map)))
+	  (with-temp-buffer
+	    (use-local-map keymap)
+	    (describe-bindings prefix)))
+      (let ((keymap (copy-keymap gnus-article-mode-map))
+	    (sumkeys (where-is-internal 'gnus-article-read-summary-keys))
+	    def)
+	(with-current-buffer gnus-article-current-summary
+	  (dolist (key sumkeys)
+	    (when (setq def (key-binding key))
+	      (define-key keymap key def))))
+	(with-temp-buffer
+	  (use-local-map keymap)
+	  (describe-bindings))))))
 
 (defun gnus-article-reply-with-original (&optional wide)
   "Start composing a reply mail to the current message.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.