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.
This commit is contained in:
Lars Tveito 2016-11-13 20:25:47 +01:00
parent ffd97a5a36
commit bfb6aaf8ad

View File

@ -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.