mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-02-16 17:24:23 +00:00
In Shell mode, reapply ansi colorization if the mode is re-enabled.
* shell.el (shell-apply-ansi-color, shell-reapply-ansi-color): New functions. (shell-mode): Use them to reapply ansi colorization if Shell mode is re-enabled.
This commit is contained in:
parent
a813fe3fb8
commit
276479fd70
2 changed files with 26 additions and 4 deletions
|
|
@ -2,6 +2,9 @@
|
|||
|
||||
* shell.el (shell): For C-u M-x shell, use an inactive shell
|
||||
buffer as the default (Bug#1975).
|
||||
(shell-apply-ansi-color, shell-reapply-ansi-color): New functions.
|
||||
(shell-mode): Use them to reapply ansi colorization if Shell mode
|
||||
is re-enabled.
|
||||
|
||||
2012-11-30 Yuriy Vostrikov <delamonpansie@gmail.com> (tiny change)
|
||||
|
||||
|
|
|
|||
|
|
@ -561,10 +561,8 @@ buffer."
|
|||
;; very inefficient in Shell buffers (e.g. Bug#10835). We use a
|
||||
;; custom `ansi-color-apply-face-function' to convert color escape
|
||||
;; sequences into `font-lock-face' properties.
|
||||
(set (make-local-variable 'ansi-color-apply-face-function)
|
||||
(lambda (beg end face)
|
||||
(when face
|
||||
(put-text-property beg end 'font-lock-face face))))
|
||||
(setq-local ansi-color-apply-face-function #'shell-apply-ansi-color)
|
||||
(shell-reapply-ansi-color)
|
||||
|
||||
;; This is not really correct, since the shell buffer does not really
|
||||
;; edit this directory. But it is useful in the buffer list and menus.
|
||||
|
|
@ -603,6 +601,27 @@ buffer."
|
|||
'shell-filter-ctrl-a-ctrl-b nil t)))
|
||||
(comint-read-input-ring t)))
|
||||
|
||||
(defun shell-apply-ansi-color (beg end face)
|
||||
"Apply FACE as the ansi-color face for the text between BEG and END."
|
||||
(when face
|
||||
(put-text-property beg end 'ansi-color-face face)
|
||||
(put-text-property beg end 'font-lock-face face)))
|
||||
|
||||
(defun shell-reapply-ansi-color ()
|
||||
"Reapply ansi-color faces to the existing contents of the buffer."
|
||||
(save-restriction
|
||||
(widen)
|
||||
(let* ((pos (point-min))
|
||||
(end (or (next-single-property-change pos 'ansi-color-face)
|
||||
(point-max)))
|
||||
face)
|
||||
(while end
|
||||
(if (setq face (get-text-property pos 'ansi-color-face))
|
||||
(put-text-property pos (or end (point-max))
|
||||
'font-lock-face face))
|
||||
(setq pos end
|
||||
end (next-single-property-change pos 'ansi-color-face))))))
|
||||
|
||||
(defun shell-filter-ctrl-a-ctrl-b (string)
|
||||
"Remove `^A' and `^B' characters from comint output.
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue