Skip to content

Latest commit

 

History

History
104 lines (88 loc) · 4.8 KB

README.org

File metadata and controls

104 lines (88 loc) · 4.8 KB

ui/workspaces

Table of Contents

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

commandkey / ex commanddescription
+workspace/newSPC TAB nCreate a new, blank workspace
+workspace/displaySPC TAB TABDisplay open workspaces in the mode-line
+workspace/loadSPC TAB lLoad a saved workspace into the current session
+workspace/restore-last-sessionSPC TAB RRestore last session
+workspace/renameSPC TAB rRename the current workspace
+workspace/saveSPC TAB sSave the current workspace to a file
+workspace/switch-toSPC TAB .Switch to an open workspace
+workspace/otherSPC TAB `Switch to last workspace
+workspace/switch-leftSPC TAB [ / [ w / gTSwitch to previous workspace
+workspace/switch-rightSPC TAB ] / ] w / gtSwitch to next workspace
+workspace/deleteSPC TAB dDelete the current workspace
+workspace/kill-sessionSPC TAB x / :sclearClears 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