diff options
Diffstat (limited to 'lisp')
-rw-r--r-- | lisp/ansi-color.el | 10 |
1 files 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. |