[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/exwm 2efd749: Avoid unnecessary focus changes when crea
From: |
Chris Feng |
Subject: |
[elpa] externals/exwm 2efd749: Avoid unnecessary focus changes when creating/killing buffers |
Date: |
Sun, 16 Dec 2018 08:38:53 -0500 (EST) |
branch: externals/exwm
commit 2efd7495d9755e12a611dbf27dac6057287cd590
Author: Chris Feng <address@hidden>
Commit: Chris Feng <address@hidden>
Avoid unnecessary focus changes when creating/killing buffers
* exwm-input.el (exwm-input--skip-buffer-list-update): New internal
variable for skipping the next 'buffer-list-update'.
(exwm-input--on-buffer-list-update): Skip when
`exwm-input--skip-buffer-list-update` is set.
* exwm-manage.el (exwm-manage--manage-window): Set
`exwm-input--skip-buffer-list-update` when creating/killing buffers.
---
exwm-input.el | 4 ++++
exwm-manage.el | 7 +++++--
2 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/exwm-input.el b/exwm-input.el
index b7b55d8..39fcbad 100644
--- a/exwm-input.el
+++ b/exwm-input.el
@@ -117,6 +117,9 @@ defined in `exwm-mode-map' here."
(defvar exwm-input--simulation-keys nil "Simulation keys in line-mode.")
+(defvar exwm-input--skip-buffer-list-update nil
+ "Skip the upcoming 'buffer-list-update'.")
+
(defvar exwm-input--temp-line-mode nil
"Non-nil indicates it's in temporary line-mode for char-mode.")
@@ -264,6 +267,7 @@ ARGS are additional arguments to CALLBACK."
(defun exwm-input--on-buffer-list-update ()
"Run in `buffer-list-update-hook' to track input focus."
(when (and (not (eq this-command #'handle-switch-frame))
+ (not exwm-input--skip-buffer-list-update)
(not (exwm-workspace--client-p))
;; The following conditions filter out events relating to temp
;; buffers.
diff --git a/exwm-manage.el b/exwm-manage.el
index 7000c53..6bb26f2 100644
--- a/exwm-manage.el
+++ b/exwm-manage.el
@@ -91,6 +91,7 @@ You can still make the X windows floating afterwards."
(defvar exwm-manage--ping-lock nil
"Non-nil indicates EXWM is pinging a window.")
+(defvar exwm-input--skip-buffer-list-update)
(defvar exwm-input-prefix-keys)
(defvar exwm-workspace--current)
(defvar exwm-workspace--id-struts-alist)
@@ -201,7 +202,8 @@ You can still make the X windows floating afterwards."
(make-instance 'xcb:ChangeSaveSet
:mode xcb:SetMode:Insert
:window id))
- (with-current-buffer (generate-new-buffer "*EXWM*")
+ (with-current-buffer (let ((exwm-input--skip-buffer-list-update t))
+ (generate-new-buffer "*EXWM*"))
;; Keep the oldest X window first.
(setq exwm--id-buffer-alist
(nconc exwm--id-buffer-alist `((,id . ,(current-buffer)))))
@@ -284,7 +286,8 @@ You can still make the X windows floating afterwards."
:stack-mode xcb:StackMode:Below)))
(xcb:flush exwm--connection)
(setq exwm--id-buffer-alist (assq-delete-all id exwm--id-buffer-alist))
- (let ((kill-buffer-query-functions nil))
+ (let ((kill-buffer-query-functions nil)
+ (exwm-input--skip-buffer-list-update t))
(kill-buffer (current-buffer)))
(throw 'return 'ignored))
(let ((index (plist-get exwm--configurations 'workspace)))
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [elpa] externals/exwm 2efd749: Avoid unnecessary focus changes when creating/killing buffers,
Chris Feng <=