ed7c55a
vim: Reset search range after substitute (#28403)
Click to expand commit body
Update the `Vim::replace_command` method so as to reset the range in the
`BufferSearchBar` after running the replacement in order to fix the
issue where the number of matches in the search bar would be incorrect
after the replacement was done, as it would only take into consideration
the range in which the replacement happened, instead of the whole
buffer.
In order to get this working a new
`BufferSearchBar::clear_search_within_ranges` method is introduced in
these changes.
Release Notes:
- Fixed the number of matches displayed in the search bar after running
vim's substitute command.
Dino
created
6db4ab3
Add code action tool and rename tool (#28453)
Click to expand commit body
Having a separate rename tool seems to make the agent more likely to use
it compared to having it be part of the code actions tool.
Release Notes:
- Added code action tool and rename tool.
Richard Feldman
created
0e72a7e
Update Rust crate smallvec to v1.15.0 (#28469)
Click to expand commit body
This PR contains the following updates:
| Package | Type | Update | Change |
|---|---|---|---|
| [smallvec](https://redirect.github.com/servo/rust-smallvec) |
workspace.dependencies | minor | `1.14.0` -> `1.15.0` |
---
### Release Notes
<details>
<summary>servo/rust-smallvec (smallvec)</summary>
###
[`v1.15.0`](https://redirect.github.com/servo/rust-smallvec/releases/tag/v1.15.0)
[Compare
Source](https://redirect.github.com/servo/rust-smallvec/compare/v1.14.0...v1.15.0)
#### What's Changed
- Fix typos by
[@​waywardmonkeys](https://redirect.github.com/waywardmonkeys) in
[https://github.com/servo/rust-smallvec/pull/373](https://redirect.github.com/servo/rust-smallvec/pull/373)
- Implement bincode2 encode/decode support for smallvec v1 by
[@​markbt](https://redirect.github.com/markbt) in
[https://github.com/servo/rust-smallvec/pull/375](https://redirect.github.com/servo/rust-smallvec/pull/375)
#### New Contributors
- [@​markbt](https://redirect.github.com/markbt) made their first
contribution in
[https://github.com/servo/rust-smallvec/pull/375](https://redirect.github.com/servo/rust-smallvec/pull/375)
**Full Changelog**:
https://github.com/servo/rust-smallvec/compare/v1.14.0...v1.15.0
</details>
---
### Configuration
π **Schedule**: Branch creation - "after 3pm on Wednesday" in timezone
America/New_York, Automerge - At any time (no schedule defined).
π¦ **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.
β» **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.
π **Ignore**: Close this PR and you won't be reminded about this update
again.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box
---
Release Notes:
- N/A
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4yMzguMCIsInVwZGF0ZWRJblZlciI6IjM5LjIzOC4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
renovate[bot]
and
renovate[bot]
created
3dc3ab0
Update Rust crate prometheus to 0.14 (#28468)
Click to expand commit body
This PR contains the following updates:
| Package | Type | Update | Change |
|---|---|---|---|
| [prometheus](https://redirect.github.com/tikv/rust-prometheus) |
dependencies | minor | `0.13` -> `0.14` |
---
### Release Notes
<details>
<summary>tikv/rust-prometheus (prometheus)</summary>
###
[`v0.14.0`](https://redirect.github.com/tikv/rust-prometheus/blob/HEAD/CHANGELOG.md#0140)
[Compare
Source](https://redirect.github.com/tikv/rust-prometheus/compare/v0.13.4...v0.14.0)
- API change: Use `AsRef<str>` for owned label values
([#​537](https://redirect.github.com/tikv/rust-prometheus/issues/537))
- Improvement: Hashing improvements
([#​532](https://redirect.github.com/tikv/rust-prometheus/issues/532))
- Dependency upgrade: Update `hyper` to 1.6
([#​524](https://redirect.github.com/tikv/rust-prometheus/issues/524))
- Dependency upgrade: Update `procfs` to 0.17
([#​543](https://redirect.github.com/tikv/rust-prometheus/issues/543))
- Dependency upgrade: Update `protobuf` to 3.7.2 for RUSTSEC-2024-0437
([#​541](https://redirect.github.com/tikv/rust-prometheus/issues/541))
- Dependency upgrade: Update `thiserror` to 2.0
([#​534](https://redirect.github.com/tikv/rust-prometheus/issues/534))
- Internal change: Fix LSP and Clippy warnings
([#​540](https://redirect.github.com/tikv/rust-prometheus/issues/540))
- Internal change: Bump MSRV to 1.81
([#​539](https://redirect.github.com/tikv/rust-prometheus/issues/539))
- Documentation: Fix `register_histogram_vec_with_registry` docstring
([#​528](https://redirect.github.com/tikv/rust-prometheus/issues/528))
- Documentation: Fix typos in static-metric docstrings
([#​479](https://redirect.github.com/tikv/rust-prometheus/issues/479))
- Documentation: Add missing `protobuf` feature to README list
([#​531](https://redirect.github.com/tikv/rust-prometheus/issues/531))
</details>
---
### Configuration
π **Schedule**: Branch creation - "after 3pm on Wednesday" in timezone
America/New_York, Automerge - At any time (no schedule defined).
π¦ **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.
β» **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.
π **Ignore**: Close this PR and you won't be reminded about this update
again.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box
---
Release Notes:
- N/A
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4yMzguMCIsInVwZGF0ZWRJblZlciI6IjM5LjIzOC4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
renovate[bot]
and
renovate[bot]
created
ed63f21
Remove "use_key_equivalents" from linux keymap as it does nothing (#28464)
23c3f5f
Update Rust crate indexmap to v2.9.0 (#28455)
Click to expand commit body
This PR contains the following updates:
| Package | Type | Update | Change |
|---|---|---|---|
| [indexmap](https://redirect.github.com/indexmap-rs/indexmap) |
workspace.dependencies | minor | `2.8.0` -> `2.9.0` |
---
### Release Notes
<details>
<summary>indexmap-rs/indexmap (indexmap)</summary>
###
[`v2.9.0`](https://redirect.github.com/indexmap-rs/indexmap/blob/HEAD/RELEASES.md#290-2025-04-04)
[Compare
Source](https://redirect.github.com/indexmap-rs/indexmap/compare/2.8.0...2.9.0)
- Added a `get_disjoint_mut` method to `IndexMap`, matching Rust 1.86's
`HashMap` method.
- Added a `get_disjoint_indices_mut` method to `IndexMap` and
`map::Slice`,
matching Rust 1.86's `get_disjoint_mut` method on slices.
- Deprecated the `borsh` feature in favor of their own `indexmap`
feature,
solving a cyclic dependency that occured via `borsh-derive`.
</details>
---
### Configuration
π **Schedule**: Branch creation - "after 3pm on Wednesday" in timezone
America/New_York, Automerge - At any time (no schedule defined).
π¦ **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.
β» **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.
π **Ignore**: Close this PR and you won't be reminded about this update
again.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box
---
Release Notes:
- N/A
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4yMzguMCIsInVwZGF0ZWRJblZlciI6IjM5LjIzOC4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
renovate[bot]
and
renovate[bot]
created
b3be294
lsp_store: Preserve environment variables from ExtensionLspAdapter (#28173)
Click to expand commit body
## Description
In https://github.com/zed-industries/zed/pull/27213 the new feature for
setting env variables for LSPs was added but env vars passed from an
instance of `ExtensionLspAdapter` are lost now. This means if an
extension returns any env variable like this:
```rust
zed::Command {
command: some_command,
args: some_args,
env: vec![("A", "value_for_a")],
}
```
The env variable `A` will never be used by `LspStore`. This commit
preserves env variables passed from an instance of
`ExtensionLspAdapter`.
After this change overwriting of env variables
happens in the following order:
```plaintext
shell <- variables from an extension <- variables from settings
```
## How to reproduce
Allow any extension to return a `zed::Command` with environment
variables to Zed. You can use [this
branch](https://github.com/zed-extensions/ruby/pull/48) for the Ruby
extension:
1. Check out the branch and install the dev version of the Ruby
extension.
2. Ensure you have the `solargraph` LSP configured and enabled for the
Ruby extension. This LSP is enabled by default in Zed and in the Ruby
extension.
3. Make sure you donβt have `solargraph` installed in your user gemset.
4. Open any Ruby project, such as [this
one](https://github.com/vitallium/stimulus-lsp-error-zed).
5. Open a Ruby file and wait for the error message about failing to
start `solargraph`. It should look like this or something similar:
```
[2025-04-05T23:17:26+02:00 ERROR project::lsp_store] server stderr: "/Users/vslobodin/.local/share/mise/installs/ruby/3.4.1/lib/ruby/site_ruby/3.4.0/rubygems.rb:262:in 'Gem.find_spec_for_exe': can't find gem solargraph (>= 0.a) with executable solargraph (Gem::GemNotFoundException)\n\tfrom /Users/vslobodin/.local/share/mise/installs/ruby/3.4.1/lib/ruby/site_ruby/3.4.0/rubygems.rb:281:in 'Gem.activate_bin_path'\n"
```
This error occurs because the Ruby extension passes the `GEM_PATH`
environment variable to specify the location of Ruby gems. Without it,
Zed tries to spawn the `solargraph` gem in the user's gemset scope. Ruby
fails to start it because the `solargraph` gem is not installed in the
user gemset but in the extension directory. By setting the `GEM_PATH`
environment variable, Ruby searches additional locations to start the
`solargraph` LSP.
I hope I've described it correctly. Please let me know if you need more
information. Thanks!
Release Notes:
- Fixed the issue where environment variables from `ExtensionLspAdapter`
were lost
Vitaly Slobodin
created
af5318d
Update default vim substitute command behavior and add support for 'g' flag (#28138)
Click to expand commit body
This Pull Request updates the default behavior of the substitute (`s`)
command in vim mode to only replace the next match by default, instead
of all, and replace all matches only when the `g` flag is provided,
making it more similar to NeoVim's behavior.
In order to achieve this, the following changes were introduced:
- Update `BufferSearchBar::replace_next` to be a public method, so it
can be called from `Vim::replace_command` .
- Update the `Replacement::parse` to set the `should_replace_all` field
to `false` by default, and only set it to `true` if the `'g'` flag is
present in the query.
- Add support for when the `Replacement.should_replace_all` is set to
`false` in `Vim::replace_command`, so as to have it only replace the
next occurrence instead of all occurrences in the line.
- Introduce `BufferSearchBar::select_first_match` so as to activate the
first match on the line under the cursor.
Closes #24450
Release Notes:
- Improved vim's substitute command so as to only replace the first
match by default, and replace all matches if the `'g'` flag is provided
---------
Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
I wrote the test wrongly in
https://github.com/zed-industries/zed/pull/28005:
It should be `$` instead of `shift-4`, so it was just yanking from the
middle of the line instead of the newline character. Fixed it and
regenerated it.
Release Notes:
- N/A
5brian
created
9ae4f4b
gpui: Use BoolExt trait in more places (#28052)
Click to expand commit body
Use the `BoolExt` trait which converts rust booleans to their objc
equivalent when applicable.
Release Notes:
- N/A
tidely
created
915a1cb
Update actions/dependency-review-action digest to 67d4f4b (#28450)
Click to expand commit body
This PR contains the following updates:
| Package | Type | Update | Change |
|---|---|---|---|
|
[actions/dependency-review-action](https://redirect.github.com/actions/dependency-review-action)
| action | digest | `3b139cf` -> `67d4f4b` |
---
### Configuration
π **Schedule**: Branch creation - "after 3pm on Wednesday" in timezone
America/New_York, Automerge - At any time (no schedule defined).
π¦ **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.
β» **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.
π **Ignore**: Close this PR and you won't be reminded about this update
again.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box
---
Release Notes:
- N/A
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4yMzguMCIsInVwZGF0ZWRJblZlciI6IjM5LjIzOC4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
renovate[bot]
and
renovate[bot]
created
aead0e1
Update Rust crate mimalloc to v0.1.46 (#27964)
Click to expand commit body
This PR contains the following updates:
| Package | Type | Update | Change |
|---|---|---|---|
| [mimalloc](https://redirect.github.com/purpleprotocol/mimalloc_rust) |
dependencies | patch | `0.1.45` -> `0.1.46` |
---
### Release Notes
<details>
<summary>purpleprotocol/mimalloc_rust (mimalloc)</summary>
###
[`v0.1.46`](https://redirect.github.com/purpleprotocol/mimalloc_rust/releases/tag/v0.1.46):
Version 0.1.46
[Compare
Source](https://redirect.github.com/purpleprotocol/mimalloc_rust/compare/v0.1.45...v0.1.46)
##### Changes
- Fixed musl builds.
</details>
---
### Configuration
π **Schedule**: Branch creation - "after 3pm on Wednesday" in timezone
America/New_York, Automerge - At any time (no schedule defined).
π¦ **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.
β» **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.
π **Ignore**: Close this PR and you won't be reminded about this update
again.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box
---
Release Notes:
- N/A
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4yMjcuMyIsInVwZGF0ZWRJblZlciI6IjM5LjIzOC4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
renovate[bot]
and
renovate[bot]
created
2752c08
debugger: Add run to cursor and evaluate selected text actions (#28405)
Click to expand commit body
## Summary
### Actions
This PR implements actions that allow a user to "run to cursor" and
"evaluate selected text" while there's an active debug session and
exposes the functionality to the UI as well.
- Run to cursor: Can be accessed by right clicking on the gutter
- Evaluate selected text: Can be accessed by selecting text then right
clicking in the editor
### Bug fixes
I also fixed these bugs as well
- Panic when using debugger: Stop action
- Debugger actions command palette filter not working properly in all
cases
- We stopped displaying the correct label in the session's context menu
when a session was terminated
Release Notes:
- N/A
---------
Co-authored-by: Max Brunsfeld <max@zed.dev>
Co-authored-by: Remco Smits <djsmits12@gmail.com>
Anthony Eid
,
Max Brunsfeld
, and
Remco Smits
created
7801432
agent: Fuzzy match on paths and symbols when typing `@` (#28357)
Click to expand commit body
Release Notes:
- agent: Improve fuzzy matching when using @-mentions
Bennet Bo Fenner
created
088d7c1
Add sublime keybinding for `git::Restore` (#28444)
64de6bd
Don't scroll the editor on select all matches (#28435)
Click to expand commit body
Part of https://github.com/zed-industries/zed/issues/9309
Release Notes:
- Improved scroll behavior of `editor: select all matches`
---------
Co-authored-by: Kirill Bulatov <kirill@zed.dev>
neunato
and
Kirill Bulatov
created
6aa0248
docs: Update outdated keybind for opening extensions page (#28443)
Click to expand commit body
This PR updates an outdated keybind for opening the extensions page (the
shown keybind opens the project panel instead) on the `Configuring
Languages` page.
It also updates a nearby keybind to use the preprocessor syntax instead.
Release Notes:
- N/A
Finn Evers
created
342134f
agent: Add reactions at the response level (#27958)
Click to expand commit body
Release Notes:
- Added the user reaction (π or π) to each agent response.
- π will trigger a comment box linked to the response
---------
Co-authored-by: Danilo Leal <daniloleal09@gmail.com>
Co-authored-by: Agus Zubiaga <hi@aguz.me>
Thomas Mickley-Doyle
,
Danilo Leal
, and
Agus Zubiaga
created
b47aa33
Remove actions `UnfoldAt` and `FoldAt` (#28442)
Click to expand commit body
`UnfoldAt` and `FoldAt` are used internally, and don't really work
when users try to trigger them, they do however appear in the command
palette and keybindings, misleading users to try using them.
Release Notes:
- Remove unused actions `UnfoldAt` and `FoldAt` (prefer `Fold` and
`Unfold`).
JoΓ£o Marcos
created
9f6c5e2
Reapply "Use Project instead of Workspace in ContextStore (#28402)" (#28441)
Click to expand commit body
Motivation for this change is to use `ContextStore` in headless
assistant, which requires it to not depend on UI entities like
`Workspace`.
This reapplies a change that was revert was in #28428, and fixes the panic.
Release Notes:
- N/A
Closes #ISSUE
Release Notes:
- Fixed a bug that caused Zed to sometimes not discover git repositories
above a worktree root.
Cole Miller
created
c7963c8
ci: Require workspace_hack for PR merge (#28431)
Click to expand commit body
Release Notes:
- N/A
Peter Tripp
created
dd46294
Update cachix/install-nix-action digest to d1ca217 (#27951)
Click to expand commit body
This PR contains the following updates:
| Package | Type | Update | Change |
|---|---|---|---|
|
[cachix/install-nix-action](https://redirect.github.com/cachix/install-nix-action)
| action | digest | `02a151a` -> `d1ca217` |
---
Release Notes:
- N/A
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4yMjcuMyIsInVwZGF0ZWRJblZlciI6IjM5LjIyNy4zIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
renovate[bot]
and
renovate[bot]
created
2e56935
Fix invalid number of space characters inserted for tab (#27336)
Click to expand commit body
Closes #25941
Release Notes:
- Corrected SoftTab indentation handling for lines with mixed spaces and
tabs across .go files and other file types.
- Renamed the editor test `test_tab_with_mixed_whitespace` to
`test_tab_with_mixed_whitespace_rust` as it only tested this behavior
for Rust buffers, which have auto-indentation support. This change
clarifies that the test does not cover default files without
language-specific features.
- Added a new editor test `test_tab_with_mixed_whitespace_txt` to ensure
proper coverage for files with no associated language.
While investigating the issue β initially thought to be Go-related β I
discovered that the underlying problem was how soft tabs were calculated
in `Editor::tab`, given that the problem could also be observed on
`.txt` files
The correct soft tab indentation is now determined by treating all `\t`
characters before the cursor (on the same row) as new indentation
levels, resetting the remainder counter accordingly.
https://github.com/user-attachments/assets/78192e98-2b81-43cb-ae6f-7c48cd17d168
Rodrigo Freire
created
e43a397
Make regex search tool optionally case-sensitive (#28427)
Click to expand commit body
Release Notes:
- The agent panel's regex search tool is now optionally case-sensitive.
Richard Feldman
created
9d0fe16
Revert to fix panic in inline assistant (#28428)
Click to expand commit body
This reverts commit f12a554f86fa1e2b9b937a9dd103aa7c9a019db9, which
introduced a panic in inline assistant (cc @mgsloan) - I'm not sure what
the motivation was for that change, but I figure we can revert to fix
the inline assistant now and deal with that later. π
Panic was:
> Thread "main" panicked with "cannot read workspace::Workspace while it
is already being updated" at
/Users/rtfeldman/code/zed/crates/gpui/src/app/entity_map.rs:139:32
Release Notes:
- N/A
Release Notes:
- Added icon for Vyper (`.vy`, `.vyi`) files
Kainoa Kanter
created
b67d3fd
git_ui: Show disabled states in context menu (#28288)
Click to expand commit body
Other elements in the git panel are shown as disabled when an action is
not actionable (For example: stage all, commit). Updating the context
menu to match this behavior when an action does nothing.
|Before|After|
|--|--|
|||
Release Notes:
- Git: Improved the Git panel context menu to show actions with no
effect as disabled.
3a8fe4d
Add reminder message about system prompt (#28344)
Click to expand commit body
Trying out sending the model a reminder message about code blocks in the
system prompt. If this seems to work well, we can include more specific
reminder messages, e.g. tool-specific ones.
Release Notes:
- N/A
A small addition for those coming from JetBrain's IDEs. A behavioral
detail: when any upper case character is detected, the command defaults
to toggling to lower case.
> Note that when you apply the toggle case action to the CamelCase name
format, IntelliJ IDEA converts the name to the lower case.
https://www.jetbrains.com/help/idea/working-with-source-code.html#edit_code_fragments
Release Notes:
- Added an `editor: toggle case` command. Use `cmd-shift-u` for macOS
and `ctrl-shift-u` for Linux, when using the `JetBrains` keymap.
Joseph T. Lyons
created
c441b65
debugger: Add support for CodeLLDB (#28376)
Click to expand commit body
Closes #ISSUE
Release Notes:
- N/A
Piotr Osiewicz
created
61ddcd5
chore: Add workspace-hack dependency to agent_rules (#28412)
Click to expand commit body
Closes #ISSUE
Release Notes:
- N/A
Piotr Osiewicz
created
f12a554
Use `Project` instead of `Workspace` in `ContextStore` (#28402)
Click to expand commit body
Release Notes:
- N/A
Michael Sloan
created
9dae4d8
Remove references to SSH remoting beta (#28399)
Click to expand commit body
Release Notes:
- N/A
Cole Miller
created
f0b7f35
Clean up environment loading a bit (#28356)
Click to expand commit body
Closes #ISSUE
Release Notes:
- N/A
Cole Miller
created
b687a5e
git: Always reload current branch after pushing (#28327)
Click to expand commit body
Closes #27347
Release Notes:
- Fixed a bug causing the git panel to not update after pushing to a
remote
Cole Miller
created
e66a24e
format: Re-implement support for formatting with code actions that contain commands (#28392)
Click to expand commit body
Closes #27692
Closes #27935
Release Notes:
- Fixed a regression where code-actions used when formatting on save
were rejected if they contained commands
Ben Kunkle
created
301fc7c
Pull out plain rules file loading code into a new `agent_rules` crate (#28383)
Click to expand commit body
Also renames for rules file templated into the system prompt
Release Notes:
- N/A
Michael Sloan
created
020a107
Add the project search as an item in the status bar (#28388)
Click to expand commit body
Was chatting with @wilhelmklopp, he pointed out that our current
UI-accessible way to access the project search was pretty obscure.
<img width="393" alt="Screenshot 2025-04-08 at 6 57 51β―PM"
src="https://github.com/user-attachments/assets/636053cd-5a88-4a5e-8155-6d41d189b7db"
/>
Release Notes:
- Added a button to open the project search to the status bar