From: Noam Postavsky Date: Sat, 17 Jun 2017 16:06:37 +0000 (-0400) Subject: Let ansi-color overlay hooks work in eshell (Bug#27407) X-Git-Tag: emacs-26.0.90~521^2~4 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=4ebdcc46ab345849332332d580bd1e3c2c9adb1e;p=emacs.git Let ansi-color overlay hooks work in eshell (Bug#27407) * lisp/ansi-color.el (ansi-color-make-extent): Add `ansi-color-freeze-overlay' to `insert-behind-hooks' as well. * lisp/eshell/esh-mode.el (eshell-output-filter): Let-bind `inhibit-modification-hooks' to nil while inserting the string. --- diff --git a/lisp/ansi-color.el b/lisp/ansi-color.el index a1b49331754..72d70c2102e 100644 --- a/lisp/ansi-color.el +++ b/lisp/ansi-color.el @@ -481,6 +481,7 @@ Emacs requires OBJECT to be a buffer." ;; property to make sure it works. (let ((overlay (make-overlay from to object))) (overlay-put overlay 'modification-hooks '(ansi-color-freeze-overlay)) + (overlay-put overlay 'insert-behind-hooks '(ansi-color-freeze-overlay)) overlay))) (defun ansi-color-freeze-overlay (overlay is-after begin end &optional len) diff --git a/lisp/eshell/esh-mode.el b/lisp/eshell/esh-mode.el index 0fd0c183016..0999f9c4a88 100644 --- a/lisp/eshell/esh-mode.el +++ b/lisp/eshell/esh-mode.el @@ -726,7 +726,9 @@ This is done after all necessary filtering has been done." (setq obeg (+ obeg nchars))) (if (<= (point) oend) (setq oend (+ oend nchars))) - (insert-before-markers string) + ;; Let the ansi-color overlay hooks run. + (let ((inhibit-modification-hooks nil)) + (insert-before-markers string)) (if (= (window-start) (point)) (set-window-start (selected-window) (- (point) nchars)))