[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/auto-dim-other-buffers e4ef0a93ca 66/82: Unconditionally u
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/auto-dim-other-buffers e4ef0a93ca 66/82: Unconditionally undim selected buffer when focus is regained |
Date: |
Mon, 12 Dec 2022 20:58:45 -0500 (EST) |
branch: elpa/auto-dim-other-buffers
commit e4ef0a93cab303b9ae6aad375db11d766f600521
Author: Michal Nazarewicz <mina86@mina86.com>
Commit: Michal Nazarewicz <mina86@mina86.com>
Unconditionally undim selected buffer when focus is regained
Don’t check ‘auto-dim-other-buffers-dim-on-focus-out’ when focus is
regained. Instead unconditionally undim selected buffer. If the
variable is nil this will be a nop anyway (since selected buffer will
still be undimmed) but this new behaviour fixes a somewhat obscure
bug which stops the buffer from being undimmed when value of
‘auto-dim-other-buffers-dim-on-focus-out’ changes from t to nil while
Emacs’ frame is out of foucs.
---
auto-dim-other-buffers.el | 55 ++++++++++++++++++++++++++---------------------
1 file changed, 30 insertions(+), 25 deletions(-)
diff --git a/auto-dim-other-buffers.el b/auto-dim-other-buffers.el
index 78e0cce802..6309c3b2be 100644
--- a/auto-dim-other-buffers.el
+++ b/auto-dim-other-buffers.el
@@ -9,7 +9,7 @@
;; Michal Nazarewicz <mina86@mina86.com>
;; Maintainer: Michal Nazarewicz <mina86@mina86.com>
;; URL: https://github.com/mina86/auto-dim-other-buffers.el
-;; Version: 1.9.4
+;; Version: 1.9.5
;; This file is not part of GNU Emacs.
@@ -97,25 +97,36 @@ Currently only mini buffer and echo areas are ignored."
(setq adob--face-mode-remapping nil)
(force-window-update (current-buffer))))
-(defun adob--buffer-list-update-hook ()
- "If buffer has changed, dim the last one and undim the new one."
+(defun adob--update ()
+ "Make sure that selected buffer is not dimmed.
+Dim previously selected buffer if selection has changed."
(let ((buf (window-buffer)))
- (if (not (eq buf (current-buffer)))
- ;; A new buffer is displayed in some window somewhere. This is not the
- ;; selected buffer though so dim it.
- (unless (adob--never-dim-p (current-buffer))
+ (unless (or (eq buf adob--last-buffer)
+ (and (not auto-dim-other-buffers-dim-on-switch-to-minibuffer)
+ (minibufferp buf)))
+ ;; Selected buffer has changed. Dim the old one and undim the new.
+ (save-current-buffer
+ (when (and (buffer-live-p adob--last-buffer)
+ (not (adob--never-dim-p adob--last-buffer)))
+ (set-buffer adob--last-buffer)
(adob--dim-buffer))
- (unless (or (eq buf adob--last-buffer)
- (and (not auto-dim-other-buffers-dim-on-switch-to-minibuffer)
- (minibufferp buf)))
- ;; Buffer has changed. Dim the old one and undim the new.
- (and (buffer-live-p adob--last-buffer)
- (not (adob--never-dim-p adob--last-buffer))
- (with-current-buffer adob--last-buffer
- (adob--dim-buffer)))
+ (set-buffer buf)
(adob--undim-buffer)
(setq adob--last-buffer buf)))))
+(defun adob--buffer-list-update-hook ()
+ "React to buffer list changes.
+If selected buffer has changed, change which buffer is dimmed.
+Otherwise, if a new buffer is displayed somewhere, dim it."
+ (let ((current (current-buffer)))
+ (if (eq (window-buffer) current)
+ ;; Selected buffer has changed. Update what we dim.
+ (adob--update)
+ ;; A new buffer is displayed somewhere but it’s not the selected one so
+ ;; dim it.
+ (unless (adob--never-dim-p current)
+ (adob--dim-buffer)))))
+
(defun adob--focus-out-hook ()
"Dim all buffers if `auto-dim-other-buffers-dim-on-focus-out'."
(when (and auto-dim-other-buffers-dim-on-focus-out
@@ -126,18 +137,12 @@ Currently only mini buffer and echo areas are ignored."
(adob--dim-buffer))
(setq adob--last-buffer nil)))
-(defun adob--focus-in-hook ()
- "Undim current buffers if `auto-dim-other-buffers-dim-on-focus-out'."
- (when auto-dim-other-buffers-dim-on-focus-out
- (with-current-buffer (window-buffer)
- (adob--undim-buffer)
- (setq adob--last-buffer (current-buffer)))))
-
(defun adob--focus-change-hook ()
"Based on focus status of selected frame dim or undim selected buffer.
-Do nothing if `auto-dim-other-buffers-dim-on-focus-out' is nil."
+Do nothing if `auto-dim-other-buffers-dim-on-focus-out' is nil
+and frame’s doesn’t have focus."
(if (with-no-warnings (frame-focus-state))
- (adob--focus-in-hook)
+ (adob--update)
(adob--focus-out-hook)))
;;;###autoload
@@ -155,7 +160,7 @@ Do nothing if `auto-dim-other-buffers-dim-on-focus-out' is
nil."
(remove-function after-focus-change-function
#'adob--focus-change-hook))
(funcall callback 'focus-out-hook #'adob--focus-out-hook)
- (funcall callback 'focus-in-hook #'adob--focus-in-hook)))
+ (funcall callback 'focus-in-hook #'adob--update)))
(save-current-buffer
(if auto-dim-other-buffers-mode
- [nongnu] elpa/auto-dim-other-buffers d8987326e6 20/82: dim new windows that pop up, (continued)
- [nongnu] elpa/auto-dim-other-buffers d8987326e6 20/82: dim new windows that pop up, ELPA Syncer, 2022/12/12
- [nongnu] elpa/auto-dim-other-buffers 6600c79600 24/82: Mark adob-mode as autoload function, ELPA Syncer, 2022/12/12
- [nongnu] elpa/auto-dim-other-buffers 932b16751f 31/82: .gitignore *.elc files., ELPA Syncer, 2022/12/12
- [nongnu] elpa/auto-dim-other-buffers a385b6013e 39/82: Drop turn-{on, off}-* functions., ELPA Syncer, 2022/12/12
- [nongnu] elpa/auto-dim-other-buffers 8c4470713f 33/82: Set lexical binding on., ELPA Syncer, 2022/12/12
- [nongnu] elpa/auto-dim-other-buffers a066c32ada 40/82: Allow disabling “dimming on focus out” feature, ELPA Syncer, 2022/12/12
- [nongnu] elpa/auto-dim-other-buffers 8b1d8803b5 43/82: Fix Markdown formatting in README file, ELPA Syncer, 2022/12/12
- [nongnu] elpa/auto-dim-other-buffers e9c886fac5 42/82: Use even number of arguments for `setq', ELPA Syncer, 2022/12/12
- [nongnu] elpa/auto-dim-other-buffers 853523a854 50/82: Don't dim last buffer when switching to minibuffer or echo area., ELPA Syncer, 2022/12/12
- [nongnu] elpa/auto-dim-other-buffers efd617c999 60/82: Make sure current buffer is not dimmed when the mode is enabled, ELPA Syncer, 2022/12/12
- [nongnu] elpa/auto-dim-other-buffers e4ef0a93ca 66/82: Unconditionally undim selected buffer when focus is regained,
ELPA Syncer <=
- [nongnu] elpa/auto-dim-other-buffers a87cf772ac 61/82: Dim only the last buffer when loosing focus, ELPA Syncer, 2022/12/12
- [nongnu] elpa/auto-dim-other-buffers 087baafa08 51/82: Move minibuffer check to the beginning of ‘adob--buffer-list-update-hook’, ELPA Syncer, 2022/12/12
- [nongnu] elpa/auto-dim-other-buffers bedeef9ea3 70/82: Support ‘adow-mode’ since the first Emacs 27 preview releases, ELPA Syncer, 2022/12/12
- [nongnu] elpa/auto-dim-other-buffers cad370fb6c 72/82: Preserve current-buffer, ELPA Syncer, 2022/12/12
- [nongnu] elpa/auto-dim-other-buffers 191d714ebb 68/82: Dim individual windows rather than buffers, ELPA Syncer, 2022/12/12
- [nongnu] elpa/auto-dim-other-buffers ed9ebbcc52 74/82: Define Auto Dim Other Buffers customise group, ELPA Syncer, 2022/12/12
- [nongnu] elpa/auto-dim-other-buffers 0a103b09eb 73/82: Require 'face-remap to silence compilation warning, ELPA Syncer, 2022/12/12
- [nongnu] elpa/auto-dim-other-buffers a1c67bf557 81/82: Update screenshot animation and demo video link, ELPA Syncer, 2022/12/12
- [nongnu] elpa/auto-dim-other-buffers c9fe23d03c 79/82: Allow configuring which faces to alter; not just the ‘default’, ELPA Syncer, 2022/12/12
- [nongnu] elpa/auto-dim-other-buffers 8062977284 10/82: face is real face, ELPA Syncer, 2022/12/12