Support moving workspaces

* exwm-workspace.el (exwm-workspace-move-workspace): New function
	to move a workspace to a certain position.
This commit is contained in:
Adrián Medraño Calvo 2016-07-17 12:00:00 +00:00
parent e4911181d3
commit f4b8cc47c7

View file

@ -396,7 +396,7 @@ The optional FORCE option is for internal use only."
;;;###autoload ;;;###autoload
(defun exwm-workspace-swap-workspaces (workspace1 workspace2) (defun exwm-workspace-swap-workspaces (workspace1 workspace2)
"Swap position of WORKSPACE1 with that of WORKSPACE2." "Interchange position of WORKSPACE1 with that of WORKSPACE2."
(interactive (interactive
(unless (and (eq major-mode 'exwm-mode) exwm--fullscreen) ;it's invisible (unless (and (eq major-mode 'exwm-mode) exwm--fullscreen) ;it's invisible
(list (list
@ -415,6 +415,20 @@ The optional FORCE option is for internal use only."
(setq exwm-workspace-current-index pos1)))) (setq exwm-workspace-current-index pos1))))
(user-error "[EXWM] Frames are not workspaces")))) (user-error "[EXWM] Frames are not workspaces"))))
;;;###autoload
(defun exwm-workspace-move-workspace (workspace nth)
"Move WORKSPACE to the NTH position.
When called interactively, prompt for a workspace and move current one just
before it."
(interactive
(unless (and (eq major-mode 'exwm-mode) exwm--fullscreen) ;it's invisible
(list exwm-workspace--current
(exwm-workspace--position (exwm-workspace--prompt-for-workspace)))))
(let ((pos (exwm-workspace--position workspace)))
(if (= nth pos)
(user-error "[EXWM] Cannot move to same position")
(pop (nthcdr pos exwm-workspace--list))
(push workspace (nthcdr nth exwm-workspace--list)))))
(defun exwm-workspace--on-focus-in () (defun exwm-workspace--on-focus-in ()
"Handle unexpected frame switch." "Handle unexpected frame switch."