[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/exwm 3763195 3/6: Use `buffer-predicate' frame paramete
From: |
Chris Feng |
Subject: |
[elpa] externals/exwm 3763195 3/6: Use `buffer-predicate' frame parameter to prevent switching to visible EXWM buffers |
Date: |
Sun, 20 Mar 2016 04:05:00 +0000 |
branch: externals/exwm
commit 3763195fe3205090e1f405970421662523b7df7e
Author: Adrián Medraño Calvo <address@hidden>
Commit: Adrián Medraño Calvo <address@hidden>
Use `buffer-predicate' frame parameter to prevent switching to visible EXWM
buffers
* exwm-layout.el (exwm-layout--other-buffer-predicate): New
function to be set as `buffer-predicate' frame parameter.
* exwm-workspace.el (exwm-workspace--init): Use above function on
workspace frames.
---
exwm-layout.el | 11 +++++++++++
exwm-workspace.el | 4 ++++
2 files changed, 15 insertions(+), 0 deletions(-)
diff --git a/exwm-layout.el b/exwm-layout.el
index d084c96..b0b9467 100644
--- a/exwm-layout.el
+++ b/exwm-layout.el
@@ -240,6 +240,17 @@
(xcb:flush exwm--connection)))
(cl-incf exwm-layout--fullscreen-frame-count))
+(defun exwm-layout--other-buffer-predicate (buffer)
+ "Return non-nil when the BUFFER may be displayed in selected frame.
+
+Prevents EXWM-mode buffers already being displayed on some other window from
+being selected.
+
+Should be set as `buffer-predicate' frame parameter for all
+frames. Used by `other-buffer'."
+ (not (and (eq 'exwm-mode (buffer-local-value 'major-mode buffer))
+ (get-buffer-window buffer t))))
+
(defvar exwm-layout-show-all-buffers nil
"Non-nil to allow switching to buffers on other workspaces.")
diff --git a/exwm-workspace.el b/exwm-workspace.el
index b2fb648..c9a57f5 100644
--- a/exwm-workspace.el
+++ b/exwm-workspace.el
@@ -235,6 +235,7 @@ The optional FORCE option is for internal use only."
(declare-function exwm-layout--show "exwm-layout.el" (id &optional window))
(declare-function exwm-layout--hide "exwm-layout.el" (id))
(declare-function exwm-layout--refresh "exwm-layout.el")
+(declare-function exwm-layout--other-buffer-predicate "exwm-layout.el"
(buffer))
;;;###autoload
(defun exwm-workspace-move-window (index &optional id)
@@ -684,6 +685,9 @@ The optional FORCE option is for internal use only."
;; The default behavior of `display-buffer' (indirectly called by
;; `minibuffer-completion-help') is not correct here.
(cl-pushnew '(exwm-workspace--display-buffer) display-buffer-alist))
+ ;; Prevent `other-buffer' from selecting already displayed EXWM buffers.
+ (modify-all-frames-parameters
+ '((buffer-predicate . exwm-layout--other-buffer-predicate)))
;; Configure workspaces
(dolist (i exwm-workspace--list)
(let ((outer-id (string-to-number (frame-parameter i 'outer-window-id)))
- [elpa] externals/exwm updated (3cef44a -> 44d05d2), Chris Feng, 2016/03/20
- [elpa] externals/exwm e470447 4/6: Use `other-buffer' instead of "*scratch*", Chris Feng, 2016/03/20
- [elpa] externals/exwm f6cd950 1/6: Minor cleanup, Chris Feng, 2016/03/20
- [elpa] externals/exwm 8a1c376 2/6: Set the correct buffer before checking the `major-mode', Chris Feng, 2016/03/20
- [elpa] externals/exwm 3763195 3/6: Use `buffer-predicate' frame parameter to prevent switching to visible EXWM buffers,
Chris Feng <=
- [elpa] externals/exwm 4d6b19a 5/6: Restore a sensible buffer when replacing EXWM buffers, Chris Feng, 2016/03/20
- [elpa] externals/exwm 44d05d2 6/6: Merge branch 'medranocalvo/remember-last-buffer' into externals/exwm, Chris Feng, 2016/03/20