Ability to create different profiles. #23958
Replies: 15 comments 4 replies
-
|
IIRC there are already some per-language settings, but there definitely is more that could be done with that. |
Beta Was this translation helpful? Give feedback.
-
|
We also have local settings as well - which can kind of act as a bandaid in this case, though, it isn't ideal in the context of the original request. |
Beta Was this translation helpful? Give feedback.
-
|
Personally, I think this should follow something like
{
// The base profile
"name": "base",
"theme": "Catppuccin Mocha",
"vim_mode": true,
}And then: {
// The typescript profile
"extends": ["base", ...],
"name": "typescript",
"languages": {
"TypeScript": {
"code_actions_on_format": {
"source.fixAll.eslint": true
}
}
}
}Primitive options like
{
// The base profile
"name": "base",
"theme": "Catppuccin Mocha",
"vim_mode": true,
}{
// The swift profile
"extends": ["base", ...],
"name": "swift",
"extensions": ["zed:sourcekit-lsp-extension"]
}Some people also like the ability to disable all extensions in the base profile and only enable on specific ones, I think all this possibilities should be supported. What you think? |
Beta Was this translation helpful? Give feedback.
-
|
Hmm... Should the profile also specify the github account and e.g. git author info to use (once we have git commit support)? I.e. separate "work" and "personal" profiles. Formatting etc options should really be done via local settings IMHO, since different repos have different policies for that. |
Beta Was this translation helpful? Give feedback.
-
|
Local settings work really well for a lot of use cases. However, since local settings are (usually) checked into source control, they are bad for personalization settings. E.g. setting fonts/themes for the whole team is not a good idea. Profiles can solve for that. But the most need for profiles (as implemented in VS Code) I have is to selectively load extensions based on programming language. While performance concern might not (yet) be an issue for zed, but some extensions can start conflicting with other ones. Again, putting this in local settings may solve part of the problem, but I would hesitate to force all my non-essential extensions on the whole team. |
Beta Was this translation helpful? Give feedback.
-
|
Hey, thanks for keeping this issue up. Some feedback on my side: I believe a profile is per project. we can have a .zed folder which takes the users configuration and merge it with the settings.json living inside of the .zed folder. This allow teams to share extensions for example. I believe the .zed folder should allow a subset of the configuration, which means, you cannot change theme in a .zed folder. Basically I believe for sanity, the word "Extending" is just a cloning of the json which technically another profile being duplicated. So we can have settings.json, and even nvim.json, python.json or more. |
Beta Was this translation helpful? Give feedback.
-
That's something I strongly disagree. Profile is a user-specific and idiosyncratic set of extensions and preferences that are often used together. E.g. while working on devops automation I may prefer different layout from that when I work on mobile or web apps. And those preferences are not something I would impose on a team working on the same project. In addition, I would like to easily reuse such profiles for many projects, so initial project setup doesn't involve copying and tweaking zed config from a previous project. Again, project settings are shared, while profiles should be private. |
Beta Was this translation helpful? Give feedback.
-
|
@shishkin I agree, but I wasn't explicit enough, what i meant was a profile can be reused by a project. Example; you have 10 projects, you have 3 profile. But you open the 9th project in profile number 2, it should reopen with the same profile each time, unless you change it. But we can have a profile per project. Example; Let's say you have your current profile activated, since it has a .zed with settings.json inside it will merge your config with what we have in the .zed folder. So it is user specific at its core, but if you open different projects on different profile, we should be able to memorize that this project was on which profile. And in case the project has a project specific .zed/settings.json it should load and merge with your current profile but this project specific settings should not allow everything. Example, it should not override themes, or other user specific configuration. I hope it clarified or even improved what i said earlier. |
Beta Was this translation helpful? Give feedback.
-
|
Maybe zed can take some inspiration from VSCode profile feature |
Beta Was this translation helpful? Give feedback.
-
|
Thanks everyone for the feedback. I'm going to convert this to a discussion since that's a better venue for hashing out whether we want a feature along these lines and if so what the design should be. |
Beta Was this translation helpful? Give feedback.
-
|
Any updates on this? |
Beta Was this translation helpful? Give feedback.
-
|
Profile feature is def one of the best features VSCode offers and it would be pretty great to have it on Zed as well. |
Beta Was this translation helpful? Give feedback.
-
|
My main usage for profiles would be to have an assistant-only mode where I've maximised the size of the agent panel and I use it standalone for general Q&A. Would be nice to be able to start that with |
Beta Was this translation helpful? Give feedback.
-
|
I can't see it documented anywhere but in Zed there's the "switch profiles" command in the command palette, and also if you click on your account picture in the top-right of thew window ( This seems to correlate in "profiles": {
"Home": {},
"Work": {}
}And switching profiles seems to apply the settings in those blocks 🙂 |
Beta Was this translation helpful? Give feedback.
-
|
I currently maintain two isolated configurations for Cursor—one for personal work and one for corporate work. This lets me keep API keys, authentication tokens, logins, prompts, and settings completely separate. _launch_cursor_app() {
local user_dir="$1"
shift
if [[ $# -eq 0 ]]; then
command cursor --user-data-dir="$user_dir" .
else
command cursor --user-data-dir="$user_dir" "$@"
fi
}
# Personal profile (default "cursor")
cursor() {
_launch_cursor_app "$HOME/Library/Application Support/Cursor" "$@"
}
# Work profile (short alias "cw")
cw() {
_launch_cursor_app "$HOME/Library/Application Support/Cursor-Work" "$@"
}This gives me: cursor → personal environment Zed does support an override of the user-data directory, but currently:
This makes it difficult to maintain clean personal vs. corporate profiles. Even with a separate user-data directory, both profiles still end up sharing:
Ideally, Zed would allow something like:
Or a flag/env-var such as: zed --config-dir=/path/to/alternate/zed-config
ZED_CONFIG_DIR=/path/to/alternate/zed-config zedIs this possible now? If not, is support for selecting or overriding the config directory on the roadmap? Thanks! |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Check for existing issues
Describe the feature
Currently we have only 1 default setting. The problem arises for people working on different projects which needs different settings.
Example; We can have Rust Profile (which has all the settings for the best experience for Rust). Laravel Profile, Django Profile. Python profile etc. It doesn't need to be specific. But we just need to have the ability to have different profiles.
If applicable, add mockups / screenshots to help present your vision of the feature
We can have prebuilt profiles (for specific languages/frameworks) or we can have custom profiles. Those profiles can be exported, imported, deleted, extended.
Beta Was this translation helpful? Give feedback.
All reactions