changeset 21385:a14e82c3a69e

(help-make-xrefs): Grok commands in keymap table expansions. (help-xref-button): Simplify. (help-make-xrefs): Set overriding keymap properly.
author Dave Love <fx@gnu.org>
date Mon, 06 Apr 1998 09:56:55 +0000
parents f245110aa619
children 49b24e54a5fa
files lisp/help.el
diffstat 1 files changed, 32 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/help.el	Mon Apr 06 09:49:37 1998 +0000
+++ b/lisp/help.el	Mon Apr 06 09:56:55 1998 +0000
@@ -937,7 +937,29 @@
                         "\\<M-x\\s-+\\(\\sw\\(\\sw\\|\\s_\\)+\\)" nil t)
                   (let ((sym (intern-soft (match-string 1))))
                     (if (fboundp sym)
-                        (help-xref-button 1 #'describe-function sym))))))
+                        (help-xref-button 1 #'describe-function sym)))))
+              ;; Look for commands in whole keymap substitutions:
+              (save-excursion
+                ;; Find a header and the column at which the command
+                ;; name will be found.
+                (while (re-search-forward "^key +binding\n\\(-+ +\\)-+\n\n" 
+                                          nil t)
+                  (let ((col (- (match-end 1) (match-beginning 1))))
+                    (while
+                        ;; Ignore single blank lines in table, but not
+                        ;; double ones, which should terminate it.
+                        (and (looking-at "^\n?[^\n]")
+                             (progn
+                               (if (and (> (move-to-column col) 0)
+                                        (looking-at "\\(\\sw\\|\\s_\\)+$"))
+                                   ;; 
+                                   (let ((sym (intern-soft (match-string 0))))
+                                     (if (fboundp sym)
+                                         (help-xref-button 
+                                          0 #'describe-function sym))))
+                               t)
+                             (zerop (forward-line))
+                             (move-to-column 0)))))))
           (set-syntax-table stab))
         ;; Make a back-reference in this buffer if appropriate.
         (when help-xref-stack
@@ -951,6 +973,7 @@
       (set (make-local-variable 'minor-mode-overriding-map-alist)
            (list (cons 'view-mode
                        (let ((map (make-sparse-keymap)))
+                         (set-keymap-parent map view-mode-map)
                          (define-key map "\r" 'help-follow)
                          map))))
       (set-buffer-modified-p old-modified))))
@@ -962,19 +985,17 @@
 regexp.  FUNCTION is a function to invoke when the button is
 activated, applied to DATA.  DATA may be a single value or a list.
 See `help-make-xrefs'."
-  (put-text-property (match-beginning match-number)
+  (add-text-properties (match-beginning match-number)
                      (match-end match-number)
-                     'mouse-face 'highlight)
-  (if help-highlight-p
-      (put-text-property (match-beginning match-number)
-                         (match-end match-number)
-                         'face help-highlight-face))
-  (put-text-property (match-beginning match-number)
-                     (match-end match-number)
+                       (list 'mouse-face 'highlight  
                      'help-xref (cons function
                                       (if (listp data)
                                           data
                                         (list data)))))
+  (if help-highlight-p
+      (put-text-property (match-beginning match-number)
+                         (match-end match-number)
+                         'face help-highlight-face)))
 
 
 ;; Additional functions for (re-)creating types of help buffers.
@@ -1048,8 +1069,8 @@
   (let (pos)
     (while (not pos) 
       (if (get-text-property (point) 'help-xref) ; move off reference
-	  (or (goto-char (next-single-property-change (point) 'help-xref))
-              (point)))
+	   (goto-char (or (next-single-property-change (point) 'help-xref)
+                          (point))))
       (cond ((setq pos (next-single-property-change (point) 'help-xref))
 	     (if pos (goto-char pos)))
 	    ((bobp)