emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] master 495b33b: Fix highlighting in man pages displayed by


From: Eli Zaretskii
Subject: [Emacs-diffs] master 495b33b: Fix highlighting in man pages displayed by "M-x man"
Date: Fri, 9 Aug 2019 09:52:25 -0400 (EDT)

branch: master
commit 495b33bb3858fbb8912f7d357e1d277062b98bcd
Author: Eli Zaretskii <address@hidden>
Commit: Eli Zaretskii <address@hidden>

    Fix highlighting in man pages displayed by "M-x man"
    
    * lisp/man.el (Man-highlight-references0): Handle the case
    when a section is divided between 2 or more chunks of text
    received from the 'man' program.  (Bug#36927)
---
 lisp/man.el | 19 +++++++++++++++++--
 1 file changed, 17 insertions(+), 2 deletions(-)

diff --git a/lisp/man.el b/lisp/man.el
index d52ca21..8858451 100644
--- a/lisp/man.el
+++ b/lisp/man.el
@@ -1288,8 +1288,23 @@ default type, `Man-xref-man-page' is used for the 
buttons."
 
 (defun Man-highlight-references0 (start-section regexp button-pos target type)
   ;; Based on `Man-build-references-alist'
-  (when (or (null start-section)
-           (Man-find-section start-section))
+  (when (or (null start-section)        ;; Search regardless of sections.
+            ;; Section header is in this chunk.
+           (Man-find-section start-section)
+            ;; Section header was in one of the previous chunks.
+            (save-excursion
+              (save-restriction
+                (let ((orig-pos (point)))
+                  (widen)
+                  (if (Man-find-section start-section)
+                      ;; We are in the right section of the next
+                      ;; section is either not yet in the buffer, or
+                      ;; it starts after the position where we should
+                      ;; start highlighting.
+                      (progn
+                        (forward-line 1)
+                        (or (null (re-search-forward Man-heading-regexp nil t))
+                            (> (point) orig-pos))))))))
     (let ((end (if start-section
                   (progn
                     (forward-line 1)



reply via email to

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