emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/lin fef282ebbb 44/46: Improve how lin--setup resets hoo


From: ELPA Syncer
Subject: [elpa] externals/lin fef282ebbb 44/46: Improve how lin--setup resets hooks
Date: Thu, 7 Apr 2022 23:57:48 -0400 (EDT)

branch: externals/lin
commit fef282ebbb11c096efad0ee659d73306803d3771
Author: Protesilaos Stavrou <info@protesilaos.com>
Commit: Protesilaos Stavrou <info@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")
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]