4.1 KiB
:feature workspaces
This module adds support for workspaces, powered by persp_mode, as well as a unified API for manipulating them.
There are many ways to use workspaces. Some use them to group buffers/windows by project or categories (views, models, logic, etc). I use them differently: on a per-task basis, which may traverse multiple projects or aspects, but are tied to an objective. For example: implement a specific feature or fix a certain bug; sometimes unrelated to the project at hand.
Table of Contents TOC
Install
This module has no additional dependencies.
Features
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 toM-Nby default) - Switch to a project using
projectile-switch-project(or its ivy/helm equivalents)
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.
Appendix
Commands & Keybindings
Here is a list of available commands, their default keybindings (defined in private/hlissner/+bindings.el), and corresponding ex commands (if any – defined in private/hlissner/+commands.el).
| command | key / ex command | description |
|---|---|---|
+workspace/new |
SPC TAB n |
Create a new, blank workspace |
+workspace/display |
SPC TAB TAB |
Display open workspaces in the mode-line |
+workspace/load |
SPC TAB l |
Load a saved workspace into the current session |
+workspace/load-session |
SPC TAB L / :sl[oad] |
Replace current session with a saved one |
+workspace/save |
SPC TAB s |
Save the current workspace to a file |
+workspace/save-session |
SPC TAB S / :ss[ave] |
Save current session |
+workspace/switch-to |
SPC TAB . |
Switch to an open workspace |
+workspace/switch-left |
SPC TAB [ / [ w / gT |
Switch to previous workspace |
+workspace/switch-right |
SPC TAB [ / ] w / gt |
Switch to next workspace |
+workspace/kill-session |
SPC TAB X / :sclear |
Clears the current session (kills all windows and buffers) |
API
+workspace-list-> list<Struct>+workspace-list-names-> list<string>+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-delete NAME &optional INHIBIT-KILL-P+workspace-switch NAME &optional AUTO-CREATE-P+workspace-protected-p NAME-> bool