e5d8bd2
Issue response: pull team members from staff team (#25102)
Click to expand commit body
Release Notes: - N/A
Joseph T. Lyons created
e5d8bd2
Issue response: pull team members from staff team (#25102)
Release Notes: - N/A
Joseph T. Lyons created
529c652
Revert gutter stripes as indicator of hunk staged status (#25089)
We've decided to go in a different direction on indicating the staged status of hunks, so go back for now to a world where we don't display staged and unstaged hunks differently outside the (still gated) project diff editor. cc @iamnbutler This reverts commit 8c202b3b09083e0b5430fce3631734de6112bbc0. Release Notes: - N/A
Cole Miller created
737b177
Switch to columnar selection by pressing `alt-shift` while mouse is down (#25096)
We begin a columnar selection when we drag the mouse while holding `alt-shift`. This PR makes it possible to start the selection and then turn it into columnar by pressing `alt-shift`. Fixes #5372 Release Notes: - Support switching to columnar selection by pressing `alt-shift` while mouse is down
Agus Zubiaga created
c10ac31
theme: Don't log errors for missing themes until extensions have loaded (#25098)
This PR makes it so we don't log errors for missing themes or icon themes until after the extensions have been loaded. Currently, if you are using a theme that is defined in an extension it is common to see one or more "theme not found" errors in the logs. This is the result of us having to initialize the theme before the extensions have actually finished loading. This means that a theme that _may_ exist once extensions load is considered non-existent before they have loaded. To that end, we now wait until the extensions have loaded before we start logging errors if we can't find the theme or icon theme. Closes https://github.com/zed-industries/zed/issues/24539. Release Notes: - Reduced the number of "theme not found" and "icon theme not found" errors in the logs for themes provided by extensions.
Marshall Bowers created
1e255e4
assistant2: Show token count in the Prompt Editor view (#25091)
Release Notes: - N/A --------- Co-authored-by: Agus Zubiaga <hi@aguz.me>
Danilo Leal and Agus Zubiaga created
8a7565e
Add small improvement to the theme picker footer (#25088)
- Always start a button's label with an imperative verb - Use the `ArrowUpRight` icon when the button opens an external link <img width="700" alt="Screenshot 2025-01-21 at 11 20 49 AM" src="https://github.com/user-attachments/assets/383d9bad-2756-4e85-acad-4ed956f541cb" /> Release Notes: - N/A
Danilo Leal created
8e7cad7
theme: Return structured errors when a theme is not found (#25090)
This PR updates the `ThemeRegistry` to return structured errors from the `get` and `get_icon_theme` methods (which are used to retrieve themes and icon themes, respectively). We want to be able to carry the name of the theme that was not found as state on the error, which is why we use a `Result` and not an `Option`. However, we also want to be able to accurately identify when the error case is "not found" so we can take appropriate action, based on the circumstances. By using a custom error type instead of an `anyhow::Error`, we get both. There isn't any functional change in this PR. This just sets us up for future improvements in this error. Release Notes: - N/A
Marshall Bowers created
76f501a
git: Don't load shallow HEAD text of symlinks (#25058)
For symlinks, return `None` from `load_committed_text` as we do from `load_index_text` ever since #10037. Release Notes: - Fixed diff hunks appearing in unchanged symlinked files
Cole Miller created
9ef0501
file_finder: Remove common segments of long paths in search results (#25049)
This PR makes progress on #7711 by identifying any common prefix of the paths in the file finder's search results, and replacing the "interior" of that prefix---every path segment but the first and last---with `...`, when a heuristic indicates that the longest path would otherwise overflow the modal. The elision is not applied to any segment that contains a match for the search query. There may be more work to do on #7711 in the case of long result paths that do not share a significant common prefix. Release Notes: - Improved display of long paths in the file finder modal Co-authored-by: Max <max@zed.dev>
Cole Miller and Max created
80458ff
Persist selections for editors (#25083)
Part of https://github.com/zed-industries/zed/issues/7371 Closes https://github.com/zed-industries/zed/issues/12853 Release Notes: - Started to persist latest selections for editors, to restore those on restart
Kirill Bulatov created
b340378
terminal: Change context menu item label (#25085)
Super subtle, but when I initially saw just "Close", I got weirded out asking myself "why there's a menu item to close the context menu?", to only then realize that it didn't close the menu, but the terminal _tab_. Might be obvious, because that's how buffer tabs are labled, but I don't know, it feels like the redundancy here is overall positive. Release Notes: - N/A
Danilo Leal created
295e486
edit prediction: Update disabled globs link in the onboarding modal (#25084)
Release Notes: - N/A
Danilo Leal created
00bb9a4
Fix LSP rename in Go (#25073)
Some language servers report version 0 even if the buffer hasn't been opened yet. We detect this case and treat it as if the version was `None`. Closes #23706 Release Notes: - Fixed a bug that prevented renames for some languages.
Antonio Scandurra created
b4fc127
editor: Disable "Open in Terminal" when it's not possible (#25059)
When impossible to trigger action, the button should be disabled. Release Notes: - N/A
João Marcos created
0e38d2d
Add doc on workspace persistence (#25062)
Release Notes: - N/A
Joseph T. Lyons created
813d870
Bump Tree-sitter for bug fixes affecting YAML parser loaded via WASM (#25054)
Closes https://github.com/zed-industries/zed/issues/24742 Closes #24632 This PR bumps Tree-sitter to bring in bug fixes: * https://github.com/tree-sitter/tree-sitter/pull/4218 * https://github.com/tree-sitter/tree-sitter/pull/4213 * https://github.com/tree-sitter/tree-sitter/pull/4210 I've also bumped Wasmtime and wit-bindgen, since the new Tree-sitter uses a newer wasmtime. Release Notes: - Fixed a parsing bug that caused memory leaks and crashes when using the Ansible extension --------- Co-authored-by: Anthony <anthony@zed.dev> Co-authored-by: Anthony Eid <hello@anthonyeid.me>
Max Brunsfeld , Anthony , and Anthony Eid created
8942e65
add more tests to `editor::SelectAllMatches` (#25060)
Release Notes: - N/A
João Marcos created
06726a2
Revert splitting display diff hunks (#25020)
This PR reverts two recent commits that changed our gutter highlights to mark separately the deleted and added portions of an expanded modification hunk. It returns to the previous status quo where the gutter highlight for an expanded modification hunk has the same color for the deleted and added portions. Release Notes: - N/A
Cole Miller created
93efb57
docs: Fix formatting (#25057)
This PR fixes a formatting issue in the docs that was introduced in #5669. Seems that PR was merged without passing CI. Release Notes: - N/A
Marshall Bowers created
a8de6af
Fix `editor::SplitSelectionIntoLines` adding an extra line at the end (#25053)
Closes #4795 Release Notes: - Fixed `editor::SplitSelectionIntoLines` adding an extra line at end of selection
João Marcos created
12aa270
Fix TypeScript block indenting when using allman style (#25051)
Closes #24976 Release Notes: - Fixed an issue where writing TypeScript using Allman style would result in incorrect auto-indent behavior
Ben Kunkle created
888dc0b
Document `file_scan_inclusions` and make consistent with default.json (#25046)
Release Notes: - N/A
Michael Sloan created
bb53ad9
Only allow save_as for pane if can_save_as is true (#25028)
When saving an item, some logic is done to determine whether one can save it. In the special case where the intent is to `SaveAs`, it was previously allowed to proceed as long as the buffer was a singleton (presumably since it only makes sense to provide a save path for a single file). However, we need to _also_ check that this item can be "saved as" at all. For this, we resurrect the `ItemHandle`/`Item` trait method `can_save_as`. We have given it the default implementation of returning `false`, and then overridden this in the implementation for `TerminalView`. Closes #25023 Release Notes: - Fixed crash when trying to save terminal buffer --------- Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
Dylan and Conrad Irwin created
62a11b0
ui: Remove `track_focus` method from Picker render (#25043)
Follow-up to: https://github.com/zed-industries/zed/pull/25025 Removing the `track_focus` method fix the focus hijack that we introduced in the previous PR. cc @0xtimsb Also, I don't see any immediate affect in the actual scrollbar behavior without this! Holler if that's not the case. Release Notes: - N/A
Danilo Leal created
e068c7b
vim: Update anyquotes and anybrackets to behave like mini.ai plugin (#24167)
### Overview
This PR improves the existing
[mini.ai‐like](https://github.com/echasnovski/mini.ai) text-object logic
for both “AnyQuotes” (quotes) and “AnyBrackets” (brackets) by adding a
multi‐line fallback. The first pass searches only the current line for a
best match (cover or next); if none are found, we do a multi‐line pass.
This preserves mini.ai's usual “line priority” while ensuring we can
detect pairs that start on one line and end on another.
### What Changed
1. Brackets
- Line-based pass uses `gather_line_brackets(map, caret.row()) `to find
bracket pairs `((), [], {}, <>) `on the caret’s line.
- If that fails, we call `gather_brackets_multiline(map)` to single‐pass
scan the entire buffer, collecting bracket pairs that might span
multiple lines.
- Finally, we apply the mini.ai “**cover or next**” logic
(`pick_best_range`) to choose the best.
2. Quotes
- Similar line-based pass with `gather_line_quotes(map, caret.row())`.
- If no local quotes found, we do a multi‐line fallback with
`gather_quotes_multiline(map)`, building a big string for the whole
buffer and using naive regex for "...", '...', and `...`.
- Also preserves “inner vs. outer” logic:
- For inner (e.g. `ciq`), we skip bounding quotes or brackets if the
range is at least 2 characters wide.
- For outer (`caq`), we return the entire range.
3. Shared “`finalize`” helpers
- `finalize_bracket_range` and `finalize_quote_range` handle the “inner”
skip‐chars vs. “outer” logic.
- Both rely on the same “line first, then full fallback” approach.
### Why This Matters
- **Old Behavior**: If you had multi‐line brackets { ... } or multi‐line
quotes spanning multiple lines, they weren’t found at all, since we only
scanned line by line. That made text objects like ci{ or ciq fail in
multi-line scenarios.
- **New Behavior**: We still do a quick line pass (for user‐friendly
“line priority”), but now if that fails, we do a single‐pass approach
across the entire buffer. This detects multi‐line pairs and maintains
mini.ai’s “cover‐or‐next” picking logic.
### Example Use Cases
- **Curly braces:** e.g., opening { on line 10, closing } on line 15 →
previously missed; now recognized.
- **Multi‐line quotes**: e.g., "'Line 1\nLine 2', no longer missed. We
do gather_quotes_multiline with a naive regex matching across newlines.
### Tests
- Updated and expanded coverage in:
- test_anyquotes_object:
- Includes a multi-line '...' test case.
- E.g. 'first' false\n<caret>string 'second' → ensuring we detect
multi‐line quotes.
- test_anybrackets_object:
- Verifies line‐based priority but also multi‐line bracket detection.
- E.g., an open bracket ( on line 3, close ) on line 5, which used to
fail.
### Limitations / Future Enhancements
- **Escaping**: The current approach for quotes is naive and doesn’t
handle escape sequences (like \") or advanced parser logic. For deeper
correctness, we’ll need more advanced logic, this is also not supported
in the original mini.ai plugin so it is a known issue that won't be
attended for now.
### Important Notes
- Fix for the bug: https://github.com/zed-industries/zed/issues/23889
this PR addresses that bug specifically for the AnyQuotes text object.
Note that the issue still remains in the built-in motions (ci', ci",
ci`).
- Caret Position Differences: The caret position now slightly deviates
from Vim’s default behavior. This is intentional. I aim to closely mimic
the mini.ai plugin. Because these text objects are optional
(configurable via vim.json), this adjusted behavior is considered
acceptable and in my opinion the new behavior is better and it should be
the default in vim. Please review the new tests for details and context.
- Improved Special Cases: I’ve also refined how “false strings” in the
middle and certain curly-bracket scenarios are handled. The test suite
reflects these improvements, resulting in a more seamless coding
experience overall.
### References:
- Mini.AI plugin in nvim: https://github.com/echasnovski/mini.ai
Thank you for reviewing these changes!
Release Notes:
- Improve logic of aq, iq, ab and ib motions to work more like mini.ai
plugin
Osvaldo created
a99696b
pane: Disable the "Close..." controls depending on certain scenarios (#25037)
Closes https://github.com/zed-industries/zed/issues/12471 - Disables "Close Others" if there's just one tab - Disables "Close Left"/"Close Right" if the above is true or if there's no tabs to the left/right side of the active tab Release Notes: - N/A
Danilo Leal created
dc11a61
assistant: Improve language model selector design (#25036)
Closes https://github.com/zed-industries/zed/issues/23234 This PR adds a scrollbar to the model selector, and ensures no label (model and provider name) is cut off. Release Notes: - N/A
Danilo Leal created
5eadeb6
Add newlines before some headings in licenses.md (#25035)
Release Notes: - N/A
Michael Sloan created
aa4c438
Use `Vec` for `KeyContext` instead of `SmallVec` (#24916)
In Zed the key context almost always has more than 1 entry, so use of `SmallVec` is just adding overhead. In Zed while using the editor this typically has more than 8 entries. Since `ContextEntry` is 48 bytes, if this were made to be a `SmallVec<[ContextEntry; 10]>` then it would use 480 bytes on the stack, which to me seems like a lot to be copying. So, instead opting to just use `Vec` Release Notes: - N/A
Michael Sloan created
f2bc3d3
assistant: Add model selector to the Context Editor (#25032)
This PR also removes everything related with the model selector from the Context Editor toolbar. Release Notes: - N/A
Danilo Leal created
f833a01
copilot: Add support for Gemini 2.0 Flash model to Copilot Chat (#24952)
Co-authored-by: Peter Tripp <peter@zed.dev>
Richard Hao and Peter Tripp created
3e97226
editor: Highlight all matching occurrences of text in selection (#24835)
Closes #12635 - [x] Get it working - [x] Disable for multi cursor - [x] Disable for vim visual line selection - [x] Add setting to disable it - [x] Add scrollbar marker - [x] Handle delete state capturing selection Preview: https://github.com/user-attachments/assets/a76cde64-4f6c-4575-91cc-3a03a954e7a9 Release Notes: - Added support to highlight all matching occurrences of text within the selection in editor. --------- Co-authored-by: Agus Zubiaga <agus@zed.dev> Co-authored-by: Danilo <danilo@zed.dev>
smit , Agus Zubiaga , and Danilo created
1e1b637
Fix handling of empty blocks in BlockMap::chunks (#25031)
Closes https://github.com/zed-industries/zed/issues/23391 Release Notes: - Fixed a bug that sometimes caused incorrect syntax highlighting when deploying the inline assistant.
Max Brunsfeld created
69477df
ui: Add `show_scrollbar` method to Picker (#25025)
Now, you can pass `show_scrollbar` to Picker that implement a `uniform_list`. If that's on, the scrollbar should auto-hide if you move your focus elsewhere. By default, this method is turned off. Release Notes: - N/A --------- Co-authored-by: smit <0xtimsb@gmail.com>
Danilo Leal and smit created
cd108cc
theme: Improve contrast for One Light's `read_background` token (#25027)
Closes https://github.com/zed-industries/zed/issues/20575 Subtle change, but more pronounced in single characters. | Before | After | |--------|--------| | <img width="700" alt="Screenshot 2025-02-07 at 4 58 16 PM" src="https://github.com/user-attachments/assets/dc9332e1-6e86-44a9-bb7a-5f195d778127" /> | <img width="700" alt="Screenshot 2025-02-07 at 4 58 16 PM" src="https://github.com/user-attachments/assets/d8fd408f-f8ea-4b87-bd20-345ffc24b5b1" /> | Release Notes: - N/A
Danilo Leal created
478bcca
edit predictions: Handle no keybind for preview (#25015)
If the user removes all modified keybinds in `edit_prediction_conflict`, the preview bar above the completions menu would disappear. This PR handles that case slightly better by still showing the 1-line preview (which they might accept via an unmodified keybind) and hides the `| Preview ⌥` section since it's impossible to invoke in this case. Release Notes: - Handle `edit_prediction_conflict` context without modified keybinds for `AcceptEditPrediction`
Agus Zubiaga created
08e9080
Use lowercase for vim key bindings (#25024)
Vim itself shows keybindings cased according to the character, and so it's confusing for people coming from vim that we show all key-bindings uppercase with an icon denoting shift (c.f. #14287). So, in #24322 we changed Zed to use lowercase for bindings in vim mode. Unfortunately this (in practice) looks awful because our key icons are designed to be paired with uppercase letters. Instead, we now (for vim mode) show the same syntax as would be used in the keymap file for Zed. This is different from vim (i.e. we show shift-z instead of Z, and cmd-d instead of <D-z>) but hopefully avoids the original confusion, and as a bonus makes it easy to figure out the syntax you need for a workspace::SendKeystrokes. Closes #ISSUE Release Notes: - N/A *or* Added/Fixed/Improved ...
Conrad Irwin created
e45b5ca
Redact Google Gemini API keys from error messaging and log (#24884)
Now: ``` ERROR assistant_context_editor] error sending request for url (https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:countTokens?key=REDACTED) ``` Release Notes: - Improved redaction of Google Gemini keys from API errors in logs
Peter Tripp created
510260a
Use the `MessageNotification` component for the release notes toast (#25013)
Closes https://github.com/zed-industries/zed/issues/24981 Release Notes: - N/A --------- Co-authored-by: smit <0xtimsb@gmail.com>
Danilo Leal and smit created
aca31cf
Use Alacritty from crates.io (#25016)
Follow-up of https://github.com/zed-industries/zed/pull/23085 Release Notes: - N/A
Kirill Bulatov created
b5d85b6
Add regex highlights in the query input (#25005)
Closes https://github.com/zed-industries/zed/discussions/24994 Release Notes: - Added regex highlights in the query input
Kirill Bulatov created
91c99ba
Allowlist for APGL crates in `check-licenses` (#24998)
Also makes `shellcheck` pass Release Notes: - N/A
Michael Sloan created
3b5dad8
Improve `cargo about` licenses configuration (#24997)
* Remove unneeded accepted licenses * Removes use of `workarounds` - `wasmtime` no longer needed in list - `ring` now checks the license SHA * Checks license from `files` instead of from `git`. Execution time ~17s instead of ~24s Release Notes: - N/A
Michael Sloan created
bcba0b9
Fail if `cargo about` emits warnings (#24996)
Warnings are emitted despite --fail have no license field like `ring` Release Notes: - N/A
Michael Sloan created
8b088b3
Fix F10 and Alt+F handling on Windows (#24745)
Closes #24744 and should also fix #17819 The change is split into two commits, first one adds F10 handling (it needs to be handled inside `parse_syskeydown_msg_keystroke`, the second one properly handles `Alt+Fn` combinations, this also needs to happen in `parse_syskeydown_msg_keystroke` and is similar to a fragment inside `parse_keydown_msg_keystroke` Release Notes: - Fixes F10 and Alt+Fn handling on windows
GiM created
5849180
Fix up tasks documentation (#24991)
Release Notes: - N/A
Joseph T. Lyons created
ba2c182
Revert "Fix issue with `vim::PushOperator` documentation (#24825)" (#24989)
This reverts commit 28c667a3c78ab1febcea1b1de85f375658a28b18. Release Notes: - N/A
Ben Kunkle created
c7df2d7
Rename `livekit_server` to `livekit_api` (#24984)
The name `livekit_server` was a bit misleading as it is not a server and gets built into both the client and server - the server code is in `collab`. Release Notes: - N/A
Michael Sloan created
2400fb4
Set keybindings to non-vim mode when vim is disabled (#24971)
Closes #ISSUE Release Notes: - N/A
Conrad Irwin created
74d1a65
Switch back to upstream oo7 (#24957)
As of 0.4.0, the decryption panic that we were seeing has been fixed upstream (thanks @bilelmoussaoui!), so stop using our temporary fork. Release Notes: - N/A
Cole Miller created