Now that we are loading package autoloads files (as part of the generated doom-package-autoload-file when running make autoloads), many :commands properties are redundant. In fact, many def-package! blocks are redundant. In some cases, we can do without a config.el file entirely, and can move into the autoloads file or rely entirely on package autoloads. Also, many settings have been moved in their module's autoloads files, which makes them available ASAP; their use no longer depends on module load order. This gained me a modest ~10% boost in startup speed. |
||
---|---|---|
.. | ||
autoload | ||
test | ||
config.el | ||
packages.el | ||
README.org |
:feature workspaces
This module adds support for workspaces, powered by persp_mode, as well as a API for manipulating them.
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.
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-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
.
Appendix
Commands & Keybindings
Here is a list of available commands, their default keybindings (defined in private/default/+bindings.el), and corresponding ex commands (if any – defined in private/default/+evil-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