ZIm/crates
Ben Kunkle 2b888e1d30
Fix redo after noop format (#34898)
Closes #31917

Previously, as of #28457 we used a hack, creating an empty transaction
in the history that we then merged formatting changes into in order to
correctly identify concurrent edits to the buffer while formatting was
happening. This caused issues with noop formatting however, as using the
normal API of the buffer history (in an albeit weird way) resulted in
the redo stack being cleared, regardless of whether the formatting
transaction included edits or not, which is the correct behavior in all
other contexts.

This PR fixes the redo issue by codifying the behavior formatting wants,
that being the ability to push an empty transaction to the history with
no other side-effects (i.e. clearing the redo stack) to detect
concurrent edits, with the tradeoff being that it must then manually
remove the transaction later if no changes occurred from the formatting.
The redo stack is still cleared when there are formatting edits, as the
individual format steps use the normal `{start,end}_transaction` methods
which clear the redo stack if the finished transaction isn't empty.

Release Notes:

- Fixed an issue where redo would not work after buffer formatting
(including formatting on save) when the formatting did not result in any
changes
2025-07-22 11:45:42 -04:00
..
acp_thread Display ACP plans (#34816) 2025-07-21 11:11:37 -03:00
activity_indicator Regroup LSP context menu items by the worktree name (#34838) 2025-07-21 17:48:07 +00:00
agent Support multiple OpenAI compatible providers (#34212) 2025-07-22 12:20:07 -03:00
agent_servers Wire up stop button in claude threads (#34839) 2025-07-21 20:33:59 +00:00
agent_settings agent: Add use_modifier_to_send setting (#34709) 2025-07-18 15:03:31 -03:00
agent_ui Add setting to disable all AI features (#34896) 2025-07-22 11:32:39 -04:00
ai_onboarding ai_onboarding: Fix API key onboarding callout not showing properly (#34880) 2025-07-22 12:54:06 +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 Support multiple OpenAI compatible providers (#34212) 2025-07-22 12:20:07 -03: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 Improve distinguishing user from agent edits (#34716) 2025-07-22 14:23:50 +03:00
assistant_tools Add setting to disable all AI features (#34896) 2025-07-22 11:32:39 -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 Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
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 collab: Add screen selector (#31506) 2025-07-21 13:44:51 +02: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 Add setting to disable all AI features (#34896) 2025-07-22 11:32:39 -04:00
clock Add the ability to follow the agent as it makes edits (#29839) 2025-05-04 08:28:39 +00:00
collab collab: Remove unneeded caching of Stripe meters (#34900) 2025-07-22 15:27:58 +00:00
collab_ui collab: Add screen selector (#31506) 2025-07-21 13:44:51 +02:00
collections Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
command_palette Misc code cleanups accumulated while working on other changes (#34787) 2025-07-20 23:22:13 +00:00
command_palette_hooks Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
component component preview: Add separators between sections in sidebar (#34701) 2025-07-18 10:24:57 -03:00
context_server context_server: Change command string field to PathBuf (#34873) 2025-07-22 12:12:07 +02:00
copilot Add setting to disable all AI features (#34896) 2025-07-22 11:32:39 -04:00
credentials_provider Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
dap Misc code cleanups accumulated while working on other changes (#34787) 2025-07-20 23:22:13 +00:00
dap_adapters debugger: Fix attaching with DebugPy (#34706) 2025-07-18 14:28:03 +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 Fix redo after noop format (#34898) 2025-07-22 11:45:42 -04:00
eval gpui: Add use state APIs (#34741) 2025-07-19 01:27:54 +00:00
explorer_command_injector Just Zed instead of Zed Editor (#34146) 2025-07-10 21:08:43 +02:00
extension context_server: Change command string field to PathBuf (#34873) 2025-07-22 12:12:07 +02: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 context_server: Change command string field to PathBuf (#34873) 2025-07-22 12:12:07 +02: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 Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
fs git: Handle shift-click to stage a range of entries in the panel (#34296) 2025-07-12 19:04:26 +00:00
fsevent Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
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 Add setting to disable all AI features (#34896) 2025-07-22 11:32:39 -04: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 gpui: Simplify bindings_for_action API (#34857) 2025-07-22 10:59:51 -04:00
gpui_macros gpui: Add use state APIs (#34741) 2025-07-19 01:27:54 +00:00
gpui_tokio Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
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 Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
icons Support multiple OpenAI compatible providers (#34212) 2025-07-22 12:20:07 -03: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 Add setting to disable all AI features (#34896) 2025-07-22 11:32:39 -04: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 Fix redo after noop format (#34898) 2025-07-22 11:45:42 -04:00
language_extension Stop extensions' servers and message loops before removing their files (#34208) 2025-07-10 19:25:10 +00:00
language_model Support multiple OpenAI compatible providers (#34212) 2025-07-22 12:20:07 -03:00
language_models Support multiple OpenAI compatible providers (#34212) 2025-07-22 12:20:07 -03:00
language_selector gpui: Store action documentation (#33809) 2025-07-02 21:14:33 -04:00
language_tools Regroup LSP context menu items by the worktree name (#34838) 2025-07-21 17:48:07 +00:00
languages keymap_ui: Auto complete action arguments (#34785) 2025-07-20 16:24:17 -04:00
livekit_api Use anyhow more idiomatically (#31052) 2025-05-20 23:06:07 +00:00
livekit_client collab: Add screen selector (#31506) 2025-07-21 13:44:51 +02: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 Misc code cleanups accumulated while working on other changes (#34787) 2025-07-20 23:22:13 +00:00
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
onboarding onboarding: Create basic onboarding page (#34723) 2025-07-21 16:20:38 +00: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 Fix redo after noop format (#34898) 2025-07-22 11:45:42 -04:00
project_panel theme: Add panel.overlay_background and panel.overlay_hover (#34655) 2025-07-22 15:20:26 +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 Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
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 Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
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: Fix remove key mapping bug (#34683) 2025-07-18 14:09:28 -04:00
settings_ui keymap_ui: Auto complete action arguments (#34785) 2025-07-20 16:24:17 -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 Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
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 Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
telemetry_events Add new action to run agent eval (#29158) 2025-04-21 21:30:21 -07:00
terminal Fix incorrect minimum_contrast comment (#34710) 2025-07-18 10:01:09 -04:00
terminal_view gpui: Round scroll_max to two decimal places (#34832) 2025-07-21 22:24:33 +02:00
text Fix redo after noop format (#34898) 2025-07-22 11:45:42 -04:00
theme theme: Add panel.overlay_background and panel.overlay_hover (#34655) 2025-07-22 15:20:26 +05:30
theme_extension Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
theme_importer theme_importer: Add missing color imports for the minimap thumb (#34724) 2025-07-18 16:55:03 +00: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 collab: Add screen selector (#31506) 2025-07-21 13:44:51 +02:00
toolchain_selector gpui: Store action documentation (#33809) 2025-07-02 21:14:33 -04:00
ui Support multiple OpenAI compatible providers (#34212) 2025-07-22 12:20:07 -03:00
ui_input Support multiple OpenAI compatible providers (#34212) 2025-07-22 12:20:07 -03: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 Misc code cleanups accumulated while working on other changes (#34787) 2025-07-20 23:22:13 +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 agent: Expose web search tool to beta users (#29273) 2025-04-23 15:30:20 +00:00
web_search_providers Route all LLM traffic through cloud.zed.dev (#34404) 2025-07-14 16:03:19 +00:00
welcome Add setting to disable all AI features (#34896) 2025-07-22 11:32:39 -04:00
workspace Add setting to disable all AI features (#34896) 2025-07-22 11:32:39 -04: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 Add setting to disable all AI features (#34896) 2025-07-22 11:32:39 -04:00
zed_actions Add refinements to the AI onboarding flow (#33738) 2025-07-18 18:25:36 +02:00
zeta Add setting to disable all AI features (#34896) 2025-07-22 11:32:39 -04: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 VSCode Settings import (#29018) 2025-04-23 20:54:09 +00:00