ed13e05
project search: Fix text cutoff in options help text (#26098)
Click to expand commit body
Closes #25495 Release Notes: - N/A
Ben Kunkle created
ed13e05
project search: Fix text cutoff in options help text (#26098)
Closes #25495 Release Notes: - N/A
Ben Kunkle created
674fb76
Fix focus handle leak (#26090)
This fixes a major performance issue in the current git beta. This PR also removes the PopoverButton component, which was easy to misuse. Release Notes: - Git Beta: Fix frame drops caused by opening the git panel --------- Co-authored-by: Mikayla Maki <mikayla.c.maki@gmail.com>
Conrad Irwin and Mikayla Maki created
fe18c73
Fix lag when large diff hunk intersects the viewport (#26088)
We were iterating over the row range of a hunk, and inserting into a hash map for every row. Release Notes: - Fixed a performance problem when a large diff hunk was displayed in an editor.
Max Brunsfeld created
befacfe
assistant2: Prevent concurrent thread saving tasks (#26089)
This PR makes it so only one thread-saving task will be in flight at a time. Release Notes: - N/A
Marshall Bowers created
54f0a72
assistant2: Adjust edit message actions (#26081)
Fine-tuning the visuals (namely, reducing font and keybinding size) and passing `on_click` handlers to the Cancel & Regenerate actions. Release Notes: - N/A
Danilo Leal created
67f9b2b
markdown: Only change the copy code icon to a check temporarily (#26079)
This PR makes it so the copy code icon only changes to a check temporarily. It will now revert to the "copy" icon after 2 seconds. https://github.com/user-attachments/assets/e8983268-9710-4519-97a0-b28dc237b109 Release Notes: - N/A
Marshall Bowers created
a4ec0af
Add initial scripting_tool (#26066)
Just a basic implementation so we can start trying it out. Release Notes: - N/A --------- Co-authored-by: Marshall <marshall@zed.dev> Co-authored-by: Michael <michael@zed.dev>
Richard Feldman , Marshall , and Michael created
886d8c1
markdown: Ensure code block copy button stays in the right spot (#26074)
This PR makes it so the copy button on Markdown code blocks stays absolutely positioned even when scrolled: <img width="1297" alt="Screenshot 2025-03-04 at 5 28 48 PM" src="https://github.com/user-attachments/assets/b0d0fae9-ccd6-43c1-bef3-44d8d3c3e669" /> We achieve this by inserting a new parent element around both the copy button and the code block itself so we can position the copy button absolutely within that element. Release Notes: - N/A
Marshall Bowers created
ebc5c21
Synchronize modal commit editor with panel editor (#26068)
Release Notes: - Git Beta: Synchronized selections between the modal editor and the panel editor - Git Beta: Allow opening the commit modal even if we're unable to commit.
Mikayla Maki created
0a2d938
Do not include recent issues in issue response script (#26064)
Do not report issues that were created yesterday or today. Release Notes: - N/A
Joseph T. Lyons created
fc01f49
Fix font sizes not reacting on settings change (#26060)
Proper version of https://github.com/zed-industries/zed/pull/25425 When https://github.com/zed-industries/zed/pull/24857 returned font updates on settings changes, settings values, not in-memory ones should be compared. This PR returns back the logic finally, and changes it to explicitly track the settings values, not the in-memory ones. Also adds the same tracking for UI font changes, which had never been tracked before. Release Notes: - Fixed font sizes not reacting on settings change
Kirill Bulatov created
db28b9b
Add typescript-language-server and vtsls to list of available language servers (#26046)
Add the typescript language severs as lsp adapters. This would allow language extensions to use them. For example using on vue files to be able to run the vue-language-server in [hybridMode](https://github.com/vuejs/language-tools?tab=readme-ov-file#hybrid-mode-configuration-requires-vuelanguage-server-version-200). Release Notes: - Added `vtsls` and `typescript-language-server` to the list of available language servers.
Isac Ljung created
0453cb2
git: Improvements to fetch/push/pull (#26041)
- Add global handlers so these actions can be invoked from the command palette, etc. - Tweak spinner to not show itself until a remote has been selected Release Notes: - N/A
Cole Miller created
8521188
git: Fix project diff shortcuts (#26045)
Release Notes: - git: Fix keyboard shortcut display in project diff view
Conrad Irwin created
ad94642
markdown: Fix code block wrapping when horizontal scrolling is disabled (#26048)
This PR fixes an issue where code block wrapping was broken when not using horizontal scrolling after https://github.com/zed-industries/zed/pull/25956. Release Notes: - N/A
Marshall Bowers created
f4899d9
assistant2: Add support for editing the last message sent by the user (#26037)
https://github.com/user-attachments/assets/df46632b-dfeb-4991-ab2e-86829b72be9b Closes #ISSUE Release Notes: - N/A
Bennet Bo Fenner created
6685d85
vim: Fix increment step error (#26023)
Closes #12887 Release Notes: - Fixed `x g ctrl-a` step
0x2CA created
161f8a1
Fix "Open a file or project to get started" placeholder text not always shown (#26044)
Check that there are no `visible_worktrees` rather than checking `worktrees` when deciding whether to display the "Open a file or project to get started" text Closes #25395 Release Notes: - Fixed the "Open a file or project to get started" message not always showing after all buffers have been closed
Felix Packard created
6cdd7b7
git: Add `hunk_style` setting (#26038)
This PR adds the `git.hunk_style` setting, allowing setting an alternate style for hunks – specifically the rendering of unstaged hunks. It has 2 options: - `transparent` (unstaged hunks are more transparent/less opaque than staged hunks) - `pattern (unstaged hunks are indicated by a visual pattern) We'll possibly explore a VSCode-style "don't show staged hunks", but the complexity it adds is a bit out of scope for now. Transparent:  Pattern:  Release Notes: - Git Beta: Added `git.hunk_style` setting to allow toggling between git hunk visual styles.
Nate Butler created
0ec15d6
Fix soft_wrap setting not applying to buffers starting with a different language (#25880)
Closes #22999
# Problem
Currently, the default soft wrap mode of an editor is determined by
reading the language-specific settings of the language _at offset zero_
in the editor's (multi)buffer. While this provides a way to pick a
single soft wrap mode for a multi-language multibuffer, it's a bad
choice for a single-buffer multibuffer that begins with a different
embedded language. For example, Markdown with frontmatter:
```markdown
---
my_front_matter
---
# Hello World
```
Setting this in config:
```json
"languages": {
"Markdown": { "soft_wrap": "bounded" }
},
```
Will not soft wrap the Markdown file as the language at offset zero is
YAML.
# Solution
Instead of using the language at offset zero, use the language of the
first buffer in the multibuffer (the buffer at offset zero). This gives
better behavior for single-buffer editors, and a similar default for
multi-language multibuffers as before.
# Testing
All existing `editor` crate tests pass, but I would appreciate any
guidance for where best to add additional testing.
Release Notes:
- Fixed soft_wrap setting not applying to buffers starting with a
different language
---------
Co-authored-by: Kirill Bulatov <kirill@zed.dev>
Alex Ozer and Kirill Bulatov created
909de2c
assistant2: Use `cmd-n` to create a new prompt editor when already in a prompt editor (#25935)
This flips the keybindings that are used to create a new thread/prompt editor (only when you're already in a prompt editor) Release Notes: - N/A
Bennet Bo Fenner created
f31749c
edit predictions: Improve UX when there's no keybinding for accepting predictions (#25815)
If the user already binds `tab`/`alt-tab`/`alt-l` to a different action in a conflicting context and hasn't assigned a different keybinding for `editor::AcceptEditPrediction`, we would show broken popovers with no bindings:  Instead, they will now see an error-variant of every popover which includes a tooltip with a short description and buttons to open the keymap, and open a new docs section explaining the issue in detail and how to fix it.  Note: I included the docs change in this PR because it's ok to deploy before the release, as it also applies to existing versions. Release Notes: - edit predictions: Improve UX when there's no keybinding for accepting predictions --------- Co-authored-by: Danilo Leal <daniloleal09@gmail.com> Co-authored-by: Danilo <danilo@zed.dev>
Agus Zubiaga , Danilo Leal , and Danilo created
76a8160
Reuse existing logic used to generate commit messages to disable commit buttons (#26034)
Also - Recomputes `suggested_commit_message` and no longer stores it, to ensure things are always up to date - Reduces indentation in `render_footer` Release Notes: - N/A
Joseph T. Lyons created
7d22059
migration: Add for `editor::GoToHunk` and `editor::GoToPrevHunk` actions (#26017)
We modified few actions in
https://github.com/zed-industries/zed/pull/25846, which are:
`"editor::GoToHunk" -> ["editor::GoToHunk", { "center_cursor": true }]`
`"editor::GoToPrevHunk" -> ["editor::GoToPrevHunk", { "center_cursor":
true }]`
Also, recently we changed and added migration for:
`["editor::GoToPrevHunk", { "center_cursor": true }] ->
["editor::GoToPreviousHunk", { "center_cursor": true }] `
This means:
1. User that might still have `editor::GoToHunk` won't be automatically
migrated to `["editor::GoToHunk", { "center_cursor": true }]`. Note
value of `center_cursor` is false, in first case (default), and true in
second case.
2. User that might still have `editor::GoToPrevHunk` won't be
automatically migrated to `["editor::GoToPreviousHunk", {
"center_cursor": true }]`. Note, `editor::GoToPrevHunk` is renamed
since, it is now invalid action.
This PR adds those migrations.
cc: @marcospb19
Release Notes:
- N/A
smit created
6b16a55
Fix lost focus when navigating back in project search result (#22483)
Closes #22447 When navigate forward/back, the focus moves from the ProjectSearchView's result editor to the Pane, and then move to the ProjectSearchView, but the event `on_focus_in` not triggered for ProjectSearchView, causing the result editor to lose focus eventually. https://github.com/zed-industries/zed/blob/f6dabadaf79bd29c89c8d55a1e9f1d33236f736e/crates/workspace/src/workspace.rs#L1372 https://github.com/zed-industries/zed/blob/f6dabadaf79bd29c89c8d55a1e9f1d33236f736e/crates/workspace/src/workspace.rs#L1385 Considering that the navigation might be triggered again in the next frame, so use `on_next_frame` in `on_focus` event to move focus to result editor. Next frame: - the blur event triggered for result editor. - focus move from ProjectSearchView to result editor in `on_focus` event for ProjectSearchView - navigate again, focus moves from result editor to Pane then move back to ProjectSearchView - the focus not change during this frame, so no focus event happened for ProjectSearchView.  Release Notes: - Fix lost focus when navigate back in project search result Co-authored-by: Kirill Bulatov <kirill@zed.dev>
feeiyu and Kirill Bulatov created
7ba2b25
Fix a panic on Linux theme appearance change (#26019)
Closes https://github.com/zed-industries/zed/issues/26009 https://github.com/zed-industries/zed/blob/21484a2e9d07b6285f112ba49ca413cdb8e360e4/crates/gpui/src/platform/linux/platform.rs#L517-L519 `with_common` panicked at `borrow_mut` which is the way it's implemented for X11, Wayland and Headless Linux counterparts. https://github.com/zed-industries/zed/blob/21484a2e9d07b6285f112ba49ca413cdb8e360e4/crates/gpui/src/platform/linux/wayland/client.rs#L722-L724 By accessing the appearance global instead of a `RefCell` with it, the panic goes away with one notable side-effect, on Linux only: the first global's value on `Dark` appearance would be `Light`: it becomes normal instantly, thanks to https://github.com/zed-industries/zed/blob/21484a2e9d07b6285f112ba49ca413cdb8e360e4/crates/workspace/src/workspace.rs#L1083-L1090 Things work without flickering: [linux_theme_toggle.webm](https://github.com/user-attachments/assets/0e39ddc0-b4ff-4475-93ff-7b2bd7233628) Release Notes: - Fixed a panic on Linux theme appearance change
Kirill Bulatov created
cbb535f
Fix completion details on new clangd versions (#25405)
Fixes #16057
In newer versions of clangd, the switch labelDetailsSupport in the json
passed to the language server modifies the format of the returned json.
Zed handles well the old format, but misses the function parameters in
the new one. For example:
The old format looks like this:
```json
...
"label": " Window(int width, int height, const char *name, bool vsync, bool resizable)",
...
```
and with labelDetailsSupport = true:
```json
...
"label": " Window",
"labelDetails": {
"detail": "(int width, int height, const char *name, bool vsync, bool resizable)"
},
...
```
A simple solution is to just to not tell the language server that label
details are supported and force it to use the old format. This is a
dirty fix, but makes the completions behave like in the old versions of
clangd.
I do not know if this will break another language server. From what I've
found out most lsp-s do not depend on that setting and provide all
completion data either way. If not, this switch will need to be exposed
in a config or be at least lsp-dependant.
Lastly, I do not know Rust, maybe will need help to make a better fix
for the issue.
Release Notes:
- Fixed broken C++ completion suggestions
Boris Vassilev created
20fc753
editor: Ensure correct tab icon is shown for files outside of the current project (#25933)
Closes #25885 This PR improves the matching for file icons to tabs. Previously, the tab icon would be resolved based upon the relative path in the current project. However, this caused the default file icon being assigned to all files outside of the project, as the relative path for these files would be empty. Instead, `path_for_buffer` is now used which always returns a proper file name even for paths outside the current project (as also stated [in this comment](https://github.com/zed-industries/zed/blob/fee9c677078ad5beebe151e8350e1fc353230dc9/crates/editor/src/items.rs#L1689)). As the file name is sufficient for matching icons to files, this fixes the linked issue whilst not changing anything for previously properly matched icons. | `main` | This PR | | --- | --- | | <img width="296" alt="main" src="https://github.com/user-attachments/assets/e72b8b5d-aa1c-4a8e-903f-14239f5b8764" /> | <img width="296" alt="PR" src="https://github.com/user-attachments/assets/a736974a-ce41-4861-be3f-95448cc7ffd0" /> | Release Notes: - Fixed wrong file icons being shown for files outside of the current project.
Finn Evers created
042fc82
python: Fix and improve highlighting (#25813)
Closes #25803 Closes #25707 This PR fixes the highlighting regression described in #25803 by fixing the priorities of highlights as described in the [comment within the file itself](https://github.com/zed-industries/zed/blob/5b66ea15638b004c45bbf4e4dd0b576aa6cdcebc/crates/languages/src/python/highlights.scm#L1). A nice side-effect of this is that scoped constants or other identifiers are now also more accurately highlighted, as seen in the screenshots below. While I was at it, I also adressed the highlighting issue for default typed idenfiers. | This PR | <img width="575" alt="PR" src="https://github.com/user-attachments/assets/aed5cdd0-c31a-4794-8128-376944fddd2d" /> | | --- | --- | | Preview | <img width="575" alt="preview" src="https://github.com/user-attachments/assets/ae3fad35-d436-472c-aff0-16508304ccf7" /> | | Stable | <img width="575" alt="stable" src="https://github.com/user-attachments/assets/3836427c-f1cc-42ea-b1a7-8f5bbbadf210" /> | Release Notes: - Fixed constants not being highlighted in Python-files. - Improved Python-highlighting for default function arguments and scoped identifiers.
Finn Evers created
27781a8
html: Add injections for `style` attributes and event handler attributes (#23659)
Closes #23653 Before: <img width="921" alt="before" src="https://github.com/user-attachments/assets/e993df15-77a7-4b5a-b6fb-3415047914c0" /> After: <img width="922" alt="after" src="https://github.com/user-attachments/assets/1b4bd695-2985-46e2-8b55-576d32af0583" /> Release Notes: - N/A
Finn Evers created
33af6bc
Make suggested commits placeholders and allow them to be committed (#26006)
This does not fix the bug where, when the commit editor modal is open, changing the staged file does not update the suggested message in the commit editor. Conrad mentioned he thought we shouldn't be allowed to change those when the modal is open, so I'm not attempting to fix that. Release Notes: - Made suggested commits placeholders and allow them to be committed.
Joseph T. Lyons created
563baf6
Disable diff hunks for untracked files, even w/ no newline at eof (#25980)
This fixes an issue where diff hunks were shown for untracked files, but only if the files did not end with a newline. Release Notes: - N/A
Max Brunsfeld created
11b79d0
workspace: Add trailing `/` to directories on completion when using `OpenPathPrompt` (#25430)
Closes #25045 With the setting `"use_system_path_prompts": false`, previously, if the completion target was a directory, no separator would be added after it, requiring us to manually append a `/` or `\`. Now, if the completion target is a directory, a `/` or `\` will be automatically added. On Windows, both `/` and `\` are considered valid path separators. https://github.com/user-attachments/assets/0594ce27-9693-4a49-ae0e-3ed29f62526a Release Notes: - N/A
张小白 created
8c4da9f
Disable Git panel button to open commit editor in certain cases (#26000)
Also: - Internally renames a bit of code to make it easy to identify between when we are disabling the buttons that open and close the modal editor (in Git Panel and Project Diff) vs when we are disabling the commit buttons (in Git Panel and Git commit editor modal). - Deletes some unused code. Release Notes: - Unified disabling / enabling the button to open the Git commit editor modal in the Git panel with the Project Diff commit button. - Unified disabling / enabling the commit buttons, for the same cases, between the Git panel and Git commit editor modal.
Joseph T. Lyons created
1f7fa80
git: Fix race condition loading project diff (#25992)
Release Notes: - git: Fixed a race condition where some files would be missing from project diff
Conrad Irwin created
2ac952e
Git fix repo selection (#25996)
Release Notes: - git: Fixed a bug where staging/unstaging of hunks could use the wrong git repository if you had many open
Conrad Irwin created
495612b
Revert "git: Use worktree paths in the panel (#25950)" (#25995)
This reverts commit e7b3b8bf03f5f8693f8c330b98b656b16ab8f931. Release Notes: - N/A
Cole Miller created
1086b28
git: New enter behaviour (#25986)
Closes #25951 Release Notes: - git: Update "enter" in the list of changed files to preserve focus. If you want the old behaviour, hit enter twice. - git: Follow the cursor, not the scroll anchor, in the list. Although the scroll anchor was nice for passive scrolling, it broke if you had changed the overflow scroll settings.
Conrad Irwin created
ffe2bed
Refactor more code around commit button text (#25990)
Missed this when doing https://github.com/zed-industries/zed/pull/25988 Release Notes: - N/A
Joseph T. Lyons created
8894073
Use same commit button text in panel and modal (#25988)
Release Notes: - Fixed inconsistencies in commit button text between Git panel and modal.
Joseph T. Lyons created
74fc52d
Git Beta: Fix a few cases of empty toasts showing up (#25985)
Improve parsing of git remote outputs Release Notes: - N/A
Mikayla Maki created
2a7a4a8
Fix toggle fold in deleted hunk (#25967)
Updates #25835 Updates #25951 Closes #ISSUE Release Notes: - Fixed toggling folds from within deleted hunks
Conrad Irwin created
c03bf1a
gpui: Ensure hitbox is inserted when element has hover listener (#25981)
Currently, when an element has only a hover listener, the attached listener will never trigger, because within the check for whether a hitbox has to be inserted for the given element, this case it not considered. That leads to the behaviour as described in https://github.com/zed-industries/zed/pull/25602#discussion_r1970720972, where another event listener has to be attached to the element in order for the hover listener to work. This PR fixes the issue by ensuring that a hitbox is also inserted when only a hover listener is attached to the element. Release Notes: - N/A
Finn Evers created
922aaa0
Show git panel footer even when on a detached HEAD (#25968)
Previously, the git panel footer would accidentally hide when not on a branch. Release Notes: - N/A Co-authored-by: Ben Kunkle <ben.kunkle@gmail.com>
Max Brunsfeld and Ben Kunkle created
fc5ff31
markdown: Change the copy icon to a check once copied (#25970)
This PR makes it so the copy icon on code blocks will change to a check once the code block has been copied. Release Notes: - N/A
Marshall Bowers created
e7b3b8b
git: Use worktree paths in the panel (#25950)
This PR changes the git panel to use worktree-relative paths for its entries, instead of repository-relative paths as before. Paths that lie outside the active repository's worktree are no longer shown in the panel. Note that in both respects this is how the project diff editor already works, so this PR brings those two pieces of UI into harmony. Release Notes: - N/A
Cole Miller created
6faa7cd
Fix regex search colors (#25962)
In #25005 we added regex syntax highlighting to search; but the existing regex grammar highlighted every character as a string which was hard to read. This flips so that characters are not highlighted, and brackets, etc. are. <img width="346" alt="Screenshot 2025-03-03 at 14 39 35" src="https://github.com/user-attachments/assets/f7d3ae9c-fb5c-45eb-a5e9-41a330fbe940" /> Release Notes: - Fixed regex search box being overly green
Conrad Irwin created
0776fa8
markdown: Allow code blocks and tables to be horizontally scrollable (#25956)
This PR adds the ability for Markdown code blocks and tables to be made horizontally scrollable. This is a feature that the caller can opt in to. Right now we're using it for the rendered Markdown in the Assistant 2 panel. Release Notes: - N/A
Marshall Bowers created
7321c81
gpui: Add `restrict_scroll_to_axis` to match web scrolling behavior (#25963)
This PR adds a new `restrict_scroll_to_axis` style to allow consumers to opt-in to the scrolling behavior found on the web. When this is enabled the behavior will be such that: - Scrolling using the mouse wheel will only scroll the Y axis - Scrolling using the mouse wheel with <kbd>Shift</kbd> held will only scroll the X axis This behavior is useful in scenarios where you have some vertically-scrollable content that is interspersed with horizontally-scrollable elements, as otherwise the scroll will be constantly hijacked by the horizontally-scrollable elements while trying to scroll up and down in the vertically-scrollable container. I think that this behavior should be the default, but it's a bit of a sweeping change to make all at once, so for now it remains opt-in. Release Notes: - N/A
Marshall Bowers created
ac3cb3d
git_ui: horizontal is not vertical (#25961)
Fixes an issue where I was missing some brain cells and changed the git panel's `render_entries` to a `v_flex` instead of an `h_flex`. But actually, fixes the git panel entries from disappearing when a scrollbar is rendered. **Before**  **After**  Closes #25955 Release Notes: - Git Beta: Fixed an issue where when the git panel would need to scroll all the items are pushed off the screen.
Nate Butler created