#+title: :ui workspaces #+subtitle: Tab emulation, persistence, & separate workspaces #+created: February 20, 2017 #+since: 2.0.0 * Description :unfold: This module adds support for workspaces, powered by [[doom-package:persp-mode]], as well as a API for manipulating them. #+begin_quote 💡 There are many ways to use workspaces. I spawn a workspace per task. Say I'm working in the main workspace, when I realize there is a bug in another part of my project. I open a new workspace and deal with it in there. In the meantime, I need to check my email, so mu4e gets its own workspace. Once I've completed the task, I close the workspace and return to main. #+end_quote ** Maintainers - [[doom-user:][@hlissner]] [[doom-contrib-maintainer:][Become a maintainer?]] ** Module flags /This module has no flags./ ** Packages - [[doom-package:persp-mode]] ** TODO Hacks #+begin_quote 󱌣 This module's hacks haven't been documented yet. [[doom-contrib-module:][Document them?]] #+end_quote ** TODO Changelog # This section will be machine generated. Don't edit it by hand. /This module does not have a changelog yet./ * Installation [[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]] /This module has no external requirements./ * TODO Usage #+begin_quote 󱌣 /This module's usage documentation is incomplete./ [[doom-contrib-module:][Complete it?]] #+end_quote ** Isolated buffer-list When persp-mode is active, ~doom-buffer-list~ becomes workspace-restricted. You can overcome this by using ~buffer-list~. ** Automatic workspaces A workspace is automatically created (and switched to) when you: - Create a new frame (with =make-frame=; bound to [[kbd:][M-N]] by default). - Switch to a project using ~projectile-switch-project~. ** Session persistence By default, your session is autosaved when you quit Emacs (or disable ~persp-mode~). You can load a previous session with ~M-x +workspace/load-session~ or ~:sl[oad]~ (ex command). You can supply either a name to load a specific session to replace your current one. ** Workspace persistence If you'd like to save a specific workspace, use ~M-x +workspace/save~, which can be loaded into the current session (as another workspace) with ~M-x +workspace/load~. ** Commands & Keybindings Here is a list of available commands, their default keybindings (defined in [[../../config/default/+evil-bindings.el][config/default/+bindings.el]]), and corresponding ex commands (if any -- defined in [[../../editor/evil/+commands.el][config/default/+evil-commands.el]]). | command | key / ex command | description | |-----------------------------------+----------------------+------------------------------------------------------------| | ~+workspace/new~ | [[kbd:][SPC TAB n]] | Create a new, blank workspace | | ~+workspace/display~ | [[kbd:][SPC TAB TAB]] | Display open workspaces in the mode-line | | ~+workspace/load~ | [[kbd:][SPC TAB l]] | Load a saved workspace into the current session | | ~+workspace/restore-last-session~ | [[kbd:][SPC TAB R]] | Restore last session | | ~+workspace/rename~ | [[kbd:][SPC TAB r]] | Rename the current workspace | | ~+workspace/save~ | [[kbd:][SPC TAB s]] | Save the current workspace to a file | | ~+workspace/switch-to~ | [[kbd:][SPC TAB .]] | Switch to an open workspace | | ~+workspace/other~ | [[kbd:][SPC TAB `]] | Switch to last workspace | | ~+workspace/switch-left~ | [[kbd:][SPC TAB []] / [[kbd:][[ w]] / [[kbd:][gT]] | Switch to previous workspace | | ~+workspace/switch-right~ | [[kbd:][SPC TAB ]]] / [[kbd:][] w]] / [[kbd:][gt]] | Switch to next workspace | | ~+workspace/kill~ | [[kbd:][SPC TAB d]] | Delete the current workspace | | ~+workspace/kill-session~ | [[kbd:][SPC TAB x]] / [[kbd:][:sclear]] | Clears the current session (kills all windows and buffers) | * TODO Configuration #+begin_quote 󱌣 This module has no configuration documentation yet. [[doom-contrib-module:][Write some?]] #+end_quote * Troubleshooting /There are no known problems with this module./ [[doom-report:][Report one?]] * Frequently asked questions /This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]] * TODO Appendix #+begin_quote 󱌣 /This module's appendix is incomplete./ [[doom-contrib-module:][Write more?]] #+end_quote ** API + ~+workspace-list~ -> list + ~+workspace-list-names~ -> list + ~+workspace-buffer-list &optional PERSP~ -> bool + ~+workspace-p OBJ~ -> bool + ~+workspace-exists-p NAME~ -> bool + ~+workspace-get NAME &optional NOERROR~ -> Struct + ~+workspace-current &optional FRAME WINDOW~ -> Struct + ~+workspace-current-name~ -> string + ~+workspace-load NAME~ + ~+workspace-load-session NAME~ + ~+workspace-save NAME~ + ~+workspace-save-session NAME~ + ~+workspace-new NAME~ + ~+workspace-rename NAME NEW-NAME~ + ~+workspace-kill NAME &optional INHIBIT-KILL-P~ + ~+workspace-switch NAME &optional AUTO-CREATE-P~ + ~+workspace-protected-p NAME~ -> bool