[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/exwm f820217 07/12: Split exwm-layout--refresh into thr
From: |
Chris Feng |
Subject: |
[elpa] externals/exwm f820217 07/12: Split exwm-layout--refresh into three functions |
Date: |
Sun, 19 Aug 2018 12:46:00 -0400 (EDT) |
branch: externals/exwm
commit f820217d00623489a655c79506816397319eb762
Author: Adrián Medraño Calvo <address@hidden>
Commit: Adrián Medraño Calvo <address@hidden>
Split exwm-layout--refresh into three functions
* exwm-layout.el (exwm-layout--refresh): Split in three functions
for clarity.
(exwm-layout--refresh-workspace, exwm-layout--refresh-other)
(exwm-layout--refresh-floating): New functions.
---
exwm-layout.el | 103 +++++++++++++++++++++++++++++++--------------------------
1 file changed, 57 insertions(+), 46 deletions(-)
diff --git a/exwm-layout.el b/exwm-layout.el
index 8f3c47f..b8c5bb3 100644
--- a/exwm-layout.el
+++ b/exwm-layout.el
@@ -261,39 +261,50 @@ selected by `other-buffer'."
;; `window-configuration-change-hook' makes the frame selected.
(unless frame
(setq frame (selected-frame)))
+ (if (not (exwm-workspace--workspace-p frame))
+ (if (frame-parameter frame 'exwm-outer-id)
+ (exwm-layout--refresh-floating frame)
+ (exwm-layout--refresh-other frame))
+ (exwm-layout--refresh-workspace frame)))
+
+(defun exwm-layout--refresh-floating (frame)
+ "Refresh floating frame FRAME."
+ (exwm--log "Refresh floating %s" frame)
+ (let ((window (frame-first-window frame)))
+ (with-current-buffer (window-buffer window)
+ (when (and (derived-mode-p 'exwm-mode)
+ ;; It may be a buffer waiting to be killed.
+ (exwm--id->buffer exwm--id))
+ (exwm--log "Refresh floating window #x%x" exwm--id)
+ (if (exwm-workspace--active-p exwm--frame)
+ (exwm-layout--show exwm--id window)
+ (exwm-layout--hide exwm--id))))))
+
+(defun exwm-layout--refresh-other (frame)
+ "Refresh client or nox frame FRAME."
+ ;; Other frames (e.g. terminal/graphical frame of emacsclient)
+ ;; We shall bury all `exwm-mode' buffers in this case
+ (exwm--log "Refresh other %s" frame)
+ (let ((windows (window-list frame 'nomini)) ;exclude minibuffer
+ (exwm-layout--other-buffer-exclude-exwm-mode-buffers t))
+ (dolist (window windows)
+ (with-current-buffer (window-buffer window)
+ (when (derived-mode-p 'exwm-mode)
+ (switch-to-prev-buffer window))))))
+
+(defun exwm-layout--refresh-workspace (frame)
+ "Refresh workspace frame FRAME."
+ (exwm--log "Refresh workspace %s" frame)
+ ;; Workspaces other than the active one can also be refreshed (RandR)
(let (covered-buffers ;EXWM-buffers covered by a new X window.
- vacated-windows ;Windows previously displaying EXWM-buffers.
- windows)
- (if (not (exwm-workspace--workspace-p frame))
- (if (frame-parameter frame 'exwm-outer-id)
- ;; Refresh a floating frame
- (let ((window (frame-first-window frame)))
- (with-current-buffer (window-buffer window)
- (when (and (derived-mode-p 'exwm-mode)
- ;; It may be a buffer waiting to be killed.
- (exwm--id->buffer exwm--id))
- (exwm--log "Refresh floating window #x%x" exwm--id)
- (if (exwm-workspace--active-p exwm--frame)
- (exwm-layout--show exwm--id window)
- (exwm-layout--hide exwm--id)))))
- ;; Other frames (e.g. terminal/graphical frame of emacsclient)
- ;; We shall bury all `exwm-mode' buffers in this case
- (setq windows (window-list frame 'nomini))
- (let ((exwm-layout--other-buffer-exclude-exwm-mode-buffers t))
- (dolist (window windows)
- (with-current-buffer (window-buffer window)
- (when (derived-mode-p 'exwm-mode)
- (switch-to-prev-buffer window))))))
- ;; Refresh the whole workspace
- ;; Workspaces other than the active one can also be refreshed (RandR)
- (exwm--log "Refresh workspace %s" frame)
- (dolist (pair exwm--id-buffer-alist)
- (with-current-buffer (cdr pair)
- (when (and (not exwm--floating-frame) ;exclude floating X windows
- (or exwm-layout-show-all-buffers
- ;; Exclude X windows on other workspaces
- (eq frame exwm--frame)))
- (setq windows (get-buffer-window-list (current-buffer) 'nomini
frame))
+ vacated-windows) ;Windows previously displaying EXWM-buffers.
+ (dolist (pair exwm--id-buffer-alist)
+ (with-current-buffer (cdr pair)
+ (when (and (not exwm--floating-frame) ;exclude floating X windows
+ (or exwm-layout-show-all-buffers
+ ;; Exclude X windows on other workspaces
+ (eq frame exwm--frame)))
+ (let ((windows (get-buffer-window-list (current-buffer) 'nomini
frame)))
(if (not windows)
(when (eq frame exwm--frame)
(exwm-layout--hide exwm--id))
@@ -318,20 +329,20 @@ selected by `other-buffer'."
prev-buffer
(with-current-buffer prev-buffer
(derived-mode-p 'exwm-mode))
- (push prev-buffer covered-buffers))))))))
- ;; Set some sensible buffer to vacated windows.
- (let ((exwm-layout--other-buffer-exclude-buffers covered-buffers))
- (dolist (window vacated-windows)
- (switch-to-prev-buffer window)))
- ;; Make sure windows floating / on other workspaces are excluded
- (let ((exwm-layout--other-buffer-exclude-exwm-mode-buffers t))
- (dolist (window (window-list frame 'nomini))
- (with-current-buffer (window-buffer window)
- (when (and (derived-mode-p 'exwm-mode)
- (or exwm--floating-frame (not (eq frame exwm--frame))))
- (switch-to-prev-buffer window)))))
- (exwm-layout--set-client-list-stacking)
- (xcb:flush exwm--connection))))
+ (push prev-buffer covered-buffers)))))))))
+ ;; Set some sensible buffer to vacated windows.
+ (let ((exwm-layout--other-buffer-exclude-buffers covered-buffers))
+ (dolist (window vacated-windows)
+ (switch-to-prev-buffer window)))
+ ;; Make sure windows floating / on other workspaces are excluded
+ (let ((exwm-layout--other-buffer-exclude-exwm-mode-buffers t))
+ (dolist (window (window-list frame 'nomini))
+ (with-current-buffer (window-buffer window)
+ (when (and (derived-mode-p 'exwm-mode)
+ (or exwm--floating-frame (not (eq frame exwm--frame))))
+ (switch-to-prev-buffer window)))))
+ (exwm-layout--set-client-list-stacking)
+ (xcb:flush exwm--connection)))
(defun exwm-layout--on-minibuffer-setup ()
"Refresh layout when minibuffer grows."
- [elpa] externals/exwm updated (4d43e31 -> 2b1ed2c), Chris Feng, 2018/08/19
- [elpa] externals/exwm ac600f0 02/12: Commands for interacting with the log buffer remotely, Chris Feng, 2018/08/19
- [elpa] externals/exwm 5c1aa4d 04/12: Consider windows of the frame being refreshed, not the selected one at the time exwm-layout--refresh runs, Chris Feng, 2018/08/19
- [elpa] externals/exwm 633065a 06/12: Don't assume order of `get-buffer-window-list' results, Chris Feng, 2018/08/19
- [elpa] externals/exwm 8d15a39 01/12: Print log output to an EXWM-specific messages buffer, Chris Feng, 2018/08/19
- [elpa] externals/exwm b6a3b7b 08/12: ; Unimportant tweaks, Chris Feng, 2018/08/19
- [elpa] externals/exwm 11fecb5 05/12: Use more explicit argument for excluding minibuffers, Chris Feng, 2018/08/19
- [elpa] externals/exwm d4a772f 10/12: ; Comment layout algorithm., Chris Feng, 2018/08/19
- [elpa] externals/exwm 2b1ed2c 12/12: Merge branch 'medranocalvo/fix-x-window-vanish' into externals/exwm, Chris Feng, 2018/08/19
- [elpa] externals/exwm 33dec8d 03/12: Trace more functions, Chris Feng, 2018/08/19
- [elpa] externals/exwm f820217 07/12: Split exwm-layout--refresh into three functions,
Chris Feng <=
- [elpa] externals/exwm 29f2289 09/12: Consistently name helper windows, Chris Feng, 2018/08/19
- [elpa] externals/exwm be10e26 11/12: Merge branch 'medranocalvo/exwm-log-buffer' into externals/exwm, Chris Feng, 2018/08/19