]> code.delx.au - gnu-emacs/commitdiff
(Info-fontify-node): Handle fontification of multiple * Menu lines in one node.
authorRichard M. Stallman <rms@gnu.org>
Sun, 10 Apr 2005 23:31:17 +0000 (23:31 +0000)
committerRichard M. Stallman <rms@gnu.org>
Sun, 10 Apr 2005 23:31:17 +0000 (23:31 +0000)
lisp/info.el

index 81494a167bb194a57a99bc384704ee6beb708b59..3ded620cb7aed169b472011db37278e700dd5203 100644 (file)
@@ -3799,77 +3799,78 @@ Preserve text properties."
         (let ((n 0)
               cont)
           (while (re-search-forward
-                  (concat "^\\* +\\(" Info-menu-entry-name-re "\\)\\(:"
-                          Info-node-spec-re "\\([ \t]*\\)\\)")
+                  (concat "^\\* Menu:\\|\\(?:^\\* +\\(" Info-menu-entry-name-re "\\)\\(:"
+                          Info-node-spec-re "\\([ \t]*\\)\\)\\)")
                   nil t)
-            (when not-fontified-p
-              (setq n (1+ n))
-              (if (and (<= n 9) (zerop (% n 3))) ; visual aids to help with 1-9 keys
-                  (put-text-property (match-beginning 0)
-                                     (1+ (match-beginning 0))
-                                     'font-lock-face 'info-menu-5)))
-            (when not-fontified-p
-              (add-text-properties
-               (match-beginning 1) (match-end 1)
-               (list
-                'help-echo (if (and (match-end 3)
-                                    (not (equal (match-string 3) "")))
-                               (concat "mouse-2: go to " (match-string 3))
-                             "mouse-2: go to this node")
-                'mouse-face 'highlight)))
-            (when (or not-fontified-p fontify-visited-p)
-              (add-text-properties
-               (match-beginning 1) (match-end 1)
-               (list
-                'font-lock-face
-                ;; Display visited menu items in a different face
-                (if (and Info-fontify-visited-nodes
-                         (save-match-data
-                           (let ((node (if (equal (match-string 3) "")
-                                           (match-string 1)
-                                         (match-string 3)))
-                                 (file (file-name-nondirectory Info-current-file))
-                                 (hl Info-history-list)
-                                 res)
-                             (if (string-match "(\\([^)]+\\))\\([^)]*\\)" node)
-                                 (setq file (file-name-nondirectory
-                                             (match-string 1 node))
-                                       node (if (equal (match-string 2 node) "")
-                                                "Top"
-                                              (match-string 2 node))))
-                             (while hl
-                               (if (and (string-equal node (nth 1 (car hl)))
-                                        (string-equal file
-                                                      (file-name-nondirectory
-                                                       (nth 0 (car hl)))))
-                                   (setq res (car hl) hl nil)
-                                 (setq hl (cdr hl))))
-                             res))) 'info-xref-visited 'info-xref))))
-            (when (and not-fontified-p (memq Info-hide-note-references '(t hide)))
-              (put-text-property (match-beginning 2) (1- (match-end 6))
-                                 'invisible t)
-              ;; Unhide the file name in parens
-              (if (and (match-end 4) (not (eq (char-after (match-end 4)) ?.)))
-                  (remove-text-properties (match-beginning 4) (match-end 4)
-                                          '(invisible t)))
-              ;; We need a stretchable space like :align-to but with
-              ;; a minimum value.
-              (put-text-property (1- (match-end 6)) (match-end 6) 'display
-                                 (if (>= 22 (- (match-end 1)
-                                               (match-beginning 0)))
-                                     '(space :align-to 24)
-                                   '(space :width 2)))
-              (setq cont (looking-at "."))
-              (while (and (= (forward-line 1) 0)
-                          (looking-at "\\([ \t]+\\)[^*\n]"))
-                (put-text-property (match-beginning 1) (1- (match-end 1))
-                                   'invisible t)
-                (put-text-property (1- (match-end 1)) (match-end 1)
-                                   'display
-                                   (if cont
-                                       '(space :align-to 26)
-                                     '(space :align-to 24)))
-                (setq cont t))))))
+           (when (match-beginning 1)
+             (when not-fontified-p
+               (setq n (1+ n))
+               (if (and (<= n 9) (zerop (% n 3))) ; visual aids to help with 1-9 keys
+                   (put-text-property (match-beginning 0)
+                                      (1+ (match-beginning 0))
+                                      'font-lock-face 'info-menu-5)))
+             (when not-fontified-p
+               (add-text-properties
+                (match-beginning 1) (match-end 1)
+                (list
+                 'help-echo (if (and (match-end 3)
+                                     (not (equal (match-string 3) "")))
+                                (concat "mouse-2: go to " (match-string 3))
+                              "mouse-2: go to this node")
+                 'mouse-face 'highlight)))
+             (when (or not-fontified-p fontify-visited-p)
+               (add-text-properties
+                (match-beginning 1) (match-end 1)
+                (list
+                 'font-lock-face
+                 ;; Display visited menu items in a different face
+                 (if (and Info-fontify-visited-nodes
+                          (save-match-data
+                            (let ((node (if (equal (match-string 3) "")
+                                            (match-string 1)
+                                          (match-string 3)))
+                                  (file (file-name-nondirectory Info-current-file))
+                                  (hl Info-history-list)
+                                  res)
+                              (if (string-match "(\\([^)]+\\))\\([^)]*\\)" node)
+                                  (setq file (file-name-nondirectory
+                                              (match-string 1 node))
+                                        node (if (equal (match-string 2 node) "")
+                                                 "Top"
+                                               (match-string 2 node))))
+                              (while hl
+                                (if (and (string-equal node (nth 1 (car hl)))
+                                         (string-equal file
+                                                       (file-name-nondirectory
+                                                        (nth 0 (car hl)))))
+                                    (setq res (car hl) hl nil)
+                                  (setq hl (cdr hl))))
+                              res))) 'info-xref-visited 'info-xref))))
+             (when (and not-fontified-p (memq Info-hide-note-references '(t hide)))
+               (put-text-property (match-beginning 2) (1- (match-end 6))
+                                  'invisible t)
+               ;; Unhide the file name in parens
+               (if (and (match-end 4) (not (eq (char-after (match-end 4)) ?.)))
+                   (remove-text-properties (match-beginning 4) (match-end 4)
+                                           '(invisible t)))
+               ;; We need a stretchable space like :align-to but with
+               ;; a minimum value.
+               (put-text-property (1- (match-end 6)) (match-end 6) 'display
+                                  (if (>= 22 (- (match-end 1)
+                                                (match-beginning 0)))
+                                      '(space :align-to 24)
+                                    '(space :width 2)))
+               (setq cont (looking-at "."))
+               (while (and (= (forward-line 1) 0)
+                           (looking-at "\\([ \t]+\\)[^*\n]"))
+                 (put-text-property (match-beginning 1) (1- (match-end 1))
+                                    'invisible t)
+                 (put-text-property (1- (match-end 1)) (match-end 1)
+                                    'display
+                                    (if cont
+                                        '(space :align-to 26)
+                                      '(space :align-to 24)))
+                 (setq cont t)))))))
 
       ;; Fontify menu headers
       ;; Add the face `info-menu-header' to any header before a menu entry