From: Alan Mackenzie Date: Sun, 29 Sep 2019 15:39:16 +0000 (+0000) Subject: Remove the compilation-arrow-overlay on a major mode change/reinitialization X-Git-Tag: emacs-27.0.90~1371 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=53b71fd4adf6de6b4d8b37e8ab3d56eb93e7ce92;p=emacs.git Remove the compilation-arrow-overlay on a major mode change/reinitialization At the same time, remove the 2-character left margin. * lisp/progmodes/compile.el (compilation-set-up-arrow-spec-in-margin): put compilation-tear-down-arrow-spec-in-margin onto change-major-mode-hook. --- diff --git a/lisp/progmodes/compile.el b/lisp/progmodes/compile.el index f0b34c702ca..d80fef3103e 100644 --- a/lisp/progmodes/compile.el +++ b/lisp/progmodes/compile.el @@ -2625,7 +2625,10 @@ Actual value is never used, only the text property.") (make-overlay overlay-arrow-position overlay-arrow-position)) (overlay-put compilation-arrow-overlay 'before-string compilation--dummy-string) - (set-window-margins (selected-window) (+ (or (car (window-margins)) 0) 2))) + (set-window-margins (selected-window) (+ (or (car (window-margins)) 0) 2)) + ;; Take precautions against `compilation-mode' getting reinitialized. + (add-hook 'change-major-mode-hook + 'compilation-tear-down-arrow-spec-in-margin nil t)) (defun compilation-tear-down-arrow-spec-in-margin () "Restore compilation-arrow-overlay to not using the margin, which is removed."