docs: Document more settings (#36993)

Finn Evers created

Within our hosted docs, we are missing documentation for quite a lot of
settings - sometimes for newer settings, sometimes for settings that are
more than two years old. This leads (amongst other things) to feature
requests for features that are already supported, false issue reports
(because people couldn't find the setting for what caused the issue
within the documentation) and generally just takes time for for both
these affected by the missing documentation as well as these handling
the questions around it.

This change here takes a stab at the problem by adding more
documentation for a lot supported setting (not all of it) as well as
reorganizing some settings so that some stuff can (hopefully) be found
more easily. Eventually, we should find a better method for this, but
it's still better than informing people for the n-th time that we e.g.
have `agent_font_size` for the agent panel. Manually audited twice but
I'll take another thorough look before merging.

Release Notes:

- N/A

Change summary

docs/src/configuring-zed.md | 1071 +++++++++++++++++++++++++++++++++-----
1 file changed, 910 insertions(+), 161 deletions(-)

Detailed changes

docs/src/configuring-zed.md 🔗

@@ -104,6 +104,70 @@ Non-negative `float` values
 }
 ```
 
+## Agent Font Size
+
+- Description: The font size for text in the agent panel. Inherits the UI font size if unset.
+- Setting: `agent_font_size`
+- Default: `null`
+
+**Options**
+
+`integer` values from `6` to `100` pixels (inclusive)
+
+## Allow Rewrap
+
+- Description: Controls where the `editor::Rewrap` action is allowed in the current language scope
+- Setting: `allow_rewrap`
+- Default: `"in_comments"`
+
+**Options**
+
+1. Allow rewrap in comments only:
+
+```json
+{
+  "allow_rewrap": "in_comments"
+}
+```
+
+2. Allow rewrap everywhere:
+
+```json
+{
+  "allow_rewrap": "everywhere"
+}
+```
+
+3. Never allow rewrap:
+
+```json
+{
+  "allow_rewrap": "never"
+}
+```
+
+Note: This setting has no effect in Vim mode, as rewrap is already allowed everywhere.
+
+## Auto Indent
+
+- Description: Whether indentation should be adjusted based on the context whilst typing. This can be specified on a per-language basis.
+- Setting: `auto_indent`
+- Default: `true`
+
+**Options**
+
+`boolean` values
+
+## Auto Indent On Paste
+
+- Description: Whether indentation of pasted content should be adjusted based on the context
+- Setting: `auto_indent_on_paste`
+- Default: `true`
+
+**Options**
+
+`boolean` values
+
 ## Auto Install extensions
 
 - Description: Define extensions to be autoinstalled or never be installed.
@@ -182,42 +246,30 @@ Define extensions which should be installed (`true`) or never installed (`false`
 }
 ```
 
-## Restore on Startup
+## Autoscroll on Clicks
 
-- Description: Controls session restoration on startup.
-- Setting: `restore_on_startup`
-- Default: `last_session`
+- Description: Whether to scroll when clicking near the edge of the visible text area.
+- Setting: `autoscroll_on_clicks`
+- Default: `false`
 
 **Options**
 
-1. Restore all workspaces that were open when quitting Zed:
-
-```json
-{
-  "restore_on_startup": "last_session"
-}
-```
+`boolean` values
 
-2. Restore the workspace that was closed last:
+## Auto Signature Help
 
-```json
-{
-  "restore_on_startup": "last_workspace"
-}
-```
+- Description: Show method signatures in the editor, when inside parentheses
+- Setting: `auto_signature_help`
+- Default: `false`
 
-3. Always start with an empty editor:
+**Options**
 
-```json
-{
-  "restore_on_startup": "none"
-}
-```
+`boolean` values
 
-## Autoscroll on Clicks
+### Show Signature Help After Edits
 
-- Description: Whether to scroll when clicking near the edge of the visible text area.
-- Setting: `autoscroll_on_clicks`
+- Description: Whether to show the signature help after completion or a bracket pair inserted. If `auto_signature_help` is enabled, this setting will be treated as enabled also.
+- Setting: `show_signature_help_after_edits`
 - Default: `false`
 
 **Options**
@@ -378,6 +430,24 @@ For example, to use `Nerd Font` as a fallback, add the following to your setting
 
 `"standard"`, `"comfortable"` or `{ "custom": float }` (`1` is compact, `2` is loose)
 
+## Centered Layout
+
+- Description: Configuration for the centered layout mode.
+- Setting: `centered_layout`
+- Default:
+
+```json
+"centered_layout": {
+  "left_padding": 0.2,
+  "right_padding": 0.2,
+}
+```
+
+**Options**
+
+The `left_padding` and `right_padding` options define the relative width of the
+left and right padding of the central pane from the workspace when the centered layout mode is activated. Valid values range is from `0` to `0.4`.
+
 ## Close on File Delete
 
 - Description: Whether to automatically close editor tabs when their corresponding files are deleted from disk.
@@ -402,23 +472,63 @@ Note: Dirty files (files with unsaved changes) will not be automatically closed
 
 `boolean` values
 
-## Centered Layout
+## Diagnostics Max Severity
 
-- Description: Configuration for the centered layout mode.
-- Setting: `centered_layout`
-- Default:
+- Description: Which level to use to filter out diagnostics displayed in the editor
+- Setting: `diagnostics_max_severity`
+- Default: `null`
+
+**Options**
+
+1. Allow all diagnostics (default):
 
 ```json
-"centered_layout": {
-  "left_padding": 0.2,
-  "right_padding": 0.2,
+{
+  "diagnostics_max_severity": null
+}
+```
+
+2. Show only errors:
+
+```json
+{
+  "diagnostics_max_severity": "error"
+}
+```
+
+3. Show errors and warnings:
+
+```json
+{
+  "diagnostics_max_severity": "warning"
+}
+```
+
+4. Show errors, warnings, and information:
+
+```json
+{
+  "diagnostics_max_severity": "information"
+}
+```
+
+5. Show all including hints:
+
+```json
+{
+  "diagnostics_max_severity": "hint"
 }
 ```
 
+## Disable AI
+
+- Description: Whether to disable all AI features in Zed
+- Setting: `disable_ai`
+- Default: `false`
+
 **Options**
 
-The `left_padding` and `right_padding` options define the relative width of the
-left and right padding of the central pane from the workspace when the centered layout mode is activated. Valid values range is from `0` to `0.4`.
+`boolean` values
 
 ## Direnv Integration
 
@@ -435,6 +545,42 @@ There are two options to choose from:
 1. `shell_hook`: Use the shell hook to load direnv. This relies on direnv to activate upon entering the directory. Supports POSIX shells and fish.
 2. `direct`: Use `direnv export json` to load direnv. This will load direnv directly without relying on the shell hook and might cause some inconsistencies. This allows direnv to work with any shell.
 
+## Double Click In Multibuffer
+
+- Description: What to do when multibuffer is double clicked in some of its excerpts (parts of singleton buffers)
+- Setting: `double_click_in_multibuffer`
+- Default: `"select"`
+
+**Options**
+
+1. Behave as a regular buffer and select the whole word (default):
+
+```json
+{
+  "double_click_in_multibuffer": "select"
+}
+```
+
+2. Open the excerpt clicked as a new buffer in the new tab:
+
+```json
+{
+  "double_click_in_multibuffer": "open"
+}
+```
+
+For the case of "open", regular selection behavior can be achieved by holding `alt` when double clicking.
+
+## Drop Target Size
+
+- Description: Relative size of the drop target in the editor that will open dropped file as a split pane (0-0.5). For example, 0.25 means if you drop onto the top/bottom quarter of the pane a new vertical split will be used, if you drop onto the left/right quarter of the pane a new horizontal split will be used.
+- Setting: `drop_target_size`
+- Default: `0.2`
+
+**Options**
+
+`float` values between `0` and `0.5`
+
 ## Edit Predictions
 
 - Description: Settings for edit predictions.
@@ -581,6 +727,32 @@ List of `string` values
 "cursor_shape": "hollow"
 ```
 
+## Gutter
+
+- Description: Settings for the editor gutter
+- Setting: `gutter`
+- Default:
+
+```json
+{
+  "gutter": {
+    "line_numbers": true,
+    "runnables": true,
+    "breakpoints": true,
+    "folds": true,
+    "min_line_number_digits": 4
+  }
+}
+```
+
+**Options**
+
+- `line_numbers`: Whether to show line numbers in the gutter
+- `runnables`: Whether to show runnable buttons in the gutter
+- `breakpoints`: Whether to show breakpoints in the gutter
+- `folds`: Whether to show fold buttons in the gutter
+- `min_line_number_digits`: Minimum number of characters to reserve space for in the gutter
+
 ## Hide Mouse
 
 - Description: Determines when the mouse cursor should be hidden in an editor or input box.
@@ -1269,6 +1441,26 @@ Each option controls displaying of a particular toolbar element. If all elements
 
 `boolean` values
 
+## Expand Excerpt Lines
+
+- Description: The default number of lines to expand excerpts in the multibuffer by
+- Setting: `expand_excerpt_lines`
+- Default: `5`
+
+**Options**
+
+Positive `integer` values
+
+## Extend Comment On Newline
+
+- Description: Whether to start a new line with a comment when a previous line is a comment as well.
+- Setting: `extend_comment_on_newline`
+- Default: `true`
+
+**Options**
+
+`boolean` values
+
 ## Status Bar
 
 - Description: Control various elements in the status bar. Note that some items in the status bar have their own settings set elsewhere.
@@ -1327,6 +1519,24 @@ While other options may be changed at a runtime and should be placed under `sett
 }
 ```
 
+## Global LSP Settings
+
+- Description: Configuration for global LSP settings that apply to all language servers
+- Setting: `global_lsp_settings`
+- Default:
+
+```json
+{
+  "global_lsp_settings": {
+    "button": true
+  }
+}
+```
+
+**Options**
+
+- `button`: Whether to show the LSP status button in the status bar
+
 ## LSP Highlight Debounce
 
 - Description: The debounce delay in milliseconds before querying highlights from the language server based on the current cursor location.
@@ -1349,6 +1559,68 @@ While other options may be changed at a runtime and should be placed under `sett
 
 `integer` values representing milliseconds
 
+## Features
+
+- Description: Features that can be globally enabled or disabled
+- Setting: `features`
+- Default:
+
+```json
+{
+  "features": {
+    "edit_prediction_provider": "zed"
+  }
+}
+```
+
+### Edit Prediction Provider
+
+- Description: Which edit prediction provider to use
+- Setting: `edit_prediction_provider`
+- Default: `"zed"`
+
+**Options**
+
+1. Use Zeta as the edit prediction provider:
+
+```json
+{
+  "features": {
+    "edit_prediction_provider": "zed"
+  }
+}
+```
+
+2. Use Copilot as the edit prediction provider:
+
+```json
+{
+  "features": {
+    "edit_prediction_provider": "copilot"
+  }
+}
+```
+
+3. Use Supermaven as the edit prediction provider:
+
+```json
+{
+  "features": {
+    "edit_prediction_provider": "supermaven"
+  }
+}
+```
+
+4. Turn off edit predictions across all providers
+
+```json
+{
+  "features": {
+    "edit_prediction_provider": "none"
+  }
+}
+```
+
 ## Format On Save
 
 - Description: Whether or not to perform a buffer format before saving.
@@ -1892,27 +2164,71 @@ Example:
 }
 ```
 
-## Indent Guides
+## Go to Definition Fallback
 
-- Description: Configuration related to indent guides. Indent guides can be configured separately for each language.
-- Setting: `indent_guides`
-- Default:
+- Description: What to do when the "go to definition" action fails to find a definition
+- Setting: `go_to_definition_fallback`
+- Default: `"find_all_references"`
+
+**Options**
+
+1. Do nothing:
 
 ```json
 {
-  "indent_guides": {
-    "enabled": true,
-    "line_width": 1,
-    "active_line_width": 1,
-    "coloring": "fixed",
-    "background_coloring": "disabled"
-  }
+  "go_to_definition_fallback": "none"
 }
 ```
 
-**Options**
-
-1. Disable indent guides
+2. Find references for the same symbol (default):
+
+```json
+{
+  "go_to_definition_fallback": "find_all_references"
+}
+```
+
+## Hard Tabs
+
+- Description: Whether to indent lines using tab characters or multiple spaces.
+- Setting: `hard_tabs`
+- Default: `false`
+
+**Options**
+
+`boolean` values
+
+## Helix Mode
+
+- Description: Whether or not to enable Helix mode. Enabling `helix_mode` also enables `vim_mode`. See the [Helix documentation](./helix.md) for more details.
+- Setting: `helix_mode`
+- Default: `false`
+
+**Options**
+
+`boolean` values
+
+## Indent Guides
+
+- Description: Configuration related to indent guides. Indent guides can be configured separately for each language.
+- Setting: `indent_guides`
+- Default:
+
+```json
+{
+  "indent_guides": {
+    "enabled": true,
+    "line_width": 1,
+    "active_line_width": 1,
+    "coloring": "fixed",
+    "background_coloring": "disabled"
+  }
+}
+```
+
+**Options**
+
+1. Disable indent guides
 
 ```json
 {
@@ -1961,40 +2277,6 @@ Example:
 }
 ```
 
-## Hard Tabs
-
-- Description: Whether to indent lines using tab characters or multiple spaces.
-- Setting: `hard_tabs`
-- Default: `false`
-
-**Options**
-
-`boolean` values
-
-## Multi Cursor Modifier
-
-- Description: Determines the modifier to be used to add multiple cursors with the mouse. The open hover link mouse gestures will adapt such that it do not conflict with the multicursor modifier.
-- Setting: `multi_cursor_modifier`
-- Default: `alt`
-
-**Options**
-
-1. Maps to `Alt` on Linux and Windows and to `Option` on MacOS:
-
-```json
-{
-  "multi_cursor_modifier": "alt"
-}
-```
-
-2. Maps `Control` on Linux and Windows and to `Command` on MacOS:
-
-```json
-{
-  "multi_cursor_modifier": "cmd_or_ctrl" // alias: "cmd", "ctrl"
-}
-```
-
 ## Hover Popover Enabled
 
 - Description: Whether or not to show the informational hover box when moving the mouse over symbols in the editor.
@@ -2087,6 +2369,50 @@ Run the `icon theme selector: toggle` action in the command palette to see a cur
 
 Run the `icon theme selector: toggle` action in the command palette to see a current list of valid icon themes names.
 
+## Image Viewer
+
+- Description: Settings for image viewer functionality
+- Setting: `image_viewer`
+- Default:
+
+```json
+{
+  "image_viewer": {
+    "unit": "binary"
+  }
+}
+```
+
+**Options**
+
+### Unit
+
+- Description: The unit for image file sizes
+- Setting: `unit`
+- Default: `"binary"`
+
+**Options**
+
+1. Use binary units (KiB, MiB):
+
+```json
+{
+  "image_viewer": {
+    "unit": "binary"
+  }
+}
+```
+
+2. Use decimal units (KB, MB):
+
+```json
+{
+  "image_viewer": {
+    "unit": "decimal"
+  }
+}
+```
+
 ## Inlay hints
 
 - Description: Configuration for displaying extra text with hints in the editor.
@@ -2187,6 +2513,24 @@ Unspecified values have a `false` value, hints won't be toggled if all the modif
 }
 ```
 
+## JSX Tag Auto Close
+
+- Description: Whether to automatically close JSX tags
+- Setting: `jsx_tag_auto_close`
+- Default:
+
+```json
+{
+  "jsx_tag_auto_close": {
+    "enabled": true
+  }
+}
+```
+
+**Options**
+
+- `enabled`: Whether to enable automatic JSX tag closing
+
 ## Languages
 
 - Description: Configuration for specific languages.
@@ -2226,141 +2570,546 @@ The following settings can be overridden for each specific language:
 - [`use_autoclose`](#use-autoclose)
 - [`always_treat_brackets_as_autoclosed`](#always-treat-brackets-as-autoclosed)
 
-These values take in the same options as the root-level settings with the same name.
+These values take in the same options as the root-level settings with the same name.
+
+## Language Models
+
+- Description: Configuration for language model providers
+- Setting: `language_models`
+- Default:
+
+```json
+{
+  "language_models": {
+    "anthropic": {
+      "api_url": "https://api.anthropic.com"
+    },
+    "google": {
+      "api_url": "https://generativelanguage.googleapis.com"
+    },
+    "ollama": {
+      "api_url": "http://localhost:11434"
+    },
+    "openai": {
+      "api_url": "https://api.openai.com/v1"
+    }
+  }
+}
+```
+
+**Options**
+
+Configuration for various AI model providers including API URLs and authentication settings.
+
+## Line Indicator Format
+
+- Description: Format for line indicator in the status bar
+- Setting: `line_indicator_format`
+- Default: `"short"`
+
+**Options**
+
+1. Short format:
+
+```json
+{
+  "line_indicator_format": "short"
+}
+```
+
+2. Long format:
+
+```json
+{
+  "line_indicator_format": "long"
+}
+```
+
+## Linked Edits
+
+- Description: Whether to perform linked edits of associated ranges, if the language server supports it. For example, when editing opening `<html>` tag, the contents of the closing `</html>` tag will be edited as well.
+- Setting: `linked_edits`
+- Default: `true`
+
+**Options**
+
+`boolean` values
+
+## LSP Document Colors
+
+- Description: Whether to show document color information from the language server
+- Setting: `lsp_document_colors`
+- Default: `true`
+
+**Options**
+
+`boolean` values
+
+## Max Tabs
+
+- Description: Maximum number of tabs to show in the tab bar
+- Setting: `max_tabs`
+- Default: `null`
+
+**Options**
+
+Positive `integer` values or `null` for unlimited tabs
+
+## Middle Click Paste (Linux only)
+
+- Description: Enable middle-click paste on Linux
+- Setting: `middle_click_paste`
+- Default: `true`
+
+**Options**
+
+`boolean` values
+
+## Multi Cursor Modifier
+
+- Description: Determines the modifier to be used to add multiple cursors with the mouse. The open hover link mouse gestures will adapt such that it do not conflict with the multicursor modifier.
+- Setting: `multi_cursor_modifier`
+- Default: `alt`
+
+**Options**
+
+1. Maps to `Alt` on Linux and Windows and to `Option` on MacOS:
+
+```json
+{
+  "multi_cursor_modifier": "alt"
+}
+```
+
+2. Maps `Control` on Linux and Windows and to `Command` on MacOS:
+
+```json
+{
+  "multi_cursor_modifier": "cmd_or_ctrl" // alias: "cmd", "ctrl"
+}
+```
+
+## Node
+
+- Description: Configuration for Node.js integration
+- Setting: `node`
+- Default:
+
+```json
+{
+  "node": {
+    "ignore_system_version": false,
+    "path": null,
+    "npm_path": null
+  }
+}
+```
+
+**Options**
+
+- `ignore_system_version`: Whether to ignore the system Node.js version
+- `path`: Custom path to Node.js binary
+- `npm_path`: Custom path to npm binary
+
+## Network Proxy
+
+- Description: Configure a network proxy for Zed.
+- Setting: `proxy`
+- Default: `null`
+
+**Options**
+
+The proxy setting must contain a URL to the proxy.
+
+The following URI schemes are supported:
+
+- `http`
+- `https`
+- `socks4` - SOCKS4 proxy with local DNS
+- `socks4a` - SOCKS4 proxy with remote DNS
+- `socks5` - SOCKS5 proxy with local DNS
+- `socks5h` - SOCKS5 proxy with remote DNS
+
+`http` will be used when no scheme is specified.
+
+By default no proxy will be used, or Zed will attempt to retrieve proxy settings from environment variables, such as `http_proxy`, `HTTP_PROXY`, `https_proxy`, `HTTPS_PROXY`, `all_proxy`, `ALL_PROXY`, `no_proxy` and `NO_PROXY`.
+
+For example, to set an `http` proxy, add the following to your settings:
+
+```json
+{
+  "proxy": "http://127.0.0.1:10809"
+}
+```
+
+Or to set a `socks5` proxy:
+
+```json
+{
+  "proxy": "socks5h://localhost:10808"
+}
+```
+
+If you wish to exclude certain hosts from using the proxy, set the `NO_PROXY` environment variable. This accepts a comma-separated list of hostnames, host suffixes, IPv4/IPv6 addresses or blocks that should not use the proxy. For example if your environment included `NO_PROXY="google.com, 192.168.1.0/24"` all hosts in `192.168.1.*`, `google.com` and `*.google.com` would bypass the proxy. See [reqwest NoProxy docs](https://docs.rs/reqwest/latest/reqwest/struct.NoProxy.html#method.from_string) for more.
+
+## On Last Window Closed
+
+- Description: What to do when the last window is closed
+- Setting: `on_last_window_closed`
+- Default: `"platform_default"`
+
+**Options**
+
+1. Use platform default behavior:
+
+```json
+{
+  "on_last_window_closed": "platform_default"
+}
+```
+
+2. Always quit the application:
+
+```json
+{
+  "on_last_window_closed": "quit_app"
+}
+```
+
+## Profiles
+
+- Description: Configuration profiles that can be applied on top of existing settings
+- Setting: `profiles`
+- Default: `{}`
+
+**Options**
+
+Configuration object for defining settings profiles. Example:
+
+```json
+{
+  "profiles": {
+    "presentation": {
+      "buffer_font_size": 20,
+      "ui_font_size": 18,
+      "theme": "One Light"
+    }
+  }
+}
+```
+
+## Preview tabs
+
+- Description:
+  Preview tabs allow you to open files in preview mode, where they close automatically when you switch to another file unless you explicitly pin them. This is useful for quickly viewing files without cluttering your workspace. Preview tabs display their file names in italics. \
+   There are several ways to convert a preview tab into a regular tab:
+
+  - Double-clicking on the file
+  - Double-clicking on the tab header
+  - Using the `project_panel::OpenPermanent` action
+  - Editing the file
+  - Dragging the file to a different pane
+
+- Setting: `preview_tabs`
+- Default:
+
+```json
+"preview_tabs": {
+  "enabled": true,
+  "enable_preview_from_file_finder": false,
+  "enable_preview_from_code_navigation": false,
+}
+```
+
+### Enable preview from file finder
+
+- Description: Determines whether to open files in preview mode when selected from the file finder.
+- Setting: `enable_preview_from_file_finder`
+- Default: `false`
+
+**Options**
+
+`boolean` values
+
+### Enable preview from code navigation
+
+- Description: Determines whether a preview tab gets replaced when code navigation is used to navigate away from the tab.
+- Setting: `enable_preview_from_code_navigation`
+- Default: `false`
+
+**Options**
+
+`boolean` values
+
+## File Finder
+
+### File Icons
+
+- Description: Whether to show file icons in the file finder.
+- Setting: `file_icons`
+- Default: `true`
+
+### Modal Max Width
+
+- Description: Max-width of the file finder modal. It can take one of these values: `small`, `medium`, `large`, `xlarge`, and `full`.
+- Setting: `modal_max_width`
+- Default: `small`
+
+### Skip Focus For Active In Search
+
+- Description: Determines whether the file finder should skip focus for the active file in search results.
+- Setting: `skip_focus_for_active_in_search`
+- Default: `true`
+
+## Pane Split Direction Horizontal
+
+- Description: The direction that you want to split panes horizontally
+- Setting: `pane_split_direction_horizontal`
+- Default: `"up"`
+
+**Options**
+
+1. Split upward:
+
+```json
+{
+  "pane_split_direction_horizontal": "up"
+}
+```
+
+2. Split downward:
+
+```json
+{
+  "pane_split_direction_horizontal": "down"
+}
+```
+
+## Pane Split Direction Vertical
+
+- Description: The direction that you want to split panes vertically
+- Setting: `pane_split_direction_vertical`
+- Default: `"left"`
+
+**Options**
+
+1. Split to the left:
+
+```json
+{
+  "pane_split_direction_vertical": "left"
+}
+```
+
+2. Split to the right:
+
+```json
+{
+  "pane_split_direction_vertical": "right"
+}
+```
+
+## Preferred Line Length
+
+- Description: The column at which to soft-wrap lines, for buffers where soft-wrap is enabled.
+- Setting: `preferred_line_length`
+- Default: `80`
+
+**Options**
+
+`integer` values
+
+## Private Files
+
+- Description: Globs to match against file paths to determine if a file is private
+- Setting: `private_files`
+- Default: `["**/.env*", "**/*.pem", "**/*.key", "**/*.cert", "**/*.crt", "**/secrets.yml"]`
+
+**Options**
+
+List of `string` glob patterns
+
+## Projects Online By Default
+
+- Description: Whether or not to show the online projects view by default.
+- Setting: `projects_online_by_default`
+- Default: `true`
+
+**Options**
+
+`boolean` values
+
+## Read SSH Config
+
+- Description: Whether to read SSH configuration files
+- Setting: `read_ssh_config`
+- Default: `true`
+
+**Options**
+
+`boolean` values
+
+## Redact Private Values
+
+- Description: Hide the values of variables from visual display in private files
+- Setting: `redact_private_values`
+- Default: `false`
+
+**Options**
+
+`boolean` values
+
+## Relative Line Numbers
+
+- Description: Whether to show relative line numbers in the gutter
+- Setting: `relative_line_numbers`
+- Default: `false`
+
+**Options**
+
+`boolean` values
+
+## Remove Trailing Whitespace On Save
+
+- Description: Whether or not to remove any trailing whitespace from lines of a buffer before saving it.
+- Setting: `remove_trailing_whitespace_on_save`
+- Default: `true`
+
+**Options**
 
-## Network Proxy
+`boolean` values
 
-- Description: Configure a network proxy for Zed.
-- Setting: `proxy`
-- Default: `null`
+## Resize All Panels In Dock
+
+- Description: Whether to resize all the panels in a dock when resizing the dock. Can be a combination of "left", "right" and "bottom".
+- Setting: `resize_all_panels_in_dock`
+- Default: `["left"]`
 
 **Options**
 
-The proxy setting must contain a URL to the proxy.
+List of strings containing any combination of:
 
-The following URI schemes are supported:
+- `"left"`: Resize left dock panels together
+- `"right"`: Resize right dock panels together
+- `"bottom"`: Resize bottom dock panels together
 
-- `http`
-- `https`
-- `socks4` - SOCKS4 proxy with local DNS
-- `socks4a` - SOCKS4 proxy with remote DNS
-- `socks5` - SOCKS5 proxy with local DNS
-- `socks5h` - SOCKS5 proxy with remote DNS
+## Restore on File Reopen
 
-`http` will be used when no scheme is specified.
+- Description: Whether to attempt to restore previous file's state when opening it again. The state is stored per pane.
+- Setting: `restore_on_file_reopen`
+- Default: `true`
 
-By default no proxy will be used, or Zed will attempt to retrieve proxy settings from environment variables, such as `http_proxy`, `HTTP_PROXY`, `https_proxy`, `HTTPS_PROXY`, `all_proxy`, `ALL_PROXY`, `no_proxy` and `NO_PROXY`.
+**Options**
 
-For example, to set an `http` proxy, add the following to your settings:
+`boolean` values
+
+## Restore on Startup
+
+- Description: Controls session restoration on startup.
+- Setting: `restore_on_startup`
+- Default: `last_session`
+
+**Options**
+
+1. Restore all workspaces that were open when quitting Zed:
 
 ```json
 {
-  "proxy": "http://127.0.0.1:10809"
+  "restore_on_startup": "last_session"
 }
 ```
 
-Or to set a `socks5` proxy:
+2. Restore the workspace that was closed last:
 
 ```json
 {
-  "proxy": "socks5h://localhost:10808"
+  "restore_on_startup": "last_workspace"
 }
 ```
 
-If you wish to exclude certain hosts from using the proxy, set the `NO_PROXY` environment variable. This accepts a comma-separated list of hostnames, host suffixes, IPv4/IPv6 addresses or blocks that should not use the proxy. For example if your environment included `NO_PROXY="google.com, 192.168.1.0/24"` all hosts in `192.168.1.*`, `google.com` and `*.google.com` would bypass the proxy. See [reqwest NoProxy docs](https://docs.rs/reqwest/latest/reqwest/struct.NoProxy.html#method.from_string) for more.
-
-## Preview tabs
-
-- Description:
-  Preview tabs allow you to open files in preview mode, where they close automatically when you switch to another file unless you explicitly pin them. This is useful for quickly viewing files without cluttering your workspace. Preview tabs display their file names in italics. \
-   There are several ways to convert a preview tab into a regular tab:
-
-  - Double-clicking on the file
-  - Double-clicking on the tab header
-  - Using the `project_panel::OpenPermanent` action
-  - Editing the file
-  - Dragging the file to a different pane
-
-- Setting: `preview_tabs`
-- Default:
+3. Always start with an empty editor:
 
 ```json
-"preview_tabs": {
-  "enabled": true,
-  "enable_preview_from_file_finder": false,
-  "enable_preview_from_code_navigation": false,
+{
+  "restore_on_startup": "none"
 }
 ```
 
-### Enable preview from file finder
+## Scroll Beyond Last Line
 
-- Description: Determines whether to open files in preview mode when selected from the file finder.
-- Setting: `enable_preview_from_file_finder`
-- Default: `false`
+- Description: Whether the editor will scroll beyond the last line
+- Setting: `scroll_beyond_last_line`
+- Default: `"one_page"`
 
 **Options**
 
-`boolean` values
+1. Scroll one page beyond the last line by one page:
 
-### Enable preview from code navigation
+```json
+{
+  "scroll_beyond_last_line": "one_page"
+}
+```
 
-- Description: Determines whether a preview tab gets replaced when code navigation is used to navigate away from the tab.
-- Setting: `enable_preview_from_code_navigation`
-- Default: `false`
+2. The editor will scroll beyond the last line by the same amount of lines as `vertical_scroll_margin`:
 
-**Options**
+```json
+{
+  "scroll_beyond_last_line": "vertical_scroll_margin"
+}
+```
 
-`boolean` values
+3. The editor will not scroll beyond the last line:
 
-## File Finder
+```json
+{
+  "scroll_beyond_last_line": "off"
+}
+```
 
-### File Icons
+**Options**
 
-- Description: Whether to show file icons in the file finder.
-- Setting: `file_icons`
-- Default: `true`
+`boolean` values
 
-### Modal Max Width
+## Scroll Sensitivity
 
-- Description: Max-width of the file finder modal. It can take one of these values: `small`, `medium`, `large`, `xlarge`, and `full`.
-- Setting: `modal_max_width`
-- Default: `small`
+- Description: Scroll sensitivity multiplier. This multiplier is applied to both the horizontal and vertical delta values while scrolling.
+- Setting: `scroll_sensitivity`
+- Default: `1.0`
 
-### Skip Focus For Active In Search
+**Options**
 
-- Description: Determines whether the file finder should skip focus for the active file in search results.
-- Setting: `skip_focus_for_active_in_search`
-- Default: `true`
+Positive `float` values
 
-## Preferred Line Length
+### Fast Scroll Sensitivity
 
-- Description: The column at which to soft-wrap lines, for buffers where soft-wrap is enabled.
-- Setting: `preferred_line_length`
-- Default: `80`
+- Description: Scroll sensitivity multiplier for fast scrolling. This multiplier is applied to both the horizontal and vertical delta values while scrolling. Fast scrolling happens when a user holds the alt or option key while scrolling.
+- Setting: `fast_scroll_sensitivity`
+- Default: `4.0`
 
 **Options**
 
-`integer` values
+Positive `float` values
 
-## Projects Online By Default
+### Horizontal Scroll Margin
 
-- Description: Whether or not to show the online projects view by default.
-- Setting: `projects_online_by_default`
-- Default: `true`
+- Description: The number of characters to keep on either side when scrolling with the mouse
+- Setting: `horizontal_scroll_margin`
+- Default: `5`
 
 **Options**
 
-`boolean` values
+Non-negative `integer` values
 
-## Remove Trailing Whitespace On Save
+### Vertical Scroll Margin
 
-- Description: Whether or not to remove any trailing whitespace from lines of a buffer before saving it.
-- Setting: `remove_trailing_whitespace_on_save`
-- Default: `true`
+- Description: The number of lines to keep above/below the cursor when scrolling with the keyboard
+- Setting: `vertical_scroll_margin`
+- Default: `3`
 
 **Options**
 
-`boolean` values
+Non-negative `integer` values
 
 ## Search