Allow switching to a workspace by selecting one X window on it

* exwm-workspace.el (exwm-workspace-switch-to-buffer): Only allows it
when `exwm-layout-show-all-buffers' is nil.
This commit is contained in:
Chris Feng 2017-05-31 00:12:22 +08:00
parent 851ed8c280
commit 19515dc074

View file

@ -779,6 +779,8 @@ INDEX must not exceed the current number of workspaces."
(xcb:flush exwm--connection))) (xcb:flush exwm--connection)))
(setq exwm-workspace--switch-history-outdated t))) (setq exwm-workspace--switch-history-outdated t)))
(defvar exwm-layout-show-all-buffers)
;;;###autoload ;;;###autoload
(defun exwm-workspace-switch-to-buffer (buffer-or-name) (defun exwm-workspace-switch-to-buffer (buffer-or-name)
"Make the current Emacs window display another buffer." "Make the current Emacs window display another buffer."
@ -818,8 +820,16 @@ INDEX must not exceed the current number of workspaces."
(select-frame-set-input-focus exwm--floating-frame) (select-frame-set-input-focus exwm--floating-frame)
(select-window (frame-root-window exwm--floating-frame))) (select-window (frame-root-window exwm--floating-frame)))
;; On another workspace. ;; On another workspace.
(exwm-workspace-move-window exwm-workspace--current (if exwm-layout-show-all-buffers
exwm--id)) (exwm-workspace-move-window exwm-workspace--current
exwm--id)
(let ((window (get-buffer-window buffer-or-name exwm--frame)))
(if window
(set-frame-parameter exwm--frame
'exwm-selected-window window)
(set-window-buffer (frame-selected-window exwm--frame)
buffer-or-name)))
(exwm-workspace-switch exwm--frame)))
;; Ordinary buffer. ;; Ordinary buffer.
(switch-to-buffer buffer-or-name))))) (switch-to-buffer buffer-or-name)))))