diff options
author | Chris Feng <chris.w.feng@gmail.com> | 2017-05-30T16·12+0800 |
---|---|---|
committer | Chris Feng <chris.w.feng@gmail.com> | 2017-05-30T16·12+0800 |
commit | 19515dc0749e820be5ec528c7a9a7bdceaac7c65 (patch) | |
tree | d4d3ccff1d0e813a7e41a2cca9d46a316fd0fe1e | |
parent | 851ed8c280cb9fe47f388773f3ee0ab90815fa99 (diff) |
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.
-rw-r--r-- | exwm-workspace.el | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/exwm-workspace.el b/exwm-workspace.el index 302e82e6dfbe..8c22b7c1d805 100644 --- a/exwm-workspace.el +++ b/exwm-workspace.el @@ -779,6 +779,8 @@ INDEX must not exceed the current number of workspaces." (xcb:flush exwm--connection))) (setq exwm-workspace--switch-history-outdated t))) +(defvar exwm-layout-show-all-buffers) + ;;;###autoload (defun exwm-workspace-switch-to-buffer (buffer-or-name) "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-window (frame-root-window exwm--floating-frame))) ;; On another workspace. - (exwm-workspace-move-window exwm-workspace--current - exwm--id)) + (if exwm-layout-show-all-buffers + (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. (switch-to-buffer buffer-or-name))))) |