Add folder_indicator setting to show chevron and folder icon together (#62393)

# Objective

- Enable panels to show chevron and icon at the same time.
- Closes #8661

## Solution

- Replaces `folder_icon` with a new `folder_indicator` which converts
from a boolean to enum (`both`, `chevron`, `icon`) for the three display
cases

## Testing

- gpui and migration tests had been applied

## Self-Review Checklist:

- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content adheres to Zed's UI standards
([UX/UI](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
and
[icon](https://github.com/zed-industries/zed/blob/main/crates/icons/README.md)
guidelines)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable

## Showcase

### project panel

both | chevron | icon
--- | --- | ---
<img width="400" alt="both_project_panel"
src="https://github.com/user-attachments/assets/4c21e1a1-a7a4-4471-b7de-fe867373ddbd"
/> | <img width="400" alt="chevron_project_panel"
src="https://github.com/user-attachments/assets/a626a82e-e5b7-470d-9d93-ed5787dc83d6"
/> | <img width="400" alt="icon_project_panel"
src="https://github.com/user-attachments/assets/20f9c55e-87c4-477a-b4c9-b070d6e5a1db"
/>

### git panel

both | chevron | icon
--- | --- | ---
<img width="400" alt="both_git_panel"
src="https://github.com/user-attachments/assets/3dc166dd-9e63-4943-b803-df3f167876b6"
/> | <img width="400" alt="chevron_git_panel"
src="https://github.com/user-attachments/assets/8dfd2c10-3a68-439a-8019-4951b72e17d1"
/> | <img width="400" alt="icon_git_panel"
src="https://github.com/user-attachments/assets/d78a9938-91e7-4d39-a3c8-04647da67768"
/>

### outline panel

both | chevron | icon
--- | --- | ---
<img width="400" alt="both_outline_panel"
src="https://github.com/user-attachments/assets/1b58c679-0bea-4600-a8ac-e800b0e8d24c"
/> | <img width="400" alt="chevron_outline_panel"
src="https://github.com/user-attachments/assets/0a9358e4-ec89-40d8-8d5e-a53b784ed30a"
/> | <img width="400" alt="icon_outline_panel"
src="https://github.com/user-attachments/assets/d8bf5199-5a8c-4de0-b516-00247e6531a5"
/>



---

Release Notes:

- Added a `folder_indicator` setting that can show the disclosure
chevron and folder icon at the same time in the project, outline, and
git panels.

---------

Co-authored-by: Kirill Bulatov <kirill@zed.dev>
This commit is contained in:
DongandKirill Bulatov authored and GitHub committed 2026-08-27 20:11:28 +00:00
1 parent b421755e5d
commit 7472da6de7
22 files changed
+1119 -173

No files matched your search

+8 -8
View File
@@ -155,14 +155,14 @@ The following VS Code settings are automatically imported when you use **Import
**Other**
| VS Code Setting | Zed Setting |
| -------------------------- | -------------------------------------------------------- |
| `http.proxy` | `proxy` |
| `npm.packageManager` | `node.npm_path` |
| `telemetry.telemetryLevel` | `telemetry.metrics`, `telemetry.diagnostics` |
| `outline.icons` | `outline_panel.file_icons`, `outline_panel.folder_icons` |
| `chat.agent.enabled` | `agent.enabled` |
| `mcp` | `context_servers` |
| VS Code Setting | Zed Setting |
| -------------------------- | ------------------------------------------------------------ |
| `http.proxy` | `proxy` |
| `npm.packageManager` | `node.npm_path` |
| `telemetry.telemetryLevel` | `telemetry.metrics`, `telemetry.diagnostics` |
| `outline.icons` | `outline_panel.file_icons`, `outline_panel.folder_indicator` |
| `chat.agent.enabled` | `agent.enabled` |
| `mcp` | `context_servers` |
Zed doesn’t import extensions or keybindings, but this import gets core editor behavior close to your VS Code setup. If you skip that step during setup, you can still import settings manually later via the command palette:
+2 -2
View File
@@ -5260,7 +5260,7 @@ Run the {#action theme_selector::Toggle} action in the command palette to see a
"dock": "right",
"entry_spacing": "comfortable",
"file_icons": true,
"folder_icons": true,
"folder_indicator": "icon",
"git_status": true,
"indent_size": 20,
"auto_reveal_entries": true,
@@ -5797,7 +5797,7 @@ You can define these in user or project settings; project settings are merged on
"default_width": 300,
"dock": "left",
"file_icons": true,
"folder_icons": true,
"folder_indicator": "icon",
"git_status": true,
"indent_size": 20,
"auto_reveal_entries": true,
+2 -2
View File
@@ -475,7 +475,7 @@ Project panel can be shown/hidden with {#action project_panel::ToggleFocus} ({#k
"dock": "right", // Position of the dock (left, right)
"entry_spacing": "comfortable", // Vertical spacing (comfortable, standard)
"file_icons": true, // Show/hide file icons
"folder_icons": true, // Show/hide folder icons
"folder_indicator": "icon", // Dir glyph: icon, chevron, both
"git_status": true, // Indicate new/updated files
"indent_size": 20, // Pixels for each successive indent
"auto_reveal_entries": true, // Show file in panel when activating its buffer
@@ -598,7 +598,7 @@ See [Terminal settings](./reference/all-settings.md#terminal) for additional non
"default_width": 300, // Default width of the git panel
"dock": "left", // Where to dock: left, right
"file_icons": true, // Show/hide file_icons
"folder_icons": true, // Show file_icons (true), chevrons (false) for dirs
"folder_indicator": "icon", // Dir glyph: icon, chevron, both
"git_status": true, // Show git status
"indent_size": 20, // Indentation for nested items (pixels)
"indent_guides": {