Workspace feature
Have you checked for existing feature requests?
- [X] Completed
Summary
About the workspace feature discuss on Discord, here how I imagine this feature: We can create few defaults workspace like Light editor and IDE mode (or whatever). User can create/edit/delete workspaces to fit his project needs.
Enter your response below:
For example:
- I just need a light editor, so I go to
Workspace->Light editorand it disable all packages (for example). - I want to work on NodeJS project, and I know I need, JS syntax, a terminal to run commands, git etc... I go to
Workspace->NodeJS projectand it load all packages needed to work on NodeJS project (let's set some packages by default and let user custom them in workspace settings)
In menu (like package or whatever)
- Workspace
- Light editor
- NodeJS
- C++ supacool workspace
- WhateverUserCreate
- ...
- [Manage Workspaces]
In a Workspaces tab:
| < Workspaces Select input > | Add | Edit | Remove |
|---|---|---|---|
| Light editor | |||
| NodeJS | |||
| C++ supacool workspace | |||
| ... |
User can enable/disable package:
| Packages | Enable |
|-------------------|--------|
| Terminal | |
| AnotherPackage | x |
| AnotherPackagetoo | |
Any alternatives?
no alt actually
Other examples:
No response
My idea would be to make it similar to node projects. A workspace is located somewhere with all data stored in a .pulsar directory. it is available from that and any sub directory. They can inhert each other and there is a default one (the current one). If you have multiple windows open they can habe packages installed/enabled independently.
Discussed needs to be if windows can change the workspace (without reloading), if multiple workspaces can be in one window and how exactly is the used workspace determined/set.
My only issue with this is: how far do we go? Do we have different keybindings? Or do we only enable/disable packages? Do we have different configs for packages depending on the workspace?
Also, it's worth noting that unless we restart the editor, this feature will not consume less memory because as soon as a package loads, it can't be un-loaded - the require already ran, and Node AFAIK does not have support to remove code that was already required (few languages actually have this, to be honest).
Finally, not all packages play nice on unload, so this feature may cause some weirdness like commands that supposedly should go away keep appearing on the editor...