doomemacs/modules/ui/workspaces
2019-12-05 14:56:16 -05:00
..
autoload ui/workspaces: merge +ivy/workspace/switch-to into +workspace/switch-to 2019-12-01 15:41:28 -05:00
test
config.el Minor refactors & reformatting 2019-12-05 14:56:16 -05:00
packages.el
README.org Fix #+SINCE in ui/workspaces/README.org 2019-10-10 01:48:05 +03: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
+workspace/restore-last-session SPC TAB R Restore last session
+workspace/rename SPC TAB r Rename the current workspace
+workspace/save SPC TAB s Save the current workspace to a file
+workspace/switch-to SPC TAB . Switch to an open workspace
+workspace/other SPC TAB ` Switch to last workspace
+workspace/switch-left SPC TAB [ / [ w / gT Switch to previous workspace
+workspace/switch-right SPC TAB ] / ] w / gt Switch to next workspace
+workspace/delete SPC TAB d Delete the current 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