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
next prev parent 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.