From bfb6aaf8ade6194a2eda551554d11b9f5c5a1858 Mon Sep 17 00:00:00 2001 From: Lars Tveito Date: Sun, 13 Nov 2016 20:25:47 +0100 Subject: [PATCH] Don't persist focus mode across major mode change Addresses #11. Focus mode will no longer make any variables `permanent-local'. On major mode change `focus-terminate' is run so that the overlays are removed. --- focus.el | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/focus.el b/focus.el index 0bd5a5a..6955c27 100644 --- a/focus.el +++ b/focus.el @@ -91,19 +91,6 @@ The timer calls `focus-read-only-hide-cursor' after focus-read-only-blink-timer)) (make-local-variable var)) -;; Changing major-mode should not affect Focus mode. -(dolist (var '(focus-current-thing - focus-pre-overlay - focus-post-overlay - focus-mode - focus-read-only-mode)) - (put var 'permanent-local t)) - -(dolist (var '(focus-read-only-cursor-blink - focus-read-only-terminate - focus-move-focus)) - (put var 'permanent-local-hook t)) - (defun focus-any (f lst) "Apply F to each element of LST and return first NON-NIL." (when lst @@ -169,7 +156,8 @@ adds `focus-move-focus' to `post-command-hook'." (let ((color (focus-make-dim-color))) (mapc (lambda (o) (overlay-put o 'face (cons 'foreground-color color))) (list focus-pre-overlay focus-post-overlay))) - (add-hook 'post-command-hook 'focus-move-focus nil t))) + (add-hook 'post-command-hook 'focus-move-focus nil t) + (add-hook 'change-major-mode-hook 'focus-terminate))) (defun focus-terminate () "This function is run when command `focus-mode' is disabled.