From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: "Drew Adams" Newsgroups: gmane.emacs.devel Subject: RE: breadcrumbs for Info . . . . . . Date: Fri, 13 Jun 2008 08:11:03 -0700 Message-ID: <004a01c8cd67$b2f7a9c0$0200a8c0@us.oracle.com> References: <009d01c8cb55$13d53e20$0200a8c0@us.oracle.com><87fxrkltma.fsf@jurta.org><00ae01c8cb71$c26aeef0$0200a8c0@us.oracle.com><873ankqou6.fsf@jurta.org><00d901c8cbc9$7df36fb0$0200a8c0@us.oracle.com><87tzfzk331.fsf@jurta.org><00a501c8ccdd$93328720$c2b22382@us.oracle.com><002401c8cd1f$98631650$0200a8c0@us.oracle.com> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_004B_01C8CD2D.0698D1C0" X-Trace: ger.gmane.org 1213369900 11698 80.91.229.12 (13 Jun 2008 15:11:40 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Fri, 13 Jun 2008 15:11:40 +0000 (UTC) Cc: 'Juri Linkov' , emacs-devel@gnu.org To: "'Stefan Monnier'" Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Fri Jun 13 17:12:13 2008 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1K7Awl-0000KW-8I for ged-emacs-devel@m.gmane.org; Fri, 13 Jun 2008 17:12:12 +0200 Original-Received: from localhost ([127.0.0.1]:43478 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1K7Avx-0000j6-5k for ged-emacs-devel@m.gmane.org; Fri, 13 Jun 2008 11:11:21 -0400 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1K7Avm-0000aV-7t for emacs-devel@gnu.org; Fri, 13 Jun 2008 11:11:10 -0400 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1K7Avk-0000Xj-Ad for emacs-devel@gnu.org; Fri, 13 Jun 2008 11:11:09 -0400 Original-Received: from [199.232.76.173] (port=36953 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1K7Avj-0000XA-NM for emacs-devel@gnu.org; Fri, 13 Jun 2008 11:11:07 -0400 Original-Received: from rgminet01.oracle.com ([148.87.113.118]:32124) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1K7Avj-0005eO-4c for emacs-devel@gnu.org; Fri, 13 Jun 2008 11:11:07 -0400 Original-Received: from agmgw2.us.oracle.com (agmgw2.us.oracle.com [152.68.180.213]) by rgminet01.oracle.com (Switch-3.2.4/Switch-3.1.6) with ESMTP id m5DFB46x029858; Fri, 13 Jun 2008 09:11:04 -0600 Original-Received: from acsmt351.oracle.com (acsmt351.oracle.com [141.146.40.151]) by agmgw2.us.oracle.com (Switch-3.2.0/Switch-3.2.0) with ESMTP id m5CFFg07008185; Fri, 13 Jun 2008 09:11:03 -0600 Original-Received: from inet-141-146-46-1.oracle.com by acsmt350.oracle.com with ESMTP id 3693374191213369863; Fri, 13 Jun 2008 08:11:03 -0700 Original-Received: from dradamslap1 (/24.5.171.3) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Fri, 13 Jun 2008 08:11:02 -0700 X-Mailer: Microsoft Office Outlook 11 In-Reply-To: Thread-Index: AcjNXelP8W3tessoRimHAPxyITgO0AABMQ9A X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.3198 X-Brightmail-Tracker: AAAAAQAAAAI= X-Brightmail-Tracker: AAAAAQAAAAI= X-Whitelist: TRUE X-Whitelist: TRUE X-detected-kernel: by monty-python.gnu.org: Linux 2.4-2.6 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:99109 Archived-At: This is a multi-part message in MIME format. ------=_NextPart_000_004B_01C8CD2D.0698D1C0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit > > 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. ------=_NextPart_000_004B_01C8CD2D.0698D1C0 Content-Type: application/octet-stream; name="info-el-2008-06-12b.patch" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="info-el-2008-06-12b.patch" diff -u -w "info.el" "info-patched-2008-06-12b.el"=0A= --- info.el 2008-06-10 16:24:28.000000000 -0700=0A= +++ info-patched-2008-06-12b.el 2008-06-12 23:11:12.000000000 -0700=0A= @@ -55,7 +55,8 @@=0A= Each element of the list is a list (FILENAME NODENAME).")=0A= =0A= (defcustom Info-enable-edit nil=0A= - "*Non-nil means the \\\\[Info-edit] command in Info = can edit the current node.=0A= + "*Non-nil means the \\\\[Info-edit] command in Info = can \=0A= +edit the current node.=0A= This is convenient if you want to write Info files by hand.=0A= However, we recommend that you not do this.=0A= It is better to write a Texinfo file and generate the Info file from = that,=0A= @@ -69,8 +70,10 @@=0A= (put 'Info-enable-active-nodes 'risky-local-variable t)=0A= =0A= (defface info-node=0A= - '((((class color) (background light)) :foreground "brown" :weight = bold :slant italic)=0A= - (((class color) (background dark)) :foreground "white" :weight bold = :slant italic)=0A= + '((((class color) (background light))=0A= + :foreground "brown" :weight bold :slant italic)=0A= + (((class color) (background dark))=0A= + :foreground "white" :weight bold :slant italic)=0A= (t :weight bold :slant italic))=0A= "Face for Info node names."=0A= :group 'info)=0A= @@ -607,7 +610,7 @@=0A= (let (beg)=0A= (forward-line 1)=0A= (setq beg (point))=0A= - (forward-line 1) ; does the line after delimiter match REGEXP?=0A= + (forward-line 1) ; line after delimiter match REGEXP?=0A= (re-search-backward regexp beg t))))=0A= =0A= (defun Info-find-file (filename &optional noerror)=0A= @@ -853,7 +856,8 @@=0A= (not (version< (match-string 1) "4.7")))=0A= (setq found t))=0A= (error nil))=0A= - (set (make-local-variable 'Info-file-supports-index-cookies) found))=0A= + (set (make-local-variable 'Info-file-supports-index-cookies)=0A= + found))=0A= =0A= ;; See whether file has a tag table. Record the location = if yes.=0A= (goto-char (point-max))=0A= @@ -964,7 +968,8 @@=0A= (Info-select-node)=0A= (goto-char (point-min))=0A= (cond (anchorpos=0A= - (let ((new-history (list Info-current-file=0A= + (let ((new-history=0A= + (list Info-current-file=0A= (substring-no-properties = nodename))))=0A= ;; Add anchors to the history too=0A= (setq Info-history-list=0A= @@ -1150,7 +1155,8 @@=0A= (mapc 'kill-buffer (cons buffer buffers))=0A= (goto-char (point-min))=0A= (if problems=0A= - (message "Composing main Info directory...problems encountered, see = `*Messages*'")=0A= + (message "Composing main Info directory...problems encountered, \=0A= +see `*Messages*'")=0A= (message "Composing main Info directory...done"))=0A= (set (make-local-variable 'Info-dir-contents) (buffer-string))=0A= (set (make-local-variable 'Info-dir-file-attributes) = dir-file-attrs)))=0A= @@ -1294,7 +1300,8 @@=0A= (let ((start 0)=0A= (parameter-alist))=0A= (while (string-match=0A= - "\\s *\\([^=3D]+\\)=3D\\(?:\\([^\\s = \"]+\\)\\|\\(?:\"\\(\\(?:[^\\\"]\\|\\\\[\\\\\"]\\)*\\)\"\\)\\)"=0A= + "\\s *\\([^=3D]+\\)=3D\\(?:\\([^\\s \"]+\\)\\|\\(?:\"\\(\\(?:\=0A= +[^\\\"]\\|\\\\[\\\\\"]\\)*\\)\"\\)\\)"=0A= parameter-string start)=0A= (setq start (match-end 0))=0A= (push (cons (match-string 1 parameter-string)=0A= @@ -1445,7 +1452,8 @@=0A= (info-initialize)=0A= (if fork=0A= (set-buffer=0A= - (clone-buffer (concat "*info-" (if (stringp fork) fork nodename) = "*") t)))=0A= + (clone-buffer (concat "*info-" (if (stringp fork) fork nodename) = "*")=0A= + t)))=0A= (let (filename)=0A= (string-match "\\s *\\((\\s *\\([^\t)]*\\)\\s *)\\s *\\|\\)\\(.*\\)"=0A= nodename)=0A= @@ -1548,9 +1556,9 @@=0A= (set-buffer (marker-buffer marker))=0A= (widen)=0A= (goto-char marker)=0A= - (while (re-search-forward "\n\\(Node\\|Ref\\): \\(.*\\)\177" nil t)=0A= - (setq compl=0A= - (cons (list (match-string-no-properties 2))=0A= + (while (re-search-forward=0A= + "\n\\(Node\\|Ref\\): \\(.*\\)\177" nil t)=0A= + (setq compl (cons (list (match-string-no-properties 2))=0A= compl))))=0A= (widen)=0A= (goto-char (point-min))=0A= @@ -1624,7 +1632,8 @@=0A= (point-max)))=0A= (while (and (not give-up)=0A= (or (null found)=0A= - (not (funcall isearch-success-function beg-found found))))=0A= + (not (funcall isearch-success-function=0A= + beg-found found))))=0A= (let ((search-spaces-regexp=0A= (if (or (not isearch-mode) isearch-regexp)=0A= Info-search-whitespace-regexp)))=0A= @@ -1704,7 +1713,8 @@=0A= (setq give-up nil found nil)=0A= (while (and (not give-up)=0A= (or (null found)=0A= - (not (funcall isearch-success-function beg-found found))))=0A= + (not (funcall isearch-success-function=0A= + beg-found found))))=0A= (let ((search-spaces-regexp=0A= (if (or (not isearch-mode) isearch-regexp)=0A= Info-search-whitespace-regexp)))=0A= @@ -1905,7 +1915,8 @@=0A= (search-forward "\n* Menu:" nil t)=0A= (re-search-forward=0A= (if (string-equal old-node "Top")=0A= - (concat "\n\\*[^:]+: +(" (file-name-nondirectory old-file) ")")=0A= + (concat "\n\\*[^:]+: +("=0A= + (file-name-nondirectory old-file) ")")=0A= (concat "\n\\* +\\(" (regexp-quote old-node)=0A= ":\\|[^:]+: +" (regexp-quote old-node) "\\)"))=0A= nil t))=0A= @@ -1975,7 +1986,8 @@=0A= (setq p (point)))=0A= (if (stringp file)=0A= (insert "* " node ": ("=0A= - (propertize (or (file-name-directory file) "") 'invisible t)=0A= + (propertize (or (file-name-directory file) "")=0A= + 'invisible t)=0A= (file-name-nondirectory file)=0A= ")" node ".\n")))=0A= (setq hl (cdr hl))))))=0A= @@ -2056,7 +2068,8 @@=0A= (re-search-forward "^\\* Menu:" bound t))=0A= (forward-line 1)=0A= (beginning-of-line)=0A= - (setq bound (or (and (equal nodename "Top")=0A= + (setq bound=0A= + (or (and (equal nodename "Top")=0A= (save-excursion=0A= (re-search-forward=0A= "^[ \t-]*The Detailed Node = Listing" nil t)))=0A= @@ -2271,7 +2284,8 @@=0A= (concat "\n\\* +" (regexp-quote string) ":") nil t)=0A= (let ((pattern (concat "\n\\* +\\("=0A= (regexp-quote string)=0A= - Info-menu-entry-name-re "\\):" = Info-node-spec-re))=0A= + Info-menu-entry-name-re "\\):"=0A= + Info-node-spec-re))=0A= completions=0A= (complete-nodes Info-complete-nodes))=0A= ;; Check the cache.=0A= @@ -2706,7 +2720,8 @@=0A= (not (stringp file))=0A= (if Info-file-supports-index-cookies=0A= ;; Find nodes with index cookie=0A= - (let* ((default-directory (or (and (stringp file)=0A= + (let* ((default-directory=0A= + (or (and (stringp file)=0A= (file-name-directory=0A= (setq file (Info-find-file file))))=0A= default-directory))=0A= @@ -2727,9 +2742,12 @@=0A= (save-excursion=0A= (goto-char (point-min))=0A= (if (search-forward "\n\^_\nIndirect:" nil t)=0A= - (let ((bound (save-excursion (search-forward "\n\^_" nil t))))=0A= - (while (re-search-forward "^\\(.*\\): [0-9]+$" bound t)=0A= - (setq subfiles (cons (match-string-no-properties 1)=0A= + (let ((bound (save-excursion=0A= + (search-forward "\n\^_" = nil t))))=0A= + (while (re-search-forward=0A= + "^\\(.*\\): [0-9]+$" bound t)=0A= + (setq subfiles=0A= + (cons = (match-string-no-properties 1)=0A= subfiles)))))=0A= (setq subfiles (nreverse subfiles)=0A= main-file nil))=0A= @@ -2737,7 +2755,8 @@=0A= (error nil))=0A= (if nodes=0A= (setq nodes (nreverse nodes)=0A= - Info-index-nodes (cons (cons file nodes) Info-index-nodes)))=0A= + Info-index-nodes (cons (cons file nodes)=0A= + Info-index-nodes)))=0A= nodes)=0A= ;; Else find nodes with the word "Index" in the node name=0A= (let ((case-fold-search t)=0A= @@ -2748,7 +2767,8 @@=0A= (Info-mode)=0A= (Info-find-node file "Top")=0A= (when (and (search-forward "\n* menu:" nil t)=0A= - (re-search-forward "\n\\* \\(.*\\\\)" nil t))=0A= + (re-search-forward=0A= + "\n\\* \\(.*\\\\)" nil t))=0A= (goto-char (match-beginning 1))=0A= (setq nodes (list (Info-extract-menu-node-name)))=0A= (Info-goto-node (car nodes))=0A= @@ -2806,7 +2826,8 @@=0A= (Info-complete-nodes (Info-index-nodes))=0A= (Info-history-list nil))=0A= (if (equal Info-current-file "dir")=0A= - (error "The Info directory node has no index; use m to select a = manual"))=0A= + (error=0A= + "The Info directory node has no index; use m to select a = manual"))=0A= (unwind-protect=0A= (with-current-buffer Info-complete-menu-buffer=0A= (Info-goto-index)=0A= @@ -2820,7 +2841,8 @@=0A= (=3D (aref topic 0) ?:))=0A= (setq topic (substring topic 1)))=0A= (let ((orignode Info-current-node)=0A= - (pattern (format "\n\\* +\\([^\n]*%s[^\n]*\\):[ = \t]+\\([^\n]*\\)\\.\\(?:[ \t\n]*(line +\\([0-9]+\\))\\)?"=0A= + (pattern (format "\n\\* +\\([^\n]*%s[^\n]*\\):[ \t]+\\([^\n]*\\)\\.\=0A= +\\(?:[ \t\n]*(line +\\([0-9]+\\))\\)?"=0A= (regexp-quote topic)))=0A= node (nodes (Info-index-nodes))=0A= (ohist-list Info-history-list)=0A= @@ -2860,7 +2882,8 @@=0A= (Info-index-next 0)))))=0A= =0A= (defun Info-index-next (num)=0A= - "Go to the next matching index item from the last = \\\\[Info-index] command."=0A= + "Go to the next matching index item from the last \=0A= +\\\\[Info-index] command."=0A= (interactive "p")=0A= (or Info-index-alternatives=0A= (error "No previous `i' command"))=0A= @@ -2916,7 +2939,8 @@=0A= Build a menu of the possible matches."=0A= (interactive "sIndex apropos: ")=0A= (unless (string=3D string "")=0A= - (let ((pattern (format "\n\\* +\\([^\n]*%s[^\n]*\\):[ = \t]+\\([^\n]+\\)\\.\\(?:[ \t\n]*(line +\\([0-9]+\\))\\)?"=0A= + (let ((pattern (format "\n\\* +\\([^\n]*%s[^\n]*\\):[ = \t]+\\([^\n]+\\)\\.\=0A= +\\(?:[ \t\n]*(line +\\([0-9]+\\))\\)?"=0A= (regexp-quote string)))=0A= (ohist Info-history)=0A= (ohist-list Info-history-list)=0A= @@ -3060,7 +3084,8 @@=0A= =0A= (defun Info-mouse-follow-nearest-node (click)=0A= "\\Follow a node reference near point.=0A= -Like \\[Info-menu], \\[Info-follow-reference], \\[Info-next], = \\[Info-prev] or \\[Info-up] command, depending on where you click.=0A= +Like \\[Info-menu], \\[Info-follow-reference], \\[Info-next], = \\[Info-prev] or \=0A= +\\[Info-up] command, depending on where you click.=0A= At end of the node's text, moves to the next node, or up if none."=0A= (interactive "e")=0A= (mouse-set-point click)=0A= @@ -3096,10 +3121,12 @@=0A= If FORK is non-nil, it i spassed to `Info-goto-node'."=0A= (let (node)=0A= (cond=0A= - ((Info-get-token (point) "[hf]t?tps?://" "[hf]t?tps?://\\([^ = \t\n\"`({<>})']+\\)")=0A= + ((Info-get-token (point)=0A= + "[hf]t?tps?://" "[hf]t?tps?://\\([^ = \t\n\"`({<>})']+\\)")=0A= (setq node t)=0A= (browse-url (browse-url-url-at-point)))=0A= - ((setq node (Info-get-token (point) "\\*note[ \n\t]+"=0A= + ((setq node (Info-get-token=0A= + (point) "\\*note[ \n\t]+"=0A= "\\*note[ \n\t]+\\([^:]*\\):\\(:\\|[ \n\t]*(\\)?"))=0A= (Info-follow-reference node fork))=0A= ;; menu item: node name=0A= @@ -3241,9 +3268,10 @@=0A= (defvar info-tool-bar-map=0A= (if (display-graphic-p)=0A= (let ((map (make-sparse-keymap)))=0A= - (tool-bar-local-item-from-menu 'Info-history-back "left-arrow" map = Info-mode-map=0A= - :rtl "right-arrow")=0A= - (tool-bar-local-item-from-menu 'Info-history-forward "right-arrow" map = Info-mode-map=0A= + (tool-bar-local-item-from-menu=0A= + 'Info-history-back "left-arrow" map Info-mode-map :rtl = "right-arrow")=0A= + (tool-bar-local-item-from-menu=0A= + 'Info-history-forward "right-arrow" map Info-mode-map=0A= :rtl "left-arrow")=0A= (tool-bar-local-item-from-menu 'Info-prev "prev-node" map Info-mode-map=0A= :rtl "next-node")=0A= @@ -3251,7 +3279,8 @@=0A= :rtl "prev-node")=0A= (tool-bar-local-item-from-menu 'Info-up "up-node" map Info-mode-map)=0A= (tool-bar-local-item-from-menu 'Info-top-node "home" map Info-mode-map)=0A= - (tool-bar-local-item-from-menu 'Info-goto-node "jump-to" map = Info-mode-map)=0A= + (tool-bar-local-item-from-menu=0A= + 'Info-goto-node "jump-to" map Info-mode-map)=0A= (tool-bar-local-item-from-menu 'Info-index "index" map Info-mode-map)=0A= (tool-bar-local-item-from-menu 'Info-search "search" map Info-mode-map)=0A= (tool-bar-local-item-from-menu 'Info-exit "exit" map Info-mode-map)=0A= @@ -3367,7 +3396,8 @@=0A= Follow a node reference you click on.=0A= This works with menu items, cross references, and=0A= the \"next\", \"previous\" and \"up\", depending on where you click.=0A= -\\[Info-follow-nearest-node] Follow a node reference near point, like = \\[Info-mouse-follow-nearest-node].=0A= +\\[Info-follow-nearest-node] Follow a node reference near point, \=0A= +like \\[Info-mouse-follow-nearest-node].=0A= \\[Info-next] Move to the \"next\" node of this node.=0A= \\[Info-prev] Move to the \"previous\" node of this node.=0A= \\[Info-up] Move \"up\" from this node.=0A= @@ -3376,13 +3406,17 @@=0A= \\[Info-directory] Go to the Info directory node.=0A= \\[Info-top-node] Go to the Top node of this file.=0A= \\[Info-final-node] Go to the final node in this file.=0A= -\\[Info-backward-node] Go backward one node, considering all nodes as = forming one sequence.=0A= -\\[Info-forward-node] Go forward one node, considering all nodes as = forming one sequence.=0A= +\\[Info-backward-node] Go backward one node, considering all nodes as = forming \=0A= +one sequence.=0A= +\\[Info-forward-node] Go forward one node, considering all nodes as = forming \=0A= +one sequence.=0A= \\[Info-next-reference] Move cursor to next cross-reference or menu = item.=0A= \\[Info-prev-reference] Move cursor to previous cross-reference or menu = item.=0A= -\\[Info-follow-reference] Follow a cross reference. Reads name of = reference.=0A= +\\[Info-follow-reference] Follow a cross reference. Reads name of \=0A= +reference.=0A= \\[Info-history-back] Move back in history to the last node you were at.=0A= -\\[Info-history-forward] Move forward in history to the node you = returned from after using \\[Info-history-back].=0A= +\\[Info-history-forward] Move forward in history to the node you \=0A= +returned from after using \\[Info-history-back].=0A= \\[Info-history] Go to menu of visited nodes.=0A= \\[Info-toc] Go to table of contents of the current Info file.=0A= =0A= @@ -3392,7 +3426,8 @@=0A= screen but after point, the next scroll moves into its first=0A= subnode. When after all menu items (or if there is no menu),=0A= move up to the parent node.=0A= -\\[Info-scroll-down] Normally, scroll backward. If the beginning of = the buffer is=0A= +\\[Info-scroll-down] Normally, scroll backward. If the beginning of = the \=0A= +buffer is=0A= already visible, try to go to the previous menu entry, or up=0A= if there is none.=0A= \\[beginning-of-buffer] Go to beginning of node.=0A= @@ -3400,11 +3435,13 @@=0A= Advanced commands:=0A= \\[Info-search] Search through this Info file for specified regexp,=0A= and select the node in which the next occurrence is found.=0A= -\\[Info-search-case-sensitively] Search through this Info file for = specified regexp case-sensitively.=0A= +\\[Info-search-case-sensitively] Search through this Info file for \=0A= +specified regexp case-sensitively.=0A= \\[Info-search-next] Search for another occurrence of regexp=0A= from a previous \\\\[Info-search] command.=0A= \\[Info-index] Search for a topic in this manual's Index and go to = index entry.=0A= -\\[Info-index-next] (comma) Move to the next match from a previous = \\\\[Info-index] command.=0A= +\\[Info-index-next] (comma) Move to the next match from a previous \=0A= +\\\\[Info-index] command.=0A= \\[info-apropos] Look for a string in the indices of all manuals.=0A= \\[Info-goto-node] Move to node specified by name.=0A= You may include a filename as well, as (FILENAME)NODENAME.=0A= @@ -3413,7 +3450,8 @@=0A= \\[Info-copy-current-node-name] Put name of current Info node in the = kill ring.=0A= \\[clone-buffer] Select a new cloned Info buffer in another window.=0A= \\[universal-argument] \\[info] Move to new Info file with completion.=0A= -\\[universal-argument] N \\[info] Select Info buffer with prefix number = in the name *info*."=0A= +\\[universal-argument] N \\[info] Select Info buffer with prefix number = \=0A= +in the name *info*."=0A= (kill-all-local-variables)=0A= (setq major-mode 'Info-mode)=0A= (setq mode-name "Info")=0A= @@ -3518,7 +3556,8 @@=0A= (error "Editing Info nodes is not enabled"))=0A= (Info-edit-mode)=0A= (message "%s" (substitute-command-keys=0A= - "Editing: Type \\\\[Info-cease-edit] to return to = info")))=0A= + "Editing: Type \\\\[Info-cease-edit] to return \=0A= +to info")))=0A= =0A= (defun Info-cease-edit ()=0A= "Finish editing Info node; switch back to Info proper."=0A= @@ -3726,7 +3765,8 @@=0A= (and Info-fontify-visited-nodes=0A= ;; Don't take time to refontify visited nodes in huge = nodes=0A= Info-fontify-maximum-menu-size=0A= - (< (- (point-max) (point-min)) = Info-fontify-maximum-menu-size)))=0A= + (< (- (point-max) (point-min))=0A= + Info-fontify-maximum-menu-size)))=0A= rbeg rend)=0A= =0A= ;; Fontify header line=0A= @@ -3756,6 +3796,32 @@=0A= ((string-equal (downcase tag) "prev") Info-prev-link-keymap)=0A= ((string-equal (downcase tag) "next") Info-next-link-keymap)=0A= ((string-equal (downcase tag) "up" ) Info-up-link-keymap))))))=0A= + =0A= + ;; Add breadcrumbs=0A= + (unless (string=3D "Top" Info-current-node)=0A= + (let ((nod Info-current-node)=0A= + (onode Info-current-node)=0A= + (crumbs nil)=0A= + (done nil))=0A= + (while (not done)=0A= + (let ((up (Info-extract-pointer "up")))=0A= + (cond ((string=3D "Top" up)=0A= + (setq crumbs (if crumbs=0A= + (concat "*Note Top:: > " crumbs)=0A= + "*Note Top::"))=0A= + (setq done t))=0A= + (t ; Bind to prevent infinite = recursion=0A= + (let ((Info-fontify-maximum-menu-size nil))=0A= + (Info-goto-node up))=0A= + (setq nod Info-current-node)=0A= + (when crumbs (setq crumbs (concat " > " crumbs)))=0A= + (setq crumbs (concat "*Note " nod ":: " = crumbs))))))=0A= + (let ((Info-fontify-maximum-menu-size nil)) ; Prevent inf. = recursion=0A= + (Info-goto-node onode))=0A= + (forward-line 1)=0A= + (insert (concat crumbs "\n\n"))))=0A= + =0A= + ;; Treat header line=0A= (when Info-use-header-line=0A= (goto-char (point-min))=0A= (let* ((header-end (line-end-position))=0A= @@ -3791,7 +3857,8 @@=0A= ;; Fontify titles=0A= (goto-char (point-min))=0A= (when (and font-lock-mode not-fontified-p)=0A= - (while (and (re-search-forward "\n\\([^ = \t\n].+\\)\n\\(\\*\\*+\\|=3D=3D+\\|--+\\|\\.\\.+\\)$"=0A= + (while (and (re-search-forward=0A= + "\n\\([^ = \t\n].+\\)\n\\(\\*\\*+\\|=3D=3D+\\|--+\\|\\.\\.+\\)$"=0A= nil t)=0A= ;; Only consider it as an underlined title if the = ASCII=0A= ;; underline has the same size as the text. A = typical=0A= @@ -3811,19 +3878,22 @@=0A= ;; frame types at once. We want this text to be invisible=0A= ;; on frames that can display the font above.=0A= (when (memq (framep (selected-frame)) '(x pc w32 mac))=0A= - (add-text-properties (1- (match-beginning 2)) (match-end 2)=0A= + (add-text-properties=0A= + (1- (match-beginning 2)) (match-end 2)=0A= '(invisible t front-sticky nil = rear-nonsticky t)))))=0A= =0A= ;; Fontify cross references=0A= (goto-char (point-min))=0A= (when (or not-fontified-p fontify-visited-p)=0A= - (while (re-search-forward "\\(\\*Note[ = \n\t]+\\)\\([^:]*\\)\\(:[ = \t]*\\([^.,:(]*\\)\\(\\(([^)]*)\\)[^.,:]*\\)?[,:]?\n?\\)" nil t)=0A= + (while (re-search-forward "\\(\\*Note[ = \n\t]+\\)\\([^:]*\\)\\(:[ \t]*\=0A= +\\([^.,:(]*\\)\\(\\(([^)]*)\\)[^.,:]*\\)?[,:]?\n?\\)" nil t)=0A= (let ((start (match-beginning 0))=0A= (next (point))=0A= other-tag)=0A= (when not-fontified-p=0A= - (when Info-hide-note-references=0A= - (when (not (eq Info-hide-note-references 'hide))=0A= + (when (or Info-hide-note-references (<=3D = (line-number-at-pos) 4))=0A= + (when (and (not (eq Info-hide-note-references 'hide))=0A= + (> (line-number-at-pos) 4)) ; Skip = breadcrumbs=0A= ;; *Note is often used where *note should have been=0A= (goto-char start)=0A= (skip-syntax-backward " ")=0A= @@ -3873,7 +3943,8 @@=0A= ;; Display visited nodes in a different face=0A= (if (and Info-fontify-visited-nodes=0A= (save-match-data=0A= - (let* ((node (replace-regexp-in-string=0A= + (let* ((node=0A= + (replace-regexp-in-string=0A= "^[ \t]+" ""=0A= (replace-regexp-in-string=0A= "[ \t\n]+" " "=0A= @@ -3882,7 +3953,8 @@=0A= = (match-string-no-properties 4))=0A= = (match-string-no-properties 2)))))=0A= (external-link-p=0A= - (string-match "(\\([^)]+\\))\\([^)]*\\)" node))=0A= + (string-match "(\\([^)]+\\))\\([^)]*\\)"=0A= + node))=0A= (file (if external-link-p=0A= (file-name-nondirectory=0A= (match-string-no-properties 1 node))=0A= @@ -3890,7 +3962,8 @@=0A= (hl Info-history-list)=0A= res)=0A= (if external-link-p=0A= - (setq node (if (equal (match-string 2 node) "")=0A= + (setq node=0A= + (if (equal (match-string 2 node) = "")=0A= "Top"=0A= = (match-string-no-properties 2 node))))=0A= (while hl=0A= @@ -3913,12 +3986,17 @@=0A= (match-end 0)=0A= '(font-lock-face t))))))=0A= (when not-fontified-p=0A= - (when (memq Info-hide-note-references '(t hide))=0A= - (add-text-properties (match-beginning 3) (match-end 3)=0A= + (when (or (memq Info-hide-note-references '(t hide))=0A= + (<=3D (line-number-at-pos) 4))=0A= + (add-text-properties=0A= + (match-beginning 3) (match-end 3)=0A= '(invisible t front-sticky nil = rear-nonsticky t))=0A= ;; Unhide the file name of the external reference in = parens=0A= - (if (and (match-string 6) (not (eq = Info-hide-note-references 'hide)))=0A= - (remove-text-properties (match-beginning 6) = (match-end 6)=0A= + (if (and (match-string 6)=0A= + (not (eq Info-hide-note-references 'hide))=0A= + (> (line-number-at-pos) 4))=0A= + (remove-text-properties=0A= + (match-beginning 6) (match-end 6)=0A= '(invisible t front-sticky = nil rear-nonsticky t)))=0A= ;; Unhide newline because hidden newlines cause too = long lines=0A= (save-match-data=0A= @@ -3929,10 +4007,13 @@=0A= (save-excursion=0A= (goto-char (1+ end3))=0A= (looking-at "[.)]*$")))))=0A= - (remove-text-properties (+ beg3 = (match-beginning 0))=0A= + (remove-text-properties=0A= + (+ beg3 (match-beginning 0))=0A= (+ beg3 (match-end 0))=0A= '(invisible t = front-sticky nil rear-nonsticky t))))))=0A= - (when (and Info-refill-paragraphs = Info-hide-note-references)=0A= + (when (and Info-refill-paragraphs=0A= + (or Info-hide-note-references=0A= + (<=3D (line-number-at-pos) 4)))=0A= (push (set-marker (make-marker) start)=0A= paragraph-markers))))))=0A= =0A= @@ -3966,13 +4047,14 @@=0A= (let ((n 0)=0A= cont)=0A= (while (re-search-forward=0A= - (concat "^\\* Menu:\\|\\(?:^\\* +\\(" = Info-menu-entry-name-re "\\)\\(:"=0A= - Info-node-spec-re "\\([ \t]*\\)\\)\\)")=0A= + (concat "^\\* Menu:\\|\\(?:^\\* +\\(" = Info-menu-entry-name-re=0A= + "\\)\\(:" Info-node-spec-re "\\([ = \t]*\\)\\)\\)")=0A= nil t)=0A= (when (match-beginning 1)=0A= (when not-fontified-p=0A= (setq n (1+ n))=0A= - (if (and (<=3D n 9) (zerop (% n 3))) ; visual aids to help with 1-9 = keys=0A= + (if (and (<=3D n 9) (zerop (% n 3)))=0A= + ;; visual aids to help with 1-9 keys=0A= (put-text-property (match-beginning 0)=0A= (1+ (match-beginning 0))=0A= 'font-lock-face 'info-menu-star)))=0A= @@ -3996,15 +4078,18 @@=0A= (match-string-no-properties 1)=0A= (match-string-no-properties 3)))=0A= (external-link-p=0A= - (string-match "(\\([^)]+\\))\\([^)]*\\)" node))=0A= + (string-match "(\\([^)]+\\))\\([^)]*\\)"=0A= + node))=0A= (file (if external-link-p=0A= (file-name-nondirectory=0A= - (match-string-no-properties 1 node))=0A= + (match-string-no-properties=0A= + 1 node))=0A= Info-current-file))=0A= (hl Info-history-list)=0A= res)=0A= (if external-link-p=0A= - (setq node (if (equal (match-string 2 = node) "")=0A= + (setq node=0A= + (if (equal (match-string 2 = node) "")=0A= "Top"=0A= = (match-string-no-properties 2 node))))=0A= (while hl=0A= @@ -4019,7 +4104,8 @@=0A= (setq hl (cdr hl))))=0A= res))) 'info-xref-visited 'info-xref)))=0A= (when (and not-fontified-p=0A= - (memq Info-hide-note-references '(t hide))=0A= + (or (memq Info-hide-note-references '(t hide))=0A= + (<=3D (line-number-at-pos) 4))=0A= (not (Info-index-node)))=0A= (put-text-property (match-beginning 2) (1- (match-end 6))=0A= 'invisible t)=0A= @@ -4069,8 +4155,8 @@=0A= (while (re-search-forward "\\(https?\\|ftp\\)://[^ = \t\n\"`({<>})']+"=0A= nil t)=0A= (add-text-properties (match-beginning 0) (match-end 0)=0A= - '(font-lock-face info-xref=0A= - mouse-face highlight=0A= + '(font-lock-face=0A= + info-xref mouse-face highlight=0A= help-echo "mouse-2: go = to this URL"))))=0A= =0A= (set-buffer-modified-p nil))))=0A= =0A= Diff finished at Fri Jun 13 07:36:56=0A= ------=_NextPart_000_004B_01C8CD2D.0698D1C0--