branch: elpa/auto-dim-other-buffers commit 16db9f49425e272ec58fcb837fb5c4512b4f02d3 Author: Steven Degutis <sbdegu...@gmail.com> Commit: Steven Degutis <sbdegu...@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))