doomemacs/modules/ui/workspaces
Henrik Lissner 060f6a36d3
Fix +workspace/delete initially filtering workspaces
SPC u SPC TAB d will prompt you for the workspace you want to delete,
with the name of the current workspace prefilled into the the
minibuffer. This filters out all other workspaces from the get go, which
may fool you into thinking you can only delete the current workspace.

Now it only selects the current workspace by default, without filtering
them.
2019-09-29 12:50:20 -04:00
..
autoload Fix +workspace/delete initially filtering workspaces 2019-09-29 12:50:20 -04:00
test Update all unit tests 2019-09-03 00:59:46 -04:00
config.el ui/workspaces: associate files opened via emacsclient 2019-09-14 18:28:30 -04:00
packages.el 💥 Remove :feature category 2019-04-24 18:16:04 -04:00
README.org Standardize the READMEs of various modules 2019-05-09 21:31:23 -04:00

ui/workspaces

Description

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.

Module Flags

This module provides no flags.

Packages

Prerequisites

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