-
Notifications
You must be signed in to change notification settings - Fork 43
Toggling a specific workgroup
Junyoung Clare Jang edited this page Dec 14, 2020
·
1 revision
I wanted to have a certain window configuration (Org agenda and buffers) accessible with one key press. This is how:
(defun kk/current-wg-workgroup (default-workgroup)
"Return the name of the current workgroup, or a `default' name"
(or (ignore-errors (wg-workgroup-name (or (wg-current-workgroup t (window-frame)))))
default-workgroup))
(defun kk/make-wg-toggler (workgroup-name default-workgroup)
(lexical-let ((last-workgroup (kk/current-wg-workgroup default-workgroup)))
(lambda ()
(interactive)
"Toggle showing the `workgroup-name' workgroup"
(lexical-let
((now-wg (string= (kk/current-wg-workgroup default-workgroup) workgroup-name))
(target-workgroup last-workgroup))
(setq last-workgroup
(kk/current-wg-workgroup default-workgroup))
(message "Toggling workgroup: %s from workgroup: %s" target-workgroup last-workgroup)
(if now-wg
(wg-switch-to-workgroup target-workgroup)
(wg-switch-to-workgroup workgroup-name)
(wg-restore-wconfig
(wg-workgroup-get-saved-wconfig
(wg-get-workgroup workgroup-name)
workgroup-name))
)))))
(in this code if you are not on a workgroup before you toggle, you return to "normal" afterwards).
Now bind:
;; Toggle Org workgroup
(global-set-key (kbd "M-<f12>") (kk/make-wg-toggler "Org" "normal"))
and enjoy!