emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master 0929e06: Improve fontification of footnote referenc


From: Eli Zaretskii
Subject: [Emacs-diffs] master 0929e06: Improve fontification of footnote references in Info buffers
Date: Fri, 21 Oct 2016 10:00:38 +0000 (UTC)

branch: master
commit 0929e061fb544c0f4c10ff0412a41cf7e8148270
Author: Eli Zaretskii <address@hidden>
Commit: Eli Zaretskii <address@hidden>

    Improve fontification of footnote references in Info buffers
    
    * lisp/info.el (Info-fontify-node): Don't fontify random numbers
    in parentheses as if they were footnote references.  See
    https://lists.gnu.org/archive/html/bug-texinfo/2016-10/msg00007.html
    for the details.
---
 lisp/info.el |   32 ++++++++++++++++++++++----------
 1 file changed, 22 insertions(+), 10 deletions(-)

diff --git a/lisp/info.el b/lisp/info.el
index bb259bd..6b8b369 100644
--- a/lisp/info.el
+++ b/lisp/info.el
@@ -5001,17 +5001,29 @@ first line or header line, and for breadcrumb links.")
       ;; Fontify footnotes
       (goto-char (point-min))
       (when (and not-fontified-p (re-search-forward "^[ \t]*-+ Footnotes -+$" 
nil t))
-        (let ((limit (point)))
+        (let ((limit (point))
+              (fncount 0))
+          ;; How many footnotes do we have in this node?
+          (while (re-search-forward "^ [ \t]*([0-9]+) " nil t)
+            (setq fncount (1+ fncount)))
           (goto-char (point-min))
-          (while (re-search-forward "\\(([0-9]+)\\)" nil t)
-            (add-text-properties (match-beginning 0) (match-end 0)
-                                 `(font-lock-face info-xref
-                                   link t
-                                   mouse-face highlight
-                                   help-echo
-                                   ,(if (< (point) limit)
-                                        "mouse-2: go to footnote definition"
-                                      "mouse-2: go to footnote reference"))))))
+          (while (re-search-forward "\\((\\([0-9]+\\))\\)" nil t)
+            (let ((footnote-num (string-to-number (match-string 2))))
+              ;; Don't fontify parenthesized numbers that cannot
+              ;; possibly be one of this node's footnotes.  This still
+              ;; doesn't catch unrelated numbers that happen to be
+              ;; small enough, but in that case they should use
+              ;; "@footnotestyle separate" in the Texinfo sources.
+              (when (and (> footnote-num 0)
+                         (<= footnote-num fncount))
+                (add-text-properties (match-beginning 0) (match-end 0)
+                                     `(font-lock-face info-xref
+                                       link t
+                                       mouse-face highlight
+                                       help-echo
+                                       ,(if (< (point) limit)
+                                          "mouse-2: go to footnote definition"
+                                         "mouse-2: go to footnote 
reference"))))))))
 
       ;; Hide empty lines at the end of the node.
       (goto-char (point-max))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]