emacs-diffs
[Top][All Lists]
Advanced

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

master 5c8c3d5 1/2: * lisp/tab-bar.el: Avoid micro-steps in tab-bar-hist


From: Juri Linkov
Subject: master 5c8c3d5 1/2: * lisp/tab-bar.el: Avoid micro-steps in tab-bar-history-back/forward.
Date: Thu, 18 Nov 2021 12:29:39 -0500 (EST)

branch: master
commit 5c8c3d59ead75df199f31b892f17f8a0a101a62c
Author: Juri Linkov <juri@linkov.net>
Commit: Juri Linkov <juri@linkov.net>

    * lisp/tab-bar.el: Avoid micro-steps in tab-bar-history-back/forward.
    
    * lisp/tab-bar.el (tab-bar-history-pre-command)
    (tab-bar-history-done-command): New variables.
    (tab-bar--history-pre-change): Set 'tab-bar-history-omit' and
    'tab-bar-history-pre-command'.
    (tab-bar--history-change): Use 'tab-bar-history-done-command' and
    'tab-bar-history-pre-command' (bug#51370).
---
 lisp/tab-bar.el | 19 +++++++++++++++----
 1 file changed, 15 insertions(+), 4 deletions(-)

diff --git a/lisp/tab-bar.el b/lisp/tab-bar.el
index 871ed1c..9e554f7 100644
--- a/lisp/tab-bar.el
+++ b/lisp/tab-bar.el
@@ -1802,10 +1802,19 @@ Interactively, prompt for GROUP-NAME."
 (defvar tab-bar-history-old nil
   "Window configuration before the current command.")
 
+(defvar tab-bar-history-pre-command nil
+  "Command set to `this-command' by `pre-command-hook'.")
+
+(defvar tab-bar-history-done-command nil
+  "Command handled by `window-configuration-change-hook'.")
+
 (defvar tab-bar-history-old-minibuffer-depth 0
   "Minibuffer depth before the current command.")
 
 (defun tab-bar--history-pre-change ()
+  ;; Reset before the command could set it
+  (setq tab-bar-history-omit nil)
+  (setq tab-bar-history-pre-command this-command)
   (setq tab-bar-history-old-minibuffer-depth (minibuffer-depth))
   ;; Store window-configuration before possibly entering the minibuffer.
   (when (zerop tab-bar-history-old-minibuffer-depth)
@@ -1814,8 +1823,10 @@ Interactively, prompt for GROUP-NAME."
             (wc-point . ,(point-marker))))))
 
 (defun tab-bar--history-change ()
-  (when (and (not tab-bar-history-omit)
-             tab-bar-history-old
+  (when (and (not tab-bar-history-omit) tab-bar-history-old
+             ;; Don't register changes performed by the same command
+             ;; repeated in sequence, such as incremental window resizing.
+             (not (eq tab-bar-history-done-command 
tab-bar-history-pre-command))
              ;; Store window-configuration before possibly entering
              ;; the minibuffer.
              (zerop tab-bar-history-old-minibuffer-depth))
@@ -1824,8 +1835,8 @@ Interactively, prompt for GROUP-NAME."
                              (gethash (selected-frame) tab-bar-history-back))
                        tab-bar-history-limit)
              tab-bar-history-back))
-  (when tab-bar-history-omit
-    (setq tab-bar-history-omit nil)))
+  (setq tab-bar-history-old nil)
+  (setq tab-bar-history-done-command tab-bar-history-pre-command))
 
 (defun tab-bar-history-back ()
   "Restore a previous window configuration used in the current tab.



reply via email to

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