Commit Graph
5172 Commits
Author SHA1 Message Date
Lukas Wirth e22363e73f Reduce amount of closure monomorphizations part 2 (#49688)
Release Notes:

- N/A *or* Added/Fixed/Improved ...
2026-02-20 08:32:45 +00:00
Xin Zhao dc725ae69b editor: Prevent comment extension on REPL separators (#48174)
Closes #47691

Release Notes:

- N/A *or* Added/Fixed/Improved ...
2026-02-20 08:38:16 +01:00
Cole Miller 006ce97969 git: Replace some unwraps with expect (#49683)
Release Notes:

- N/A
2026-02-20 05:18:10 +00:00
Cole Miller 78230a80cf git: Mitigate panic in split diff spacer calculation (#49674)
Release Notes:

- N/A
2026-02-19 22:08:51 -05:00
Finn Evers 53f42fd600 editor: Fix relative line numbering with deleted blocks present (#49656)
This tackles another issue where we would incorrectly show two absolute
line numbers with relative line numbering enabled when it really should
only have been the current active line number.

Sadly, no tests rn for this as we would need a better test infra for
that to properly catch/test this bug. But with the refactored logic, I
think this is easier to understand at glance, so at least theres that

Release Notes:

- Fixed an issue with relative line numbers where some rows would be
missing their relative line number with deleted hunks showing.
2026-02-19 22:34:14 +01:00
Eric Holk b945adf5fa Fix panic involving growing and shrinking selections while buffer size changes (#48898)
Repro steps:

1. Make a Rust file and check it in to git
2. Delete a lot of the file
3. Expand all the diffs (cmd+")
4. Select larger syntax node (ctrl+cmd+right)
5. Collapse all the diffs
6. Select smaller syntax node (ctrl+cmd+left)
7. Panic!

The problem was we were using byte offsets instead of anchors so after
we shrank the buffer by collapsing diffs we'd be pointing past the end
of it.

Release notes:
- N/A
2026-02-19 19:04:54 +00:00
DinoandZed Zippy 9e19a291cd Fix font weight in multiple elements (#49539)
* Update the font weight used in the Agent Panel's editor to respect the
`buffer_font_weight` setting.
* Update the font weight used in the Command Palette to use the
`ui_font_weight` setting value, seeing as the command palette is using
the `ui_font` settings for the font family and features
* Update the font weight used in the popovers to match the
`buffer_font_weight`, as it's also using the buffer font family and
features
* Update the `LabelLike.buffer_font` method in order to correctly set
the font weight, which fixes the font weight used in the file header
when displaying a multibuffer editor

Release Notes:

- Fixed incorrect font weight in the Command Pallete input
- Fixed missing font weight the Agent Panel's buffer
- Fixed missing font weight the Hover Popover
- Fixed missing font weight in Markdown's code block and inline code

---------

Co-authored-by: Zed Zippy <234243425+zed-zippy[bot]@users.noreply.github.com>
2026-02-19 17:49:59 +00:00
Lukas Wirth bf772b1b60 editor: Fix bracket colorization discoloring pure deletion diff hunks (#49618)
Release Notes:

- N/A *or* Added/Fixed/Improved ...

Co-authored by: Cole Miller <cole@zed.dev>
2026-02-19 17:34:26 +00:00
Kirill Bulatov 761671b2ae Revert "Enable type on search by default for the project search (#49374)" (#49619)
This reverts commit e477b545b7.

Needs 2 more fixes:

* enter does not move to the first excerpt anymore
* there could be situations when a narrowed search does not decrease the
excerpt enough to see the result onscreen

Release Notes:

- N/A
2026-02-19 16:24:54 +00:00
Patrik Levákanddino c9f7fcf822 vim: Apply linked edits for delete/change/substitute (#48458)
Ensure that editing one tag in a linked pair correctly mirrors the change 
to the other tag for Vim delete/change/substitute commands, visual 
mode operations, and the standard editor delete action.

Extract a `LinkedEdits` struct to deduplicate linked edit collection and
application across `handle_input`, `replace_selections`, `do_completion`,
`backspace`, and `delete`. Introduce `linked_edits_for_selections` as a
shared helper for building linked edits from the current selections.

Closes #35941

Release Notes:
- Fixed linked edits for delete/change/substitute commands so tag pairs
stay in sync.

---------

Co-authored-by: dino <dinojoaocosta@gmail.com>
2026-02-19 12:54:41 +00:00
Marco Mihai Condrache 91251fcfa2 editor: Remove duplicate method (#49592)
`highlight_background` and `highlight_background_key` currently have the
same implementation

Release Notes:

- N/A
2026-02-19 12:29:20 +00:00
Jakub Konka 0e06137349 buffer_diff: Reduce number of entity clones in base_text_buffer (#49573)
Release Notes:

- Improved split performance by reducing number of entity clones for
very large pre-loaded multibuffers.
2026-02-19 11:57:43 +01:00
Lukas Wirth 66cf6d247b editor: Yield less frequently in WrapSnapshot::update (#49497)
Every yield will cause the background task to get rescheduled causing
additional thread/context switching, so doing so for every wrapped row
is a bit excessive

Release Notes:

- N/A *or* Added/Fixed/Improved ...
2026-02-19 09:52:33 +00:00
Cole Miller b13f3789ff git: Mitigate panic in split diff (#49546)
Release Notes:

- N/A
2026-02-18 20:16:04 -05:00
Kirill Bulatov 3ee30231b4 Revert the gutter width limitation for multi buffers (#49536)
Follow-up of https://github.com/zed-industries/zed/pull/49374

This looks really bad when Zed zooms in and then out.

- N/A
2026-02-18 23:18:20 +00:00
Richard Feldman e8a72de57f Add agent worktree directory setting + worktree info persistence (#49139)
Add `agent_worktree_directory` to `GitSettings` for configuring where
agent worktrees are stored (default: Zed data dir). Remove `Copy` derive
from `GitSettings`/`GitContentSettings` (incompatible with String field)
and fix downstream `.as_ref().unwrap()` call sites.

Define `AgentGitWorktreeInfo` (branch, worktree_path, base_ref) and add
it to `DbThread` + `DbThreadMetadata` for persistence and session list
display.

Closes AI-33

Release Notes:

- N/A
2026-02-18 22:20:31 +00:00
Kirill BulatovandCole Miller e477b545b7 Enable type on search by default for the project search (#49374)
Deals with https://github.com/zed-industries/zed/issues/9318
Re-lands https://github.com/zed-industries/zed/pull/42889 with more
fixes to reduce overall flickering

Release Notes:

- Enabled type on search by default for the project search

---------

Co-authored-by: Cole Miller <cole@zed.dev>
2026-02-18 21:39:45 +00:00
Cole Miller 5ebeac063c Revert "editor: Add FlexClipped block style and use it for spacer blocks" (#49508)
Reverts zed-industries/zed#49478
2026-02-18 13:15:00 -05:00
Lukas Wirth 1d314931ed editor: Some more semantic highlighting perf work (#49491)
- Reduce some re-allocations in `text_anchors_to_visible_anchors` and
`refresh_semantic_tokens`
- Process `raw_to_buffer_semantic_tokens` work on the background thread

Release Notes:

- N/A *or* Added/Fixed/Improved ...
2026-02-18 16:02:17 +00:00
Cole MillerandSmit Barmase 55435b72fb editor: Add FlexClipped block style and use it for spacer blocks (#49478)
`FlexClipped` acts like `Flex`, but only allows the block to render in
the main hitbox, not the gutter. This is a visual improvement for the
spacers compared to `Sticky`.


https://github.com/user-attachments/assets/2b0aed0c-91ff-4e74-85b1-aea81f4e8a35


Release Notes:

- git: Improved the visual display for spacers in the split diff view.

Co-authored-by: Smit Barmase <heysmitbarmase@gmail.com>
2026-02-18 15:45:11 +00:00
Jakub KonkaandLukas Wirth 846b4191c9 editor: More perf work (#49465)
Seems that `SmallVec::clone` is pretty expensive in a generic case, and
specialising it improves the performance quite a bit!

Release Notes:

- Improved performance of different building blocks within the
MultiBuffer.

---------

Co-authored-by: Lukas Wirth <lukas@zed.dev>
2026-02-18 14:20:30 +01:00
Lukas Wirth 2fb5628281 Reduce amount of monomorphizations from FnMut closures (#49453)
Replaces a bunch of `impl FnMut` parameters with `&mut dyn FnMut` for
functions where this is the sole generic parameter.
Release Notes:

- N/A *or* Added/Fixed/Improved ...
2026-02-18 12:00:02 +01:00
Lukas Wirth 65457acf6c multi_buffer: Remove unnecessary reference in as_singleton return type (#49447)
Allows cleaning up `open_tool_call_location` slightly

Release Notes:

- N/A *or* Added/Fixed/Improved ...
2026-02-18 09:32:36 +00:00
Lukas Wirth 75a0e170a1 editor: Improve apply_fetched_hints for many excerpt multibuffers (#49444)
Reuses the new multi buffer api from
https://github.com/zed-industries/zed/pull/49349 for inlay hints

Release Notes:

- Reduced occasional stuttering coming from inlay hints in large
multibuffers
2026-02-18 10:19:08 +01:00
Marco Mihai Condrache 8044f484ca editor: Optimize TabMap chunks generation (#48378)
Currently, the next chunk is generated by traversing all characters of
the current folded chunk until a tab is found. Since we already have
bitmasks for characters and tabs, we can also propagate the newlines
bitmap from the rope and use it to make this computation O(1) in all
cases.

I haven’t run benchmarks yet.

Release Notes:

- N/A
2026-02-18 08:53:26 +01:00
76efc691e6 git: More performance improvements when toggling between diff views (#49400)
- Defer syncing block maps from `set_companion`, eliminating some
redundant recomputations
- Emit one large multibuffer edit from `set_show_deleted_hunks` instead
of many small edits, to avoid bad case for block map

This cuts hangs roughly in half when toggling between views in a large
diff (1000 commits from the chromium repository).

<!-- Before you mark this PR as ready for review, make sure that you
have:
- [ ] Added a solid test coverage and/or screenshots from doing manual
testing
- [ ] Done a self-review taking into account security and performance
aspects
- [ ] Aligned any UI changes with the [UI
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
-->

Release Notes:

- Improved performance with large diffs when toggling between diff
views.

---------

Co-authored-by: Jakub Konka <kubkon@jakubkonka.com>
Co-authored-by: Lukas Wirth <lukas@zed.dev>
2026-02-17 22:09:27 +00:00
Ben Kunkle 4b160fc862 Strip comment and list prefixes in vim: join lines (#49295)
Closes #ISSUE

Before you mark this PR as ready for review, make sure that you have:
- [ ] Added a solid test coverage and/or screenshots from doing manual
testing
- [ ] Done a self-review taking into account security and performance
aspects
- [ ] Aligned any UI changes with the [UI
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)

Release Notes:

- Improved the behavior of the `vim: join lines` and `editor: join lines`. Comment and other language specific line prefixes are now stripped from the join line
2026-02-17 11:24:45 -05:00
Austin Cummings b0ffa2f642 editor: Fix newline below when selection is at the end of an multibuffer excerpt (#49132)
Switches `newline_below` from adding a newline to the start of the next
line in a multibuffer, to appending a newline at the end of the
selections current lines. This keeps the insertion within the excerpt of
the selection rather than adding a newline to the excerpt below.

Closes #47965

Before you mark this PR as ready for review, make sure that you have:
- [x] Added a solid test coverage and/or screenshots from doing manual
testing
- [x] Done a self-review taking into account security and performance
aspects
- [x] Aligned any UI changes with the [UI
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)

Release Notes:

- Fixed `editor::NewlineBelow` adding a newline to the next multibuffer
excerpt when selection is at the end of an excerpt
2026-02-17 14:45:36 +01:00
Lukas Wirth 9887b7a6b6 editor: Improve buffer_into_editor_highlights performance (#49349)
This brings the runtime down to logarithmic scaling of excerpts / linear
scaling of tokens.

Release Notes:

- N/A *or* Added/Fixed/Improved ...
2026-02-17 13:02:45 +01:00
4eb6eebf3a vim: Apply strict paragraph motion only in vim mode (#48024)
Reverts the editor's paragraph navigation behavior that was changed in
#47734. Whitespace-only lines are now treated as paragraph boundaries
again for non-vim mode users.

Vim mode retains its own implementation where only truly empty lines
are paragraph boundaries.

Release Notes:

- Fixed editor paragraph navigation to treat whitespace-only lines as
paragraph boundaries again

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: dino <dinojoaocosta@gmail.com>
2026-02-17 11:40:50 +00:00
Cole MillerandZed Zippy 00f2db1b39 git: Fix panic in split diff when edits cause excerpts to merge (#49122)
Our strategy for keeping excerpts in sync between the two sides of the
split diff is generally

- mutate the excerpts on the RHS
- pull out the new excerpts for the affected path from the RHS
- translate those ranges to the LHS
- update the LHS excerpts with those ranges

But this can break down when the translated ranges overlap on the LHS
despite the original ranges not overlapping on the RHS. This can happen,
for example, when a large deletion in a file crosses several excerpt
boundaries. It's rare because normally excerpt boundaries in the project
diff and branch diff are adjusted to keep entire diff hunks in view, but
we defer this for dirty files, so it's not hard to trigger it when using
the agent or editing an individual file while the diff is open in
another tab.

Release Notes:

- Fixed a panic that could occur when editing files while the project
diff or branch diff was open.

---------

Co-authored-by: Zed Zippy <234243425+zed-zippy[bot]@users.noreply.github.com>
2026-02-17 01:40:19 +00:00
Lukas Wirth a2b58631cb editor: Fix sticky headers not accounting for deleted diff hunks (#49296)
Release Notes:

- Fixed sticky headers sometimes disappearing when dealing with expanded
deleted diff hunks
2026-02-16 21:22:27 +00:00
Jakub Konka 08cee47ed3 editor: Batch calls to fold_buffer in ProjectDiff::refresh (#49278)
This change improves performance of project diff in that:
* scrolling in split view for very large diffs (think chromium repo with
`git reset HEAD~1000`) is now very smooth on macOS and fairly smooth on
Linux
* switching from split to unified is very smooth on macOS, and fairly
smooth on Linux

There still remains the case of (severe) hangs when switching from
unified to split however, but it will be addressed in a follow-up PR.

Anyhow, here's the screenshot of the Instruments.app capture of opening
chromium repo in Zed in split view, scrolling a little, moving to
unified, scrolling some more, and moving back to split. Prior to this
change, split -> unified would cause a severe hang, whereas now it's a
hang and thus feels much smoother already (without Instruments profiling
is barely visible). Unified -> split severe hangs are still there but
don't last as long.

<img width="2301" height="374" alt="Screenshot 2026-02-16 at 5 46 23 PM"
src="https://github.com/user-attachments/assets/f687f8d4-cffd-47f1-ada1-f6c4d3ac3cd4"
/>

Release Notes:

- Improved project diff performance when opening very large
diffs/repositories.
2026-02-16 20:58:30 +01:00
Lukas Wirth 6afdab0243 editor: Sticky diff hunk controls (#49260)
Release Notes:

- Diff hunk controls now stick to the top of the editor viewport if the
top part of the hunk is outside the viewport
2026-02-16 13:17:05 +00:00
Coenen Benjaminanddino 936cd54153 search: Fix collapse/expand all button sync (#48773)
Derive collapsed state from `Editor.has_any_buffer_folded` instead of
tracking it separately, removing redundant `ResultsCollapsedChanged` event
and stale `is_collapsed`/`results_collapsed` fields.

Closes #48734 

Release Notes:

- Fixed collapse/expand all button in buffer search and project search
not syncing correctly when toggling individual file sections

---------

Signed-off-by: Benjamin <5719034+bnjjj@users.noreply.github.com>
Co-authored-by: dino <dinojoaocosta@gmail.com>
2026-02-16 12:55:16 +00:00
ozacodandozacod 6d243ddc95 editor: Fix to remove non-functional folding creases from the gutter (#49200)
Lsp-based folding disables indentation-based folding. Even though
indentation-based folding is non-functional, the crease icon is still
displayed in the gutter. This PR fixes this mismatch.

Before:
<img width="651" height="199" alt="before"
src="https://github.com/user-attachments/assets/ebd202e8-9eda-43c9-adbd-767e9802e590"
/>

After:
<img width="666" height="197" alt="after"
src="https://github.com/user-attachments/assets/b498e325-cd06-4c51-afdb-fcda4f1a25e6"
/>


Before you mark this PR as ready for review, make sure that you have:
- [x] Added a solid test coverage and/or screenshots from doing manual
testing
- [x] Done a self-review taking into account security and performance
aspects
- [x] Aligned any UI changes with the [UI
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)

Release Notes:

- Removed non-functional folding creases from the gutter.

Co-authored-by: ozacod <ozacod@users.noreply.github.com>
2026-02-15 09:33:03 +00:00
Kirill Bulatov 13e97b6663 Revert proejct search on type (#49163)
Reverts the whole "project search on type" set of PRs until we figure
out better ways to deal with flickering between search results
appearing.

Release Notes:

- N/A
2026-02-14 08:31:30 +00:00
Kirill Bulatov 82a34f780c Fix search on input behavior (#49150)
Follow-up of https://github.com/zed-industries/zed/pull/42889

* disable by default
* add a configurable debounce, 200ms default

Release Notes:

- N/A
2026-02-13 23:20:13 +00:00
Oliver Azevedo BarnesandBen Kunkle 297c3e731f agent: Add project-level disable_ai setting (#47902)
Closes #47854

Move `disable_ai` from root settings to `ProjectSettingsContent` to
enable per-project AI configuration via `.zed/settings.json`.

- Update settings UI to allow viewing/editing at both user and project
level
- Update editor to check project-level settings for edit predictions and
context menus
- Prevent MCP servers from starting when AI is disabled at project level

Note: SaturatingBool ensures that if user globally disables AI, projects
cannot re-enable it. Projects can only further restrict AI, not grant
it.

Release Notes:

- added support for disabling AI in project settings 

---------

Co-authored-by: Ben Kunkle <ben.kunkle@gmail.com>
2026-02-13 11:57:43 -06:00
Shuhei KadowakiandClaude Opus 4.6 ffc10ad274 lsp: Sanitize newlines in document and workspace symbol names (#49092)
LSP servers may return symbol names containing newlines. Since outline
panel, breadcrumbs, and project search modal all expect single-line
items, collapse newlines before display.

- Document symbols: collapse newlines to spaces in name
- Workspace symbols: collapse newlines with `↵ ` separator for name and
container_name, preserving visual hint of original structure

Closes #ISSUE

Before you mark this PR as ready for review, make sure that you have:
- [x] Added a solid test coverage and/or screenshots from doing manual
testing
- [x] Done a self-review taking into account security and performance
aspects
- [x] Aligned any UI changes with the [UI
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)

Release Notes:

- N/A

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 17:47:38 +00:00
holoflash 96c5f82b46 Add search_on_input setting to Project Search (#42889)
I was really missing the ability to instantly see search results while
typing in the Project Search and decided to try and implement it.
As this may not be a feature that _everyone_ wants, I made it
toggle-able via the settings (or the settings.json)
### Settings
Set to false by default
<img width="911" height="618" alt="Screenshot 2025-11-17 at 16 17 09"
src="https://github.com/user-attachments/assets/8eaaab65-684e-4c5f-9a3c-9cb62cff0925"
/>
### settings.json
Set to false by default
<img width="396" height="193" alt="Screenshot 2025-11-17 at 16 18 21"
src="https://github.com/user-attachments/assets/90ebda95-c454-4bc5-8423-5da593832fd2"
/>

### Video demo:

https://github.com/user-attachments/assets/715d6b77-3a61-45f8-8e1a-9bd880c697c3

- Search input is debounced with 250ms in this mode (cool?)


The desire for this feature has been expressed here too:
https://github.com/zed-industries/zed/discussions/30843

Release Notes:

- Enabled project search on input. Can be turned off with
`search.search_on_input` settings toggle.
2026-02-13 17:54:17 +02:00
56290e8341 git: Remove unnecessary block map recomputation when splitting SplittableEditor (#49075)
We had a call to `BlockMap::unfold_intersecting` that ended up
recomputing the entire block map for the RHS _without_ spacers, only to
throw it away in favor of the version with spacers a few lines down. Now
we only sync each block map once in `set_companion`.

Release Notes:

- Improved performance when toggling from the unified diff to the split
diff.

Co-authored-by: Jakub <jakub@zed.dev>
Co-authored-by: Cameron McLoughlin <cameron.studdstreet@gmail.com>
2026-02-13 15:52:04 +00:00
Cole Miller b606c54079 git: Fix misalignment in the split diff when inlays fall at the end of an excerpt (#49078)
- [x] Tests or screenshots needed?
- [ ] Code Reviewed
- [x] Manual QA

Release Notes:

- Fixed misalignment of lines in the split diff when using inlay hints.
2026-02-13 10:31:06 -05:00
Mayank VermaandLukas Wirth c35110461e editor: Fix soft wrap premature wrapping with certain fonts (#45206)
Closes #45107

Release Notes:

- Fixed soft wrap prematurely wrapping with certain fonts

---------

Co-authored-by: Lukas Wirth <lukas@zed.dev>
2026-02-13 10:49:50 +00:00
Kirill Bulatov b129fde8c2 Fix document highlight data issues (#49079)
Follow-up of https://github.com/zed-industries/zed/pull/48780

Fixes incorrect multi byte characters treatment in the symbol range when
highlighting:
<img width="1728" height="507" alt="image"
src="https://github.com/user-attachments/assets/c6639220-f08a-4ea8-bf99-926566e356ae"
/>

Fixes multiple language servers' duplicate data display:
<img width="1726" height="925" alt="image"
src="https://github.com/user-attachments/assets/ca98ee29-732e-4c8e-adf4-21a9523a5a9c"
/>


Release Notes:

- N/A
2026-02-13 00:55:26 +00:00
a0adc63011 Separate accepted edit predictions in edit history (#49056)
Release Notes:

- N/A

---------

Co-authored-by: Ben Kunkle <ben@zed.dev>
Co-authored-by: Max Brunsfeld <maxbrunsfeld@gmail.com>
2026-02-13 00:15:59 +00:00
Kirill Bulatov 7089b96bfc Fix semantic highlights not cleared when disabled in settings (#49066)
Closes https://github.com/zed-industries/zed/issues/49060

Release Notes:

- Fixed semantic highlights not cleared when disabled in settings
2026-02-12 20:52:46 +00:00
Lukas WirthandZed Zippy c846c1292d editor: Do not include inlays in word diff highlights (#49007)
Release Notes:

- Fixed inlay hints being rendered as new inserted words in word based
diff highlighting

---------

Co-authored-by: Zed Zippy <234243425+zed-zippy[bot]@users.noreply.github.com>
2026-02-12 09:26:06 +00:00
Kirill Bulatov 04fb04ecee Use document symbols' ranges to derive their outline labels (#48978) 2026-02-12 09:36:48 +02:00
a67197b3e2 Re-add MultiWorkspace (#48800)
Release Notes:

- Added agent panel restoration. Now restarting your editor won't cause
your thread to be forgotten.

---------

Co-authored-by: Anthony Eid <56899983+Anthony-Eid@users.noreply.github.com>
Co-authored-by: Eric Holk <eric@zed.dev>
Co-authored-by: Danilo Leal <67129314+danilo-leal@users.noreply.github.com>
Co-authored-by: Anthony Eid <anthony@zed.dev>
Co-authored-by: Mikayla Maki <mikayla.c.maki@gmail.com>
Co-authored-by: Cameron Mcloughlin <cameron.studdstreet@gmail.com>
2026-02-12 01:06:23 +00:00