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

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

[nongnu] elpa/auto-dim-other-buffers 16db9f4942 06/82: MUCH more efficie


From: ELPA Syncer
Subject: [nongnu] elpa/auto-dim-other-buffers 16db9f4942 06/82: MUCH more efficient: only changes faces for 2 buffers max, and only when necessary
Date: Mon, 12 Dec 2022 20:58:37 -0500 (EST)

branch: elpa/auto-dim-other-buffers
commit 16db9f49425e272ec58fcb837fb5c4512b4f02d3
Author: Steven Degutis <sbdegutis@gmail.com>
Commit: Steven Degutis <sbdegutis@gmail.com>

    MUCH more efficient: only changes faces for 2 buffers max, and only when 
necessary
---
 auto-dim-other-buffers.el | 26 +++++++++++++++-----------
 1 file changed, 15 insertions(+), 11 deletions(-)

diff --git a/auto-dim-other-buffers.el b/auto-dim-other-buffers.el
index 280dfdb3de..cfb49523c4 100644
--- a/auto-dim-other-buffers.el
+++ b/auto-dim-other-buffers.el
@@ -12,38 +12,42 @@
   :type 'face
   :group 'auto-dim-other-buffers)
 
-(setq adob/last-buffer nil)
-
 (defun adob/pre-command-hook ()
   (setq adob/last-buffer (current-buffer)))
 
 (defun adob/post-command-hook ()
   (let ((original (current-buffer)))
-    (unless (eq original adob/last-buffer)
-      (dolist (buffer (buffer-list))
-        (set-buffer buffer)
-        (unless (minibufferp)
-          (buffer-face-set auto-dim-other-buffers-face)))
+    (unless (eq original adob/last-buffer) ;; if we haven't switched buffers, 
do nothing
+      (when (and adob/last-buffer
+                 (not (minibufferp adob/last-buffer)))
+        (set-buffer adob/last-buffer)
+        (buffer-face-set auto-dim-other-buffers-face))
       (set-buffer original)
       (buffer-face-set nil))))
 
-(defun adob/clear-all-windows ()
-  (interactive)
+(defun adob/set-face-on-all-buffers (face)
   (let ((original (current-buffer)))
     (dolist (buffer (buffer-list))
       (set-buffer buffer)
-      (buffer-face-set nil))
+      (buffer-face-set face))
     (set-buffer original)))
 
+(defun adob/undim-all-windows ()
+  (adob/set-face-on-all-buffers nil))
+
+(defun adob/dim-all-windows ()
+  (adob/set-face-on-all-buffers auto-dim-other-buffers-face))
+
 (defun turn-off-auto-dim-other-buffers ()
   (interactive)
   (remove-hook 'pre-command-hook 'adob/pre-command-hook)
   (remove-hook 'post-command-hook 'adob/post-command-hook)
-  (adob/clear-all-windows))
+  (adob/undim-all-windows))
 
 (defun turn-on-auto-dim-other-buffers ()
   (interactive)
   (setq adob/last-buffer nil)
+  (adob/dim-all-windows)
   (add-hook 'pre-command-hook 'adob/pre-command-hook)
   (add-hook 'post-command-hook 'adob/post-command-hook))
 



reply via email to

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