all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: "Drew Adams" <drew.adams@oracle.com>
To: "'Stefan Monnier'" <monnier@iro.umontreal.ca>
Cc: 'Juri Linkov' <juri@jurta.org>, emacs-devel@gnu.org
Subject: RE: breadcrumbs for Info . . . . . .
Date: Fri, 13 Jun 2008 08:11:03 -0700	[thread overview]
Message-ID: <004a01c8cd67$b2f7a9c0$0200a8c0@us.oracle.com> (raw)
In-Reply-To: <jwvprql4fh5.fsf-monnier+emacs@gnu.org>

[-- Attachment #1: Type: text/plain, Size: 140 bytes --]

> > I've shortened all of the lines to 80 max, as you asked - see attachment. 
> 
> Thank you.  Could you provide it as a patch?

Attached.

[-- Attachment #2: info-el-2008-06-12b.patch --]
[-- Type: application/octet-stream, Size: 28130 bytes --]

diff -u -w "info.el" "info-patched-2008-06-12b.el"
--- info.el	2008-06-10 16:24:28.000000000 -0700
+++ info-patched-2008-06-12b.el	2008-06-12 23:11:12.000000000 -0700
@@ -55,7 +55,8 @@
 Each element of the list is a list (FILENAME NODENAME).")
 
 (defcustom Info-enable-edit nil
-  "*Non-nil means the \\<Info-mode-map>\\[Info-edit] command in Info can edit the current node.
+  "*Non-nil means the \\<Info-mode-map>\\[Info-edit] command in Info can \
+edit the current node.
 This is convenient if you want to write Info files by hand.
 However, we recommend that you not do this.
 It is better to write a Texinfo file and generate the Info file from that,
@@ -69,8 +70,10 @@
 (put 'Info-enable-active-nodes 'risky-local-variable t)
 
 (defface info-node
-  '((((class color) (background light)) :foreground "brown" :weight bold :slant italic)
-    (((class color) (background dark)) :foreground "white" :weight bold :slant italic)
+  '((((class color) (background light))
+     :foreground "brown" :weight bold :slant italic)
+    (((class color) (background dark))
+     :foreground "white" :weight bold :slant italic)
     (t :weight bold :slant italic))
   "Face for Info node names."
   :group 'info)
@@ -607,7 +610,7 @@
        (let (beg)
 	 (forward-line 1)
 	 (setq beg (point))
-	 (forward-line 1)		; does the line after delimiter match REGEXP?
+	 (forward-line 1)		; line after delimiter match REGEXP?
 	 (re-search-backward regexp beg t))))
 
 (defun Info-find-file (filename &optional noerror)
@@ -853,7 +856,8 @@
 			     (not (version< (match-string 1) "4.7")))
 			(setq found t))
 		  (error nil))
-		(set (make-local-variable 'Info-file-supports-index-cookies) found))
+		(set (make-local-variable 'Info-file-supports-index-cookies)
+                     found))
 
               ;; See whether file has a tag table.  Record the location if yes.
               (goto-char (point-max))
@@ -964,7 +968,8 @@
 	    (Info-select-node)
 	    (goto-char (point-min))
 	    (cond (anchorpos
-                   (let ((new-history (list Info-current-file
+                   (let ((new-history
+                          (list Info-current-file
                                             (substring-no-properties nodename))))
                      ;; Add anchors to the history too
                      (setq Info-history-list
@@ -1150,7 +1155,8 @@
       (mapc 'kill-buffer (cons buffer buffers))
       (goto-char (point-min))
       (if problems
-	  (message "Composing main Info directory...problems encountered, see `*Messages*'")
+	  (message "Composing main Info directory...problems encountered, \
+see `*Messages*'")
 	(message "Composing main Info directory...done"))
       (set (make-local-variable 'Info-dir-contents) (buffer-string))
       (set (make-local-variable 'Info-dir-file-attributes) dir-file-attrs)))
@@ -1294,7 +1300,8 @@
   (let ((start 0)
 	(parameter-alist))
     (while (string-match
-	    "\\s *\\([^=]+\\)=\\(?:\\([^\\s \"]+\\)\\|\\(?:\"\\(\\(?:[^\\\"]\\|\\\\[\\\\\"]\\)*\\)\"\\)\\)"
+	    "\\s *\\([^=]+\\)=\\(?:\\([^\\s \"]+\\)\\|\\(?:\"\\(\\(?:\
+[^\\\"]\\|\\\\[\\\\\"]\\)*\\)\"\\)\\)"
 	    parameter-string start)
       (setq start (match-end 0))
       (push (cons (match-string 1 parameter-string)
@@ -1445,7 +1452,8 @@
   (info-initialize)
   (if fork
       (set-buffer
-       (clone-buffer (concat "*info-" (if (stringp fork) fork nodename) "*") t)))
+       (clone-buffer (concat "*info-" (if (stringp fork) fork nodename) "*")
+                     t)))
   (let (filename)
     (string-match "\\s *\\((\\s *\\([^\t)]*\\)\\s *)\\s *\\|\\)\\(.*\\)"
 		  nodename)
@@ -1548,9 +1556,9 @@
 		  (set-buffer (marker-buffer marker))
 		  (widen)
 		  (goto-char marker)
-		  (while (re-search-forward "\n\\(Node\\|Ref\\): \\(.*\\)\177" nil t)
-		    (setq compl
-			  (cons (list (match-string-no-properties 2))
+		  (while (re-search-forward
+                          "\n\\(Node\\|Ref\\): \\(.*\\)\177" nil t)
+		    (setq compl (cons (list (match-string-no-properties 2))
 				compl))))
 	      (widen)
 	      (goto-char (point-min))
@@ -1624,7 +1632,8 @@
 			      (point-max)))
 	  (while (and (not give-up)
 		      (or (null found)
-			  (not (funcall isearch-success-function beg-found found))))
+			  (not (funcall isearch-success-function
+                                        beg-found found))))
 	    (let ((search-spaces-regexp
 		   (if (or (not isearch-mode) isearch-regexp)
 		       Info-search-whitespace-regexp)))
@@ -1704,7 +1713,8 @@
 		(setq give-up nil found nil)
 		(while (and (not give-up)
 			    (or (null found)
-				(not (funcall isearch-success-function beg-found found))))
+				(not (funcall isearch-success-function
+                                              beg-found found))))
 		  (let ((search-spaces-regexp
 			 (if (or (not isearch-mode) isearch-regexp)
 			     Info-search-whitespace-regexp)))
@@ -1905,7 +1915,8 @@
 	       (search-forward "\n* Menu:" nil t)
 	       (re-search-forward
 		(if (string-equal old-node "Top")
-		    (concat "\n\\*[^:]+: +(" (file-name-nondirectory old-file) ")")
+		    (concat "\n\\*[^:]+: +("
+                            (file-name-nondirectory old-file) ")")
 		  (concat "\n\\* +\\(" (regexp-quote old-node)
 			  ":\\|[^:]+: +" (regexp-quote old-node) "\\)"))
 		nil t))
@@ -1975,7 +1986,8 @@
                   (setq p (point)))
               (if (stringp file)
 		  (insert "* " node ": ("
-			  (propertize (or (file-name-directory file) "") 'invisible t)
+			  (propertize (or (file-name-directory file) "")
+                                      'invisible t)
 			  (file-name-nondirectory file)
 			  ")" node ".\n")))
             (setq hl (cdr hl))))))
@@ -2056,7 +2068,8 @@
                        (re-search-forward "^\\* Menu:" bound t))
               (forward-line 1)
               (beginning-of-line)
-              (setq bound (or (and (equal nodename "Top")
+              (setq bound
+                    (or (and (equal nodename "Top")
                                    (save-excursion
                                      (re-search-forward
                                       "^[ \t-]*The Detailed Node Listing" nil t)))
@@ -2271,7 +2284,8 @@
              (concat "\n\\* +" (regexp-quote string) ":") nil t)
           (let ((pattern (concat "\n\\* +\\("
                                  (regexp-quote string)
-                                 Info-menu-entry-name-re "\\):" Info-node-spec-re))
+                                 Info-menu-entry-name-re "\\):"
+                                 Info-node-spec-re))
                 completions
                 (complete-nodes Info-complete-nodes))
             ;; Check the cache.
@@ -2706,7 +2720,8 @@
       (not (stringp file))
       (if Info-file-supports-index-cookies
 	  ;; Find nodes with index cookie
-	  (let* ((default-directory (or (and (stringp file)
+	  (let* ((default-directory
+                     (or (and (stringp file)
 					     (file-name-directory
 					      (setq file (Info-find-file file))))
 					default-directory))
@@ -2727,9 +2742,12 @@
 			(save-excursion
 			  (goto-char (point-min))
 			  (if (search-forward "\n\^_\nIndirect:" nil t)
-			      (let ((bound (save-excursion (search-forward "\n\^_" nil t))))
-				(while (re-search-forward "^\\(.*\\): [0-9]+$" bound t)
-				  (setq subfiles (cons (match-string-no-properties 1)
+			      (let ((bound (save-excursion
+                                             (search-forward "\n\^_" nil t))))
+				(while (re-search-forward
+                                        "^\\(.*\\): [0-9]+$" bound t)
+				  (setq subfiles
+                                        (cons (match-string-no-properties 1)
 						       subfiles)))))
 			  (setq subfiles (nreverse subfiles)
 				main-file nil))
@@ -2737,7 +2755,8 @@
 	      (error nil))
 	    (if nodes
 		(setq nodes (nreverse nodes)
-		      Info-index-nodes (cons (cons file nodes) Info-index-nodes)))
+		      Info-index-nodes (cons (cons file nodes)
+                                             Info-index-nodes)))
 	    nodes)
 	;; Else find nodes with the word "Index" in the node name
 	(let ((case-fold-search t)
@@ -2748,7 +2767,8 @@
 		(Info-mode)
 		(Info-find-node file "Top")
 		(when (and (search-forward "\n* menu:" nil t)
-			   (re-search-forward "\n\\* \\(.*\\<Index\\>\\)" nil t))
+			   (re-search-forward
+                            "\n\\* \\(.*\\<Index\\>\\)" nil t))
 		  (goto-char (match-beginning 1))
 		  (setq nodes (list (Info-extract-menu-node-name)))
 		  (Info-goto-node (car nodes))
@@ -2806,7 +2826,8 @@
 	  (Info-complete-nodes (Info-index-nodes))
 	  (Info-history-list nil))
       (if (equal Info-current-file "dir")
-	  (error "The Info directory node has no index; use m to select a manual"))
+	  (error
+           "The Info directory node has no index; use m to select a manual"))
       (unwind-protect
 	  (with-current-buffer Info-complete-menu-buffer
 	    (Info-goto-index)
@@ -2820,7 +2841,8 @@
 	   (= (aref topic 0) ?:))
       (setq topic (substring topic 1)))
   (let ((orignode Info-current-node)
-	(pattern (format "\n\\* +\\([^\n]*%s[^\n]*\\):[ \t]+\\([^\n]*\\)\\.\\(?:[ \t\n]*(line +\\([0-9]+\\))\\)?"
+	(pattern (format "\n\\* +\\([^\n]*%s[^\n]*\\):[ \t]+\\([^\n]*\\)\\.\
+\\(?:[ \t\n]*(line +\\([0-9]+\\))\\)?"
 			 (regexp-quote topic)))
 	node (nodes (Info-index-nodes))
 	(ohist-list Info-history-list)
@@ -2860,7 +2882,8 @@
 	  (Info-index-next 0)))))
 
 (defun Info-index-next (num)
-  "Go to the next matching index item from the last \\<Info-mode-map>\\[Info-index] command."
+  "Go to the next matching index item from the last \
+\\<Info-mode-map>\\[Info-index] command."
   (interactive "p")
   (or Info-index-alternatives
       (error "No previous `i' command"))
@@ -2916,7 +2939,8 @@
 Build a menu of the possible matches."
   (interactive "sIndex apropos: ")
   (unless (string= string "")
-    (let ((pattern (format "\n\\* +\\([^\n]*%s[^\n]*\\):[ \t]+\\([^\n]+\\)\\.\\(?:[ \t\n]*(line +\\([0-9]+\\))\\)?"
+    (let ((pattern (format "\n\\* +\\([^\n]*%s[^\n]*\\):[ \t]+\\([^\n]+\\)\\.\
+\\(?:[ \t\n]*(line +\\([0-9]+\\))\\)?"
 			   (regexp-quote string)))
 	  (ohist Info-history)
 	  (ohist-list Info-history-list)
@@ -3060,7 +3084,8 @@
 
 (defun Info-mouse-follow-nearest-node (click)
   "\\<Info-mode-map>Follow a node reference near point.
-Like \\[Info-menu], \\[Info-follow-reference], \\[Info-next], \\[Info-prev] or \\[Info-up] command, depending on where you click.
+Like \\[Info-menu], \\[Info-follow-reference], \\[Info-next], \\[Info-prev] or \
+\\[Info-up] command, depending on where you click.
 At end of the node's text, moves to the next node, or up if none."
   (interactive "e")
   (mouse-set-point click)
@@ -3096,10 +3121,12 @@
 If FORK is non-nil, it i spassed to `Info-goto-node'."
   (let (node)
     (cond
-     ((Info-get-token (point) "[hf]t?tps?://" "[hf]t?tps?://\\([^ \t\n\"`({<>})']+\\)")
+     ((Info-get-token (point)
+                      "[hf]t?tps?://" "[hf]t?tps?://\\([^ \t\n\"`({<>})']+\\)")
       (setq node t)
       (browse-url (browse-url-url-at-point)))
-     ((setq node (Info-get-token (point) "\\*note[ \n\t]+"
+     ((setq node (Info-get-token
+                  (point) "\\*note[ \n\t]+"
 				 "\\*note[ \n\t]+\\([^:]*\\):\\(:\\|[ \n\t]*(\\)?"))
       (Info-follow-reference node fork))
      ;; menu item: node name
@@ -3241,9 +3268,10 @@
 (defvar info-tool-bar-map
   (if (display-graphic-p)
       (let ((map (make-sparse-keymap)))
-	(tool-bar-local-item-from-menu 'Info-history-back "left-arrow" map Info-mode-map
-				       :rtl "right-arrow")
-	(tool-bar-local-item-from-menu 'Info-history-forward "right-arrow" map Info-mode-map
+	(tool-bar-local-item-from-menu
+         'Info-history-back "left-arrow" map Info-mode-map :rtl "right-arrow")
+	(tool-bar-local-item-from-menu
+         'Info-history-forward "right-arrow" map Info-mode-map
 				       :rtl "left-arrow")
 	(tool-bar-local-item-from-menu 'Info-prev "prev-node" map Info-mode-map
 				       :rtl "next-node")
@@ -3251,7 +3279,8 @@
 				       :rtl "prev-node")
 	(tool-bar-local-item-from-menu 'Info-up "up-node" map Info-mode-map)
 	(tool-bar-local-item-from-menu 'Info-top-node "home" map Info-mode-map)
-	(tool-bar-local-item-from-menu 'Info-goto-node "jump-to" map Info-mode-map)
+	(tool-bar-local-item-from-menu
+         'Info-goto-node "jump-to" map Info-mode-map)
 	(tool-bar-local-item-from-menu 'Info-index "index" map Info-mode-map)
 	(tool-bar-local-item-from-menu 'Info-search "search" map Info-mode-map)
 	(tool-bar-local-item-from-menu 'Info-exit "exit" map Info-mode-map)
@@ -3367,7 +3396,8 @@
 	Follow a node reference you click on.
 	  This works with menu items, cross references, and
 	  the \"next\", \"previous\" and \"up\", depending on where you click.
-\\[Info-follow-nearest-node]	Follow a node reference near point, like \\[Info-mouse-follow-nearest-node].
+\\[Info-follow-nearest-node]	Follow a node reference near point, \
+like \\[Info-mouse-follow-nearest-node].
 \\[Info-next]	Move to the \"next\" node of this node.
 \\[Info-prev]	Move to the \"previous\" node of this node.
 \\[Info-up]	Move \"up\" from this node.
@@ -3376,13 +3406,17 @@
 \\[Info-directory]	Go to the Info directory node.
 \\[Info-top-node]	Go to the Top node of this file.
 \\[Info-final-node]	Go to the final node in this file.
-\\[Info-backward-node]	Go backward one node, considering all nodes as forming one sequence.
-\\[Info-forward-node]	Go forward one node, considering all nodes as forming one sequence.
+\\[Info-backward-node]	Go backward one node, considering all nodes as forming \
+one sequence.
+\\[Info-forward-node]	Go forward one node, considering all nodes as forming \
+one sequence.
 \\[Info-next-reference]	Move cursor to next cross-reference or menu item.
 \\[Info-prev-reference]	Move cursor to previous cross-reference or menu item.
-\\[Info-follow-reference]	Follow a cross reference.  Reads name of reference.
+\\[Info-follow-reference]	Follow a cross reference.  Reads name of \
+reference.
 \\[Info-history-back]	Move back in history to the last node you were at.
-\\[Info-history-forward]	Move forward in history to the node you returned from after using \\[Info-history-back].
+\\[Info-history-forward]	Move forward in history to the node you \
+returned from after using \\[Info-history-back].
 \\[Info-history]	Go to menu of visited nodes.
 \\[Info-toc]	Go to table of contents of the current Info file.
 
@@ -3392,7 +3426,8 @@
 	  screen but after point, the next scroll moves into its first
 	  subnode.  When after all menu items (or if there is no menu),
 	  move up to the parent node.
-\\[Info-scroll-down]	Normally, scroll backward.  If the beginning of the buffer is
+\\[Info-scroll-down]	Normally, scroll backward.  If the beginning of the \
+buffer is
 	  already visible, try to go to the previous menu entry, or up
 	  if there is none.
 \\[beginning-of-buffer]	Go to beginning of node.
@@ -3400,11 +3435,13 @@
 Advanced commands:
 \\[Info-search]	Search through this Info file for specified regexp,
 	  and select the node in which the next occurrence is found.
-\\[Info-search-case-sensitively]	Search through this Info file for specified regexp case-sensitively.
+\\[Info-search-case-sensitively]	Search through this Info file for \
+specified regexp case-sensitively.
 \\[Info-search-next]	Search for another occurrence of regexp
 	  from a previous \\<Info-mode-map>\\[Info-search] command.
 \\[Info-index]	Search for a topic in this manual's Index and go to index entry.
-\\[Info-index-next]	(comma) Move to the next match from a previous \\<Info-mode-map>\\[Info-index] command.
+\\[Info-index-next]	(comma) Move to the next match from a previous \
+\\<Info-mode-map>\\[Info-index] command.
 \\[info-apropos]	Look for a string in the indices of all manuals.
 \\[Info-goto-node]	Move to node specified by name.
 	  You may include a filename as well, as (FILENAME)NODENAME.
@@ -3413,7 +3450,8 @@
 \\[Info-copy-current-node-name]	Put name of current Info node in the kill ring.
 \\[clone-buffer]	Select a new cloned Info buffer in another window.
 \\[universal-argument] \\[info]	Move to new Info file with completion.
-\\[universal-argument] N \\[info]	Select Info buffer with prefix number in the name *info*<N>."
+\\[universal-argument] N \\[info]	Select Info buffer with prefix number \
+in the name *info*<N>."
   (kill-all-local-variables)
   (setq major-mode 'Info-mode)
   (setq mode-name "Info")
@@ -3518,7 +3556,8 @@
       (error "Editing Info nodes is not enabled"))
   (Info-edit-mode)
   (message "%s" (substitute-command-keys
-		 "Editing: Type \\<Info-edit-map>\\[Info-cease-edit] to return to info")))
+		 "Editing: Type \\<Info-edit-map>\\[Info-cease-edit] to return \
+to info")))
 
 (defun Info-cease-edit ()
   "Finish editing Info node; switch back to Info proper."
@@ -3726,7 +3765,8 @@
             (and Info-fontify-visited-nodes
                  ;; Don't take time to refontify visited nodes in huge nodes
 		 Info-fontify-maximum-menu-size
-                 (< (- (point-max) (point-min)) Info-fontify-maximum-menu-size)))
+                 (< (- (point-max) (point-min))
+                    Info-fontify-maximum-menu-size)))
            rbeg rend)
 
       ;; Fontify header line
@@ -3756,6 +3796,32 @@
 		((string-equal (downcase tag) "prev") Info-prev-link-keymap)
 		((string-equal (downcase tag) "next") Info-next-link-keymap)
 		((string-equal (downcase tag) "up"  ) Info-up-link-keymap))))))
+        
+        ;; Add breadcrumbs
+        (unless (string= "Top" Info-current-node)
+          (let ((nod Info-current-node)
+                (onode Info-current-node)
+                (crumbs nil)
+                (done nil))
+            (while (not done)
+              (let ((up (Info-extract-pointer "up")))
+                (cond ((string= "Top" up)
+                       (setq crumbs (if crumbs
+                                        (concat "*Note Top:: > " crumbs)
+                                      "*Note Top::"))
+                       (setq done t))
+                      (t                ; Bind to prevent infinite recursion
+                       (let ((Info-fontify-maximum-menu-size nil))
+                         (Info-goto-node up))
+                       (setq nod Info-current-node)
+                       (when crumbs (setq crumbs (concat " > " crumbs)))
+                       (setq crumbs (concat "*Note " nod ":: " crumbs))))))
+            (let ((Info-fontify-maximum-menu-size nil)) ; Prevent inf. recursion
+                (Info-goto-node onode))
+            (forward-line 1)
+            (insert (concat crumbs "\n\n"))))
+        
+        ;; Treat header line
         (when Info-use-header-line
           (goto-char (point-min))
           (let* ((header-end (line-end-position))
@@ -3791,7 +3857,8 @@
       ;; Fontify titles
       (goto-char (point-min))
       (when (and font-lock-mode not-fontified-p)
-        (while (and (re-search-forward "\n\\([^ \t\n].+\\)\n\\(\\*\\*+\\|==+\\|--+\\|\\.\\.+\\)$"
+        (while (and (re-search-forward
+                     "\n\\([^ \t\n].+\\)\n\\(\\*\\*+\\|==+\\|--+\\|\\.\\.+\\)$"
                                        nil t)
                     ;; Only consider it as an underlined title if the ASCII
                     ;; underline has the same size as the text.  A typical
@@ -3811,19 +3878,22 @@
           ;; frame types at once.  We want this text to be invisible
           ;; on frames that can display the font above.
           (when (memq (framep (selected-frame)) '(x pc w32 mac))
-            (add-text-properties (1- (match-beginning 2)) (match-end 2)
+            (add-text-properties
+             (1- (match-beginning 2)) (match-end 2)
                                  '(invisible t front-sticky nil rear-nonsticky t)))))
 
       ;; Fontify cross references
       (goto-char (point-min))
       (when (or not-fontified-p fontify-visited-p)
-        (while (re-search-forward "\\(\\*Note[ \n\t]+\\)\\([^:]*\\)\\(:[ \t]*\\([^.,:(]*\\)\\(\\(([^)]*)\\)[^.,:]*\\)?[,:]?\n?\\)" nil t)
+        (while (re-search-forward "\\(\\*Note[ \n\t]+\\)\\([^:]*\\)\\(:[ \t]*\
+\\([^.,:(]*\\)\\(\\(([^)]*)\\)[^.,:]*\\)?[,:]?\n?\\)" nil t)
           (let ((start (match-beginning 0))
                 (next (point))
                 other-tag)
             (when not-fontified-p
-              (when Info-hide-note-references
-                (when (not (eq Info-hide-note-references 'hide))
+              (when (or Info-hide-note-references (<= (line-number-at-pos) 4))
+                (when (and (not (eq Info-hide-note-references 'hide))
+                           (> (line-number-at-pos) 4)) ; Skip breadcrumbs
                   ;; *Note is often used where *note should have been
                   (goto-char start)
                   (skip-syntax-backward " ")
@@ -3873,7 +3943,8 @@
                ;; Display visited nodes in a different face
                (if (and Info-fontify-visited-nodes
                         (save-match-data
-                          (let* ((node (replace-regexp-in-string
+                          (let* ((node
+                                  (replace-regexp-in-string
                                         "^[ \t]+" ""
                                         (replace-regexp-in-string
                                          "[ \t\n]+" " "
@@ -3882,7 +3953,8 @@
                                                   (match-string-no-properties 4))
                                              (match-string-no-properties 2)))))
 				 (external-link-p
-				  (string-match "(\\([^)]+\\))\\([^)]*\\)" node))
+				  (string-match "(\\([^)]+\\))\\([^)]*\\)"
+                                                node))
                                  (file (if external-link-p
 					   (file-name-nondirectory
 					    (match-string-no-properties 1 node))
@@ -3890,7 +3962,8 @@
                                  (hl Info-history-list)
                                  res)
                             (if external-link-p
-				(setq node (if (equal (match-string 2 node) "")
+				(setq node
+                                      (if (equal (match-string 2 node) "")
                                                "Top"
                                              (match-string-no-properties 2 node))))
 			    (while hl
@@ -3913,12 +3986,17 @@
                                             (match-end 0)
                                             '(font-lock-face t))))))
             (when not-fontified-p
-              (when (memq Info-hide-note-references '(t hide))
-                (add-text-properties (match-beginning 3) (match-end 3)
+              (when (or (memq Info-hide-note-references '(t hide))
+                          (<= (line-number-at-pos) 4))
+                (add-text-properties
+                 (match-beginning 3) (match-end 3)
                                      '(invisible t front-sticky nil rear-nonsticky t))
                 ;; Unhide the file name of the external reference in parens
-                (if (and (match-string 6) (not (eq Info-hide-note-references 'hide)))
-                    (remove-text-properties (match-beginning 6) (match-end 6)
+                (if (and (match-string 6)
+                         (not (eq Info-hide-note-references 'hide))
+                         (> (line-number-at-pos) 4))
+                    (remove-text-properties
+                     (match-beginning 6) (match-end 6)
                                             '(invisible t front-sticky nil rear-nonsticky t)))
                 ;; Unhide newline because hidden newlines cause too long lines
                 (save-match-data
@@ -3929,10 +4007,13 @@
                                     (save-excursion
                                       (goto-char (1+ end3))
                                       (looking-at "[.)]*$")))))
-                        (remove-text-properties (+ beg3 (match-beginning 0))
+                        (remove-text-properties
+                         (+ beg3 (match-beginning 0))
                                                 (+ beg3 (match-end 0))
                                                 '(invisible t front-sticky nil rear-nonsticky t))))))
-              (when (and Info-refill-paragraphs Info-hide-note-references)
+              (when (and Info-refill-paragraphs
+                         (or Info-hide-note-references
+                               (<= (line-number-at-pos) 4)))
                 (push (set-marker (make-marker) start)
                       paragraph-markers))))))
 
@@ -3966,13 +4047,14 @@
         (let ((n 0)
               cont)
           (while (re-search-forward
-                  (concat "^\\* Menu:\\|\\(?:^\\* +\\(" 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 (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
+		(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-star)))
@@ -3996,15 +4078,18 @@
 					     (match-string-no-properties 1)
 					   (match-string-no-properties 3)))
 				   (external-link-p
-				    (string-match "(\\([^)]+\\))\\([^)]*\\)" node))
+				    (string-match "(\\([^)]+\\))\\([^)]*\\)"
+                                                  node))
 				   (file (if external-link-p
 					     (file-name-nondirectory
-					      (match-string-no-properties 1 node))
+					      (match-string-no-properties
+                                               1 node))
 					   Info-current-file))
 				   (hl Info-history-list)
 				   res)
                               (if external-link-p
-                                  (setq node (if (equal (match-string 2 node) "")
+                                  (setq node
+                                        (if (equal (match-string 2 node) "")
                                                  "Top"
                                                (match-string-no-properties 2 node))))
 			      (while hl
@@ -4019,7 +4104,8 @@
 				  (setq hl (cdr hl))))
                               res))) 'info-xref-visited 'info-xref)))
 	      (when (and not-fontified-p
-			 (memq Info-hide-note-references '(t hide))
+			 (or (memq Info-hide-note-references '(t hide))
+                               (<= (line-number-at-pos) 4))
 			 (not (Info-index-node)))
 		(put-text-property (match-beginning 2) (1- (match-end 6))
 				   'invisible t)
@@ -4069,8 +4155,8 @@
         (while (re-search-forward "\\(https?\\|ftp\\)://[^ \t\n\"`({<>})']+"
                                   nil t)
           (add-text-properties (match-beginning 0) (match-end 0)
-                               '(font-lock-face info-xref
-                                                mouse-face highlight
+                               '(font-lock-face
+                                 info-xref mouse-face highlight
                                                 help-echo "mouse-2: go to this URL"))))
 
       (set-buffer-modified-p nil))))

Diff finished at Fri Jun 13 07:36:56

  reply	other threads:[~2008-06-13 15:11 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-06-10 23:52 breadcrumbs for Info . . . . . Drew Adams
2008-06-11  0:04 ` Juri Linkov
2008-06-11  3:18   ` Drew Adams
2008-06-11  9:34     ` Juri Linkov
2008-06-11 13:46       ` Drew Adams
2008-06-11 18:59         ` Eli Zaretskii
2008-06-11 22:40         ` Juri Linkov
2008-06-12  2:01           ` Miles Bader
2008-06-12 22:42           ` Drew Adams
2008-06-13  3:27             ` Stefan Monnier
2008-06-13  6:34               ` Drew Adams
2008-06-13  8:43                 ` Thien-Thi Nguyen
2008-06-13 13:55                   ` Drew Adams
2008-06-13 17:17                     ` Thien-Thi Nguyen
2008-06-13 17:52                       ` Drew Adams
2008-06-13 19:55                         ` Thien-Thi Nguyen
2008-06-13 20:10                           ` Drew Adams
2008-06-15 18:19                           ` Juri Linkov
2008-06-13 14:05                   ` Stefan Monnier
2008-06-13 15:12                     ` Drew Adams
2008-06-13 17:16                       ` Stefan Monnier
2008-06-13 18:32                     ` Thien-Thi Nguyen
2008-06-14  9:47                       ` Eli Zaretskii
2008-06-14 10:01                         ` Thien-Thi Nguyen
2008-06-13 13:58                 ` Stefan Monnier
2008-06-13 15:11                   ` Drew Adams [this message]
2008-06-13 20:34                     ` Stefan Monnier
2008-06-13 22:11                       ` Drew Adams
2008-06-13 22:44                         ` Stefan Monnier
2008-06-14  9:45                           ` Drew Adams
2008-06-14 16:16                             ` Stefan Monnier
2008-06-14 17:24                               ` Drew Adams
2008-06-14 18:04                                 ` Stefan Monnier
2008-06-15  0:27                                 ` Juri Linkov
2008-06-15  7:33                                   ` Drew Adams
2008-06-15 18:23                                     ` Juri Linkov
2008-06-15 19:46                                       ` Drew Adams
2008-06-15  0:28                       ` Juri Linkov
2008-06-15  2:04                         ` Stefan Monnier
2008-06-15 18:18                           ` Juri Linkov
2008-06-15  7:55                         ` Drew Adams

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='004a01c8cd67$b2f7a9c0$0200a8c0@us.oracle.com' \
    --to=drew.adams@oracle.com \
    --cc=emacs-devel@gnu.org \
    --cc=juri@jurta.org \
    --cc=monnier@iro.umontreal.ca \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.