[Top][All Lists]

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

bug#11883: 24.1.50; shell-mode doesn't colorize the prompt

From: Lars Ingebrigtsen
Subject: bug#11883: 24.1.50; shell-mode doesn't colorize the prompt
Date: Fri, 16 Jul 2021 01:06:53 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux)

Stefan Monnier <monnier@IRO.UMontreal.CA> writes:

> The behavior you see is due to the following:
> - the prompt is highlighted with an overlay that uses
>   a comint-highlight-prompt face.
> - "the prompt" is determined dynamically as "the last
>   non-line-terminated output of the process".
> - the ansi-color escapes used to be applied using overlays but are now
>   applied using text-properties.
> When you use ansi escapes to color the prompt, you clearly have
> a conflict with the comint-highlight-prompt face that is to be used for
> the prompt.

The following simple tweak seems to fix the reported issue:

diff --git a/lisp/comint.el b/lisp/comint.el
index 9e406614b9..3dfb269de4 100644
--- a/lisp/comint.el
+++ b/lisp/comint.el
@@ -2157,9 +2157,9 @@ comint-output-filter
              (setq comint-last-prompt
                    (cons (copy-marker prompt-start) (point-marker)))
-             (font-lock-prepend-text-property prompt-start (point)
-                                              'font-lock-face
-                                              'comint-highlight-prompt)
+             (font-lock-append-text-property prompt-start (point)
+                                             'font-lock-face
+                                             'comint-highlight-prompt)
              (add-text-properties prompt-start (point)

That is, we don't overwrite the ANSI face properties.

I guess this might also avoid overwriting properties in prompts that use
ANSI codes?  Which might also be nice.

Would this regress anything?  Anybody got an opinion?

(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no

reply via email to

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