]> git.eshelyaron.com Git - emacs.git/commitdiff
Man highlighting: Don't occasionally bold entire sections.
authorJim Blandy <jimb@red-bean.com>
Tue, 20 Oct 2020 11:09:16 +0000 (13:09 +0200)
committerLars Ingebrigtsen <larsi@gnus.org>
Tue, 20 Oct 2020 11:09:16 +0000 (13:09 +0200)
* lisp/ansi-color.el (ansi-color-apply-on-region): Always save a
restart position in ansi-color-context-region if the region ends with
highlighting active.

lisp/ansi-color.el

index 141ad2353e8a0041ca0a5e0ecc3e7382e754d672..c3b2d98c1403dd51bc275f945711789204142c83 100644 (file)
@@ -414,11 +414,17 @@ this."
        ;; if the rest of the region should have a face, put it there
        (funcall ansi-color-apply-face-function
                 start-marker end-marker (ansi-color--find-face codes))
-       (setq ansi-color-context-region (if codes (list codes)))))
+        ;; Save a restart position when there are codes active. It's
+        ;; convenient for man.el's process filter to pass `begin'
+        ;; positions that overlap regions previously colored; these
+        ;; `codes' should not be applied to that overlap, so we need
+        ;; to know where they should really start.
+       (setq ansi-color-context-region (if codes (list codes end-marker)))))
     ;; Clean up our temporary markers.
     (unless (eq start-marker (cadr ansi-color-context-region))
       (set-marker start-marker nil))
-    (set-marker end-marker nil)))
+    (unless (eq end-marker (cadr ansi-color-context-region))
+      (set-marker end-marker nil))))
 
 (defun ansi-color-apply-overlay-face (beg end face)
   "Make an overlay from BEG to END, and apply face FACE.