doomemacs/modules/ui/workspaces/README.org
Henrik Lissner 77e4cc4d58
💥 Remove :feature category
:feature was a "catch-all" category. Many of its modules fit better in
other categories, so they've been moved:

- feature/debugger -> tools/debugger
- feature/evil -> editor/evil
- feature/eval -> tools/eval
- feature/lookup -> tools/lookup
- feature/snippets -> editor/snippets
- feature/file-templates -> editor/file-templates
- feature/workspaces -> ui/workspaces

More potential changes in the future:

- A new :term category for terminal emulation modules (eshell, term and
  vterm).
- A new :os category for modules dedicated to os-specific functionality.
  The :tools macos module would fit here, but so would modules for nixos
  and arch.
- A new :services category for web-service integration, like wakatime,
  twitter, elfeed, gist and pastebin services.
2019-04-24 18:16:04 -04:00

4.1 KiB
Raw Blame History

:ui 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.

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 to 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.

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
doom/quicksave-load SPC TAB L / :sl[oad] Replace current session with a saved one
+workspace/save SPC TAB s Save the current workspace to a file
doom/quicksave-save 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