# Introduce settings profiles \(\#35339\) · gitcafe/zed

[View on GitCafe](https://git.cafe/gitcafe/zed/commit/5ef5f3c5caf8f0748f873a8dc27821dda6383838)

Repository: [gitcafe/zed](https://git.cafe/gitcafe/zed)

Visibility: public

Requested revision: 5ef5f3c5caf8f0748f873a8dc27821dda6383838

Requested commit: 5ef5f3c5caf8f0748f873a8dc27821dda6383838

Commit: 5ef5f3c5caf8f0748f873a8dc27821dda6383838

Tree: a719632d1ab09f13d9ec63cee5d380851fc86ec3

Author: Joseph T\. Lyons

Committer: GitHub

## Message

````
Introduce settings profiles (#35339)

Settings Profiles

- [X] Allow profiles to be defined, where each profile can be any of
Zed's settings
    - [X] Autocompletion of all settings
    - [X] Errors on invalid keys
- [X] Action brings up modal that shows user-defined profiles
- [X] Alphabetize profiles
- [X] Ability to filter down via keyboard, and navigate via arrow up and
down
- [X] Auto select Disabled option by default (first in list, after
alphabetizing user-defined profiles)
- [X] Automatically select active profile on next picker summoning
- [X] Persist settings until toggled off
- [X] Show live preview as you select from the profile picker
- [X] Tweaking a setting, while in a profile, updates the profile live
- [X] Make sure actions that live update Zed, such as `cmd-0`, `cmd-+`,
and `cmd--`, work while in a profile
- [X] Add a test to track state

Release Notes:

- Added the ability to configure settings profiles, via the "profiles"
key. Example:

```json
{
  "profiles": {
    "Streaming": {
      "agent_font_size": 20,
      "buffer_font_size": 20,
      "theme": "One Light",
      "ui_font_size": 20
    }
  }
}
```

To set a profile, use `settings profile selector: toggle`
````

## Parents

- [2d4afd2119d90e6c3681b3e890752f16bf51d711](https://git.cafe/gitcafe/zed/commit/2d4afd2119d90e6c3681b3e890752f16bf51d711?format=markdown)

[Source at this commit](https://git.cafe/gitcafe/zed/tree/5ef5f3c5caf8f0748f873a8dc27821dda6383838?format=markdown)
