From 2e2a8e5491bc6259a9ebe8c703c1c501307953e2 Mon Sep 17 00:00:00 2001 From: Jim Blandy Date: Tue, 20 Oct 2020 13:09:16 +0200 Subject: [PATCH] Man highlighting: Don't occasionally bold entire sections. * 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 | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/lisp/ansi-color.el b/lisp/ansi-color.el index 141ad2353e8..c3b2d98c140 100644 --- a/lisp/ansi-color.el +++ b/lisp/ansi-color.el @@ -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. -- 2.39.2