branch: externals/lin commit fef282ebbb11c096efad0ee659d73306803d3771 Author: Protesilaos Stavrou <i...@protesilaos.com> Commit: Protesilaos Stavrou <i...@protesilaos.com>
Improve how lin--setup resets hooks --- lin.el | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/lin.el b/lin.el index acc99220a9..26fa6d3ca8 100644 --- a/lin.el +++ b/lin.el @@ -317,6 +317,19 @@ updates the face. Users who prefer to use `setq' must run (lin--setup :reverse) (lin-disable-mode-in-buffers))) +(defun lin--setup-add-hooks () + "Add `lin-mode-hooks'." + (dolist (hook lin-mode-hooks) + (add-hook hook #'lin-mode))) + +(defun lin--setup-remove-hooks (&optional hooks) + "Remove `lin-mode-hooks' or, optionally, HOOKS." + (dolist (hook (or hooks lin-mode-hooks)) + (remove-hook hook #'lin-mode))) + +(defvar lin--setup-hooks nil + "Last value used by `lin--setup'.") + (defun lin--setup (&optional reverse) "Set up Lin for select mode hooks. @@ -324,11 +337,13 @@ This adds `lin-mode' and `hl-line-mode' to every hook in `lin-mode-hooks'. With optional non-nil REVERSE argument, remove those hooks." - (if reverse - (dolist (hook lin-mode-hooks) - (remove-hook hook #'lin-mode)) - (dolist (hook lin-mode-hooks) - (add-hook hook #'lin-mode)))) + (cond + (reverse + (lin--setup-remove-hooks)) + (t + (lin--setup-remove-hooks lin--setup-hooks) + (lin--setup-add-hooks))) + (setq lin--setup-hooks lin-mode-hooks)) (define-obsolete-function-alias 'lin-setup 'lin--setup "0.3.0")