ZIm/crates
Arseny Kapoulkine 00097df0d5
Improve C/C++ indentation flow for single statement blocks (#34549)
Before this, indentation did not automatically increase after
if/for/while/do/else statements in C++, and only increased after if/for
in C. This led to Zed using last line logic when inserting lines *after*
the indented statement, as well as not indenting the statement itself,
resulting in irregular indentation during typing.

Just adding indentation (similar to C) creates a new problem: now if a
scope is started with a brace on a new line, that brace is indented.
Thus we need to deindent it.

Using else_clause in the indent guide results in the else statement
being indented forward as well, so we need to deindent that too.

Note: the most significant issue for me is the one where indentation
jumps forward when inserting lines after indented lines. Unfortunately,
it appears that fixing that issue requires all of these other changes. I
would have preferred a simpler fix, but I'm not sure if disabling last
line behavior for C/C++ is appropriate as it probably breaks something
else, like cases where the file is incomplete and the statements can't
be parsed properly.

Editing flow before this change:

[Screencast From 2025-07-16
08-31-36.webm](https://github.com/user-attachments/assets/3dea86c5-47bd-47c2-aee8-b0aa613948e6)

Editing flow after this change:

[Screencast From 2025-07-16
08-35-36.webm](https://github.com/user-attachments/assets/7ef23e60-1ee3-49fd-90f9-d53f909ca674)

(note: the "else" snippet is completely breaking the flow here, but I
think that comes from clangd by default? Unfortunately I haven't found a
way to disable it cleanly but that is a separate problem that happens
right now too.)

Release Notes:

- Improve indentation during typing for C/C++ around if/for/while/do
blocks
2025-07-18 12:24:20 +02:00
..
acp_thread Claude experiment (#34577) 2025-07-17 14:25:55 +00:00
activity_indicator debugger: Improve appearance of session list for JavaScript debugging (#34322) 2025-07-12 15:56:05 +00:00
agent agent: Remove layout shift due to the "waiting for confirmation" label (#34674) 2025-07-17 20:46:16 -03:00
agent_servers Unify agent server settings and extract e2e tests out (#34642) 2025-07-17 17:34:38 +00:00
agent_settings agent: Add setting to control terminal card expanded state (#34061) 2025-07-08 10:43:35 -03:00
agent_ui agent: Adjust retry on Burn Mode layout (#34680) 2025-07-18 01:19:27 +00:00
anthropic agent: Improve error handling and retry for zed-provided models (#33565) 2025-06-30 21:01:32 -06:00
askpass Revert "git: Intercept signing prompt from GPG when committing" (#34306) 2025-07-11 23:20:35 +00:00
assets Use anyhow more idiomatically (#31052) 2025-05-20 23:06:07 +00:00
assistant_context agent: Disable thinking when using inline assistant/edit file tool (#34141) 2025-07-09 18:05:39 +00:00
assistant_slash_command Stop extensions' servers and message loops before removing their files (#34208) 2025-07-10 19:25:10 +00:00
assistant_slash_commands chore: Bump Rust version to 1.88 (#33439) 2025-06-26 20:54:19 +02:00
assistant_tool Do not send project notifications when agent creates a file (#34610) 2025-07-17 13:08:20 +03:00
assistant_tools Improve upstream error reporting (#34668) 2025-07-17 18:12:48 -04:00
audio agent: Add sound notification when done generating (#31472) 2025-05-26 21:20:41 -03:00
auto_update windows: Publish nightly (#24800) 2025-07-09 08:57:03 +08:00
auto_update_helper windows: Publish nightly (#24800) 2025-07-09 08:57:03 +08:00
auto_update_ui Fix documentation of view release notes actions (#33851) 2025-07-03 14:22:28 +00:00
aws_http_client
bedrock bedrock: Fix bedrock not streaming (#28281) 2025-07-01 12:51:09 +03:00
breadcrumbs breadcrumbs: Stylize filename in breadcrumbs when tab-bar is off and file is dirty (#30507) 2025-05-30 08:32:54 -07:00
buffer_diff chore: Bump Rust version to 1.88 (#33439) 2025-06-26 20:54:19 +02:00
call Fix screenshare sources error handling, is_sharing_screen() == false on error (#34250) 2025-07-10 23:35:21 +00:00
channel Fetch and wait for channels when opening channel notes via URL (#33291) 2025-06-24 05:14:15 +00:00
cli cli: Remove manual std::io::copy implementation (#34409) 2025-07-15 16:37:15 +02:00
client gpui: Store action documentation (#33809) 2025-07-02 21:14:33 -04:00
clock Add the ability to follow the agent as it makes edits (#29839) 2025-05-04 08:28:39 +00:00
collab Rename "CloseInactiveItems" action to "CloseOtherItems" (#34676) 2025-07-17 21:40:02 -03:00
collab_ui gpui: Store action documentation (#33809) 2025-07-02 21:14:33 -04:00
collections
command_palette Sketch in a table for the keybindings UI (#32436) 2025-06-30 19:25:11 -04:00
command_palette_hooks
component ui: Add Chip component (#34521) 2025-07-16 01:15:45 -03:00
context_server Claude experiment (#34577) 2025-07-17 14:25:55 +00:00
copilot copilot: Indicate whether a request is initiated by an agent to Copilot API (#33895) 2025-07-07 10:24:17 +02:00
credentials_provider
dap debugger: Improve appearance of session list for JavaScript debugging (#34322) 2025-07-12 15:56:05 +00:00
dap_adapters debugger: Interpret user-specified debug adapter binary paths in a more intuitive way for JS and Python (#33926) 2025-07-15 22:31:28 +00:00
db Misc nitpicks, changes too small / unrelated to be in other PRs (#32768) 2025-06-15 19:51:04 +00:00
debug_adapter_extension Allow remote loading for DAP-only extensions (#33981) 2025-07-06 14:52:16 +02:00
debugger_tools debugger: Improve appearance of session list for JavaScript debugging (#34322) 2025-07-12 15:56:05 +00:00
debugger_ui debugger: Add data breakpoint access type support (#34639) 2025-07-17 17:05:58 +00:00
deepseek language_models: Emit UsageUpdate events for token usage in DeepSeek and OpenAI (#33242) 2025-06-25 09:42:30 +02:00
diagnostics lsp: Fix workspace diagnostics lag & add streaming support (#34022) 2025-07-15 18:41:45 +03:00
docs_preprocessor gpui: Reduce manual shifting & other minor improvements (#34407) 2025-07-15 16:39:33 +02:00
editor Rename "CloseInactiveItems" action to "CloseOtherItems" (#34676) 2025-07-17 21:40:02 -03:00
eval Automatically retry in more situations (#34473) 2025-07-15 14:22:13 -04:00
explorer_command_injector Just Zed instead of Zed Editor (#34146) 2025-07-10 21:08:43 +02:00
extension Stop extensions' servers and message loops before removing their files (#34208) 2025-07-10 19:25:10 +00:00
extension_api Move language-specific debugging docs to the page for each language (#33692) 2025-07-01 20:02:12 +00:00
extension_cli extension_cli: Copy over snippet file when bundling extensions (#34450) 2025-07-15 11:07:29 +00:00
extension_host Rework extension-related errors (#34620) 2025-07-17 12:20:47 +00:00
extensions_ui ui: Add Chip component (#34521) 2025-07-16 01:15:45 -03:00
feature_flags Route all LLM traffic through cloud.zed.dev (#34404) 2025-07-14 16:03:19 +00:00
feedback gpui: Store action documentation (#33809) 2025-07-02 21:14:33 -04:00
file_finder windows: Add support for SSH (#29145) 2025-07-08 14:34:57 +00:00
file_icons
fs git: Handle shift-click to stage a range of entries in the panel (#34296) 2025-07-12 19:04:26 +00:00
fsevent
fuzzy editor: Improve code completion filtering to provide fewer and more accurate suggestions (#32928) 2025-06-18 16:01:28 +05:30
git git: Add ability to pass --signoff (#29874) 2025-07-17 03:39:54 +00:00
git_hosting_providers Allow configuring custom git hosting providers in project settings (#31929) 2025-06-03 12:23:01 -04:00
git_ui Better serialize the git panel (#34622) 2025-07-17 12:39:41 +00:00
go_to_line Remove into SelectionEffects from .change_selections (#33554) 2025-06-27 14:31:31 -06:00
google_ai Update Gemini Models (#32902) 2025-06-17 20:26:27 +00:00
gpui Fix shortcuts with Shift (#34614) 2025-07-17 11:21:20 +00:00
gpui_macros gpui: Add shadow_xs, shadow_2xs and fix shadow values to match Tailwind CSS (#33361) 2025-07-03 09:50:26 -03:00
gpui_tokio
html_to_markdown agent: Fix crash with pathological fetch output (#34253) 2025-07-11 21:01:09 -04:00
http_client Route all LLM traffic through cloud.zed.dev (#34404) 2025-07-14 16:03:19 +00:00
http_client_tls
icons Claude experiment (#34577) 2025-07-17 14:25:55 +00:00
image_viewer Option to auto-close deleted files with no unsaved edits (#31920) 2025-06-03 13:18:29 +02:00
indexed_docs Stop extensions' servers and message loops before removing their files (#34208) 2025-07-10 19:25:10 +00:00
inline_completion agent: Fix issues with usage display sometimes showing initially fetched usage (#33125) 2025-06-20 21:28:48 +00:00
inline_completion_button Another lsp tool UI migration (#34009) 2025-07-07 14:28:18 +00:00
inspector_ui Disable minimap in the inspector (#34607) 2025-07-17 09:22:04 +00:00
install_cli gpui: Store action documentation (#33809) 2025-07-02 21:14:33 -04:00
jj Add a picker for jj bookmark list (#30883) 2025-05-17 16:42:45 +00:00
jj_ui editor: Improve code completion filtering to provide fewer and more accurate suggestions (#32928) 2025-06-18 16:01:28 +05:30
journal gpui: Store action documentation (#33809) 2025-07-02 21:14:33 -04:00
language Remove remaining plugin-related language server adapters (#34334) 2025-07-12 11:42:14 +00:00
language_extension Stop extensions' servers and message loops before removing their files (#34208) 2025-07-10 19:25:10 +00:00
language_model Improve upstream error reporting (#34668) 2025-07-17 18:12:48 -04:00
language_models Improve upstream error reporting (#34668) 2025-07-17 18:12:48 -04:00
language_selector gpui: Store action documentation (#33809) 2025-07-02 21:14:33 -04:00
language_tools lsp tool: Make "Restart All Servers" always visible (#34255) 2025-07-10 22:00:01 -03:00
languages Improve C/C++ indentation flow for single statement blocks (#34549) 2025-07-18 12:24:20 +02:00
livekit_api Use anyhow more idiomatically (#31052) 2025-05-20 23:06:07 +00:00
livekit_client Windows screen sharing (#34223) 2025-07-10 14:02:00 -07:00
lmstudio Standardize on u64 for token counts (#32869) 2025-06-17 10:43:07 -04:00
lsp chore: Bump lsp-types rev (#34345) 2025-07-17 15:58:54 +00:00
markdown gpui: Store action documentation (#33809) 2025-07-02 21:14:33 -04:00
markdown_preview gpui: Store action documentation (#33809) 2025-07-02 21:14:33 -04:00
media Use anyhow more idiomatically (#31052) 2025-05-20 23:06:07 +00:00
menu gpui: Store action documentation (#33809) 2025-07-02 21:14:33 -04:00
migrator editor: Change drag_and_drop_selection cursor on delay elapsed + Add drag_and_drop_selection delay setting (#33928) 2025-07-09 12:38:23 +05:30
mistral Standardize on u64 for token counts (#32869) 2025-06-17 10:43:07 -04:00
multi_buffer Don't highlight partial indent guide backgrounds (#34433) 2025-07-16 09:10:51 -04:00
nc Claude experiment (#34577) 2025-07-17 14:25:55 +00:00
net windows: Add support for SSH (#29145) 2025-07-08 14:34:57 +00:00
node_runtime Replace async-watch with a custom watch (#32245) 2025-06-06 16:00:09 +00:00
notifications notification: Add built-in dismiss button in the Status Toast component (#33278) 2025-06-23 19:55:21 -03:00
ollama Standardize on u64 for token counts (#32869) 2025-06-17 10:43:07 -04:00
open_ai open_ai: Make OpenAI error message generic (#33383) 2025-06-28 14:38:27 +02:00
open_router open_router: Fix tool_choice getting serialized to null (#34532) 2025-07-16 11:44:08 -04:00
outline Remove into SelectionEffects from .change_selections (#33554) 2025-06-27 14:31:31 -06:00
outline_panel project panel: Add indent guides for sticky items (#34092) 2025-07-09 05:28:25 +05:30
panel git panel: Add some design refinements (#34064) 2025-07-08 11:23:36 -03:00
paths ACP (#34030) 2025-07-09 16:02:31 +00:00
picker gpui: Store action documentation (#33809) 2025-07-02 21:14:33 -04:00
prettier Expand Prettier config list (#33744) 2025-07-02 08:44:14 +00:00
project git: Add ability to pass --signoff (#29874) 2025-07-17 03:39:54 +00:00
project_panel project_panel: Add rename, delete and duplicate actions to workspace (#34478) 2025-07-15 23:41:53 +05:30
project_symbols Remove into SelectionEffects from .change_selections (#33554) 2025-06-27 14:31:31 -06:00
prompt_store editor: Improve code completion filtering to provide fewer and more accurate suggestions (#32928) 2025-06-18 16:01:28 +05:30
proto git: Add ability to pass --signoff (#29874) 2025-07-17 03:39:54 +00:00
recent_projects windows: Add support for SSH (#29145) 2025-07-08 14:34:57 +00:00
refineable Add a live Rust style editor to inspector to edit a sequence of no-argument style modifiers (#31443) 2025-05-26 17:43:57 +00:00
release_channel Use shortened SHA when displaying version to install (#31281) 2025-05-23 14:53:53 +00:00
remote windows: Don't show cmd window when remoting (#34187) 2025-07-10 09:19:12 +00:00
remote_server Stop extensions' servers and message loops before removing their files (#34208) 2025-07-10 19:25:10 +00:00
repl editor: Improve minimap performance (#33067) 2025-07-15 00:29:27 +03:00
reqwest_client Respect NO_PROXY env var (#33742) 2025-07-02 10:05:34 -04:00
rich_text
rope chore: Fix warnings for Rust 1.89 (#32378) 2025-06-09 13:11:57 +02:00
rpc extensions: Add "Debug Adapters" category to the extension store (#32845) 2025-06-17 12:09:08 +02:00
rules_library Remove auto-width editor type (#34438) 2025-07-15 17:36:09 +00:00
schema_generator
search Refine status bar design (#34324) 2025-07-12 11:48:19 -03:00
semantic_index agent: Disable thinking when using inline assistant/edit file tool (#34141) 2025-07-09 18:05:39 +00:00
semantic_version Use anyhow more idiomatically (#31052) 2025-05-20 23:06:07 +00:00
session Avoid unnecessary DB writes (#29417) 2025-04-25 17:41:49 +03:00
settings keymap_ui: Don't panic on KeybindSource::from_meta (#34652) 2025-07-17 20:03:10 -04:00
settings_ui keymap_ui: Don't panic on KeybindSource::from_meta (#34652) 2025-07-17 20:03:10 -04:00
snippet Use anyhow more idiomatically (#31052) 2025-05-20 23:06:07 +00:00
snippet_provider Default `#[schemars(deny_unknown_fields)] for json-language-server schemas (#33883) 2025-07-04 00:57:43 +00:00
snippets_ui gpui: Store action documentation (#33809) 2025-07-02 21:14:33 -04:00
sqlez Use anyhow more idiomatically (#31052) 2025-05-20 23:06:07 +00:00
sqlez_macros
story gpui: Add a standard text example (#30747) 2025-05-16 17:35:44 +02:00
storybook project panel: Add indent guides for sticky items (#34092) 2025-07-09 05:28:25 +05:30
streaming_diff Introduce a new StreamingEditFileTool (#29733) 2025-05-01 17:37:43 +02:00
sum_tree chore: Fix warnings for Rust 1.89 (#32378) 2025-06-09 13:11:57 +02:00
supermaven gpui: Store action documentation (#33809) 2025-07-02 21:14:33 -04:00
supermaven_api supermaven_api: Ensure downloaded Supermaven binary has executable permissions set (#32576) 2025-06-17 14:39:45 +00:00
svg_preview gpui: Store action documentation (#33809) 2025-07-02 21:14:33 -04:00
tab_switcher gpui: Store action documentation (#33809) 2025-07-02 21:14:33 -04:00
task Add support for Nushell in shell builder (#33806) 2025-07-08 14:57:37 +00:00
tasks_ui Remove into SelectionEffects from .change_selections (#33554) 2025-06-27 14:31:31 -06:00
telemetry
telemetry_events
terminal Appropriately pick venv activation script (#33205) 2025-07-16 12:52:37 +00:00
terminal_view Fix positioning of terminal inline assist after clearing the screen (#34465) 2025-07-15 15:16:48 -04:00
text chore: Fix warnings for Rust 1.89 (#32378) 2025-06-09 13:11:57 +02:00
theme Default `#[schemars(deny_unknown_fields)] for json-language-server schemas (#33883) 2025-07-04 00:57:43 +00:00
theme_extension
theme_importer chore: Bump Rust version to 1.88 (#33439) 2025-06-26 20:54:19 +02:00
theme_selector Add zed://extension/{id} links (#34492) 2025-07-15 13:42:25 -06:00
time_format agent: Add date separators to Thread History (#29961) 2025-05-06 10:18:48 +00:00
title_bar linux: Fix buttons clicks wouldn’t work on startup until clicked on center pane (#34590) 2025-07-17 06:36:02 +05:30
toolchain_selector gpui: Store action documentation (#33809) 2025-07-02 21:14:33 -04:00
ui keymap_ui: Improve keybind display in menus (#34587) 2025-07-17 11:10:07 -04:00
ui_input keymap_ui: Create language for Zed keybind context (#34558) 2025-07-16 17:00:47 +00:00
ui_macros Update syn crate from 1.0.109 to 2.0.101 (#31301) 2025-05-23 19:31:25 +00:00
ui_prompt Add element_selection_background highlight to theme (#32388) 2025-06-27 15:46:04 +00:00
util windows: Add support for SSH (#29145) 2025-07-08 14:34:57 +00:00
util_macros Remove separator! macro and make path! handle relative paths (#32527) 2025-06-13 06:32:29 +00:00
vercel vercel: Use proper model identifiers and add image support (#33377) 2025-06-25 13:26:41 +00:00
vim Add ; key binding for Helix mode (#34315) 2025-07-17 22:30:01 -06:00
vim_mode_setting vim: Fix escape key switching back to default mode instead of normal mode (#31843) 2025-06-18 21:26:12 +00:00
watch chore: Fix warnings for Rust 1.89 (#32378) 2025-06-09 13:11:57 +02:00
web_search
web_search_providers Route all LLM traffic through cloud.zed.dev (#34404) 2025-07-14 16:03:19 +00:00
welcome keymap_ui: Add auto-complete for context in keybind editor (#34031) 2025-07-07 21:54:51 +00:00
workspace Rename "CloseInactiveItems" action to "CloseOtherItems" (#34676) 2025-07-17 21:40:02 -03:00
worktree chore: Bump Rust version to 1.88 (#33439) 2025-06-26 20:54:19 +02:00
x_ai Add xAI language model provider (#33593) 2025-07-15 15:35:50 -04:00
zed Claude experiment (#34577) 2025-07-17 14:25:55 +00:00
zed_actions Add zed://extension/{id} links (#34492) 2025-07-15 13:42:25 -06:00
zeta Route all LLM traffic through cloud.zed.dev (#34404) 2025-07-14 16:03:19 +00:00
zlog Initialize zlog default filters on init rather than waiting for settings load (#32209) 2025-06-06 00:49:30 -06:00
zlog_settings