391c92b
Reduce priority of Windows thread pool work items (#44121)
Click to expand commit body
`WorkItemPriority::High` will enqueue the work items to threads with
higher-than-normal priority. If the work items are very intensive, this
can cause the system to become unresponsive. It's not clear what this
gets us, so let's avoid the responsiveness issue by deleting this.
Release Notes:
- N/A
Fancy regex has a max backtracking limit which defaults to 1,000,000
backtracks. This avoids spinning the CPU forever in the case that a
match is taking a long time (though does mean that some matches may be
missed).
Unfortunately the verison we depended on causes an infinite loop when
the backtracking limit is hit
(https://github.com/fancy-regex/fancy-regex/issues/137), so we got the
worse of both worlds: matches were missed *and* we spun the CPU forever.
Updating fixes this.
Excitingly regex may gain support for lookarounds
(https://github.com/rust-lang/regex/pull/1315), which will make
fancy-regex much less load bearing.
Closes #43821
Release Notes:
- Fix a bug where search regexes with look-around or backreferences
could hang
the CPU. They will now abort after a certain number of match attempts.
Conrad Irwin
created
f90d9d2
Prefer to disable options over hiding (git panel entry context menu) (#44102)
Click to expand commit body
When adding the File History option here, I used the pattern to hide the
option, since that's what another option was already doing here, but I
see other menus in the git panel (`...`) that use disabling over hiding,
which is what I think is a nicer experience (allows you to learn of
actions, the full range of actions is always visible, don't have to
worry about how multiple hidden items might interact in various
configurations, etc).
<img width="336" height="241" alt="SCR-20251203-pnpy"
src="https://github.com/user-attachments/assets/0da90b9a-c230-4ce3-87b9-553ffb83604f"
/>
<img width="332" height="265" alt="SCR-20251203-pobg"
src="https://github.com/user-attachments/assets/5da95c7d-faa9-4f0f-a069-f1d099f952b9"
/>
In general, I think it would be good to move to being more consistent
with disabling over hiding - there are other places in the app that are
hiding - some might be valid, but others might just choices made on a
whim.
Release Notes:
- N/A
Joseph T. Lyons
created
40a611b
tab_switcher: Subscribe to workspace events instead of pane events (#44101)
Click to expand commit body
Closes #43171
Previously the tab switcher only subscribed to events from a single pane
so closing tabs in other panes wouldn't cause the tab switcher to
update. This PR changes that so the tab switcher subscribes to the whole
workspace and thus updates when tabs in other panes are closed.
It also modifies the work in #44006 to sync selected index across the
whole workspace instead of just the original pane in the case of the
all-panes tab switcher.
Release Notes:
- Fixed all-panes tab switcher not updating in response to changes in
other panes
Andrew Farkas
created
8ad3a15
editor: Add active match highlight for buffer and project search (#44098)
Click to expand commit body
Closes #28617
<img width="400" alt="image"
src="https://github.com/user-attachments/assets/b1c2880c-5744-4bed-a687-5c5e7aa7fef5"
/>
Release Notes:
- Improved visibility of the currently active match when browsing
results in buffer or project search.
---------
Co-authored-by: DarkMatter-999 <darkmatter999official@gmail.com>
Smit Barmase
and
DarkMatter-999
created
87976e9
Add more preview tab settings and fix janky behavior (#43921)
Click to expand commit body
Closes #41495
Known issues:
- File path links always open as non-preview tabs. Fixing this is not
technically too difficult but requires more invasive changes and so
should be done in a future PR.
Release Notes:
- Fixed strange behavior when reopening closed preview tabs
- Overhauled preview tabs settings:
- Added setting `preview_tabs.enable_preview_from_project_panel`
(default `true`)
- Kept setting `preview_tabs.enable_preview_from_file_finder` (default
`false`)
- Added setting `preview_tabs.enable_preview_from_multibuffer` (default
`true`)
- Added setting
`preview_tabs.enable_preview_multibuffer_from_code_navigation` (default
`false`)
- Added setting `preview_tabs.enable_preview_file_from_code_navigation`
(default `true`)
- Renamed setting `preview_tabs.enable_preview_from_code_navigation` to
`preview_tabs.enable_keep_preview_on_code_navigation` (default `false`)
---------
Co-authored-by: Smit Barmase <heysmitbarmase@gmail.com>
Co-authored-by: Cole Miller <cole@zed.dev>
Andrew Farkas
,
Smit Barmase
, and
Cole Miller
created
290a155
ai: Add an eval for the inline assistant (#43291)
92dcfde
Fix circular reference issue around PopoverMenu again (#44084)
Click to expand commit body
Follow up to https://github.com/zed-industries/zed/pull/42351
Release Notes:
- N/A
feeiyu
created
4ef8433
Run `git2::Repository::find_remote` in the background (#44092)
Click to expand commit body
We were seeing this hog the main thread.
Release Notes:
- N/A
---------
Co-authored-by: cameron <cameron.studdstreet@gmail.com>
Cole Miller
and
cameron
created
a51e975
Improve support for multiple registrations of `textDocument/diagnostic` (#43703)
Click to expand commit body
Closes https://github.com/zed-industries/zed/issues/41935
The registration ID responsible for generating each diagnostic is now
tracked. This allows us to replace only the diagnostics from the same
registration ID when a pull diagnostics report is applied.
Additionally, various deficiencies in our support for pull diagnostics
have been fixed:
- Document pulls are issued for all open buffers, not just the edited
one. A shorter debounce is used for the edited buffer. Workspace
diagnostics are also now ignored for open buffers.
- Tracking of `lastResultId` is improved.
- Stored pull diagnostics are discarded when the corresponding buffer is
closed.
Release Notes:
- Improved compatibility with language servers that use the "pull
diagnostics" feature of Language Server Protocol.
---------
Co-authored-by: Kirill Bulatov <mail4score@gmail.com>
Co-authored-by: Kirill Bulatov <kirill@zed.dev>
John Tur
,
Kirill Bulatov
, and
Kirill Bulatov
created
493cfad
Revert "http_client: Add integrity checks for GitHub binaries using digest checks (#43737)" (#44086)
Click to expand commit body
This reverts commit 05764e8af797b5abb8076bc78ce32d4130505e93.
Internally we've seen a much higher incidence of macOS code-signing
failing on
the download rust analyzer than we did before this change.
It's unclear why this would be a problem, but we want to try reverting
to see if that fixes it.
Release Notes:
- Reverted a change that seemed to cause problems with code-signing on
rust-analyzer
Conrad Irwin
created
0818ced
editor: Fix blame hover not working when inline git blame is disabled (#42992)
Click to expand commit body
Closes #42936
Release Notes:
- Fixed editor blame hover not working when inline git blame is disabled
Here's the before/after:
https://github.com/user-attachments/assets/a3875011-4a27-45b3-b638-3e146c06f1fe
Mayank Verma
created
6b46a71
tab_switcher: Fix bug where selected index after closing tab did not match pane's active item (#44006)
Click to expand commit body
Whenever an item is removed using the Tab Switcher, the list of matches
is automatically updated, which can lead to the order of the elements
being updated and changing in comparison to what the user was previously
seeing. Unfortunately this can lead to a situation where the selected
index, since it wasn't being updated, would end up in a different item
than the one that was actually active in the pane.
This Pull Request updates the handling of the `PaneEvent::RemovedItem`
event so that the `TabSwitcherDelegate.selected_index` field is
automatically updated to match the pane's new active item.
Seeing as this is being updated, the
`test_close_preserves_selected_position` test is also removed, as it no
longer makes sense with the current implementation. I believe a better
user experience would be to actually not update the order of the
matches, simply removing the ones that no longer exist, and keep the
selected index position, but will tackle that in a different Pull
Request.
Closes #44005
Release Notes:
- Fixed a bug with the tab switcher where, after closing a tab, the
selected entry would not match the pane's active item
Dino
created
575ea49
Fix yank around paragraph missing newline (#43583)
Click to expand commit body
Use `MotionKind::LineWise` in both
`vim::normal::change::Vim.change_object` and
`vim::normal::yank::Vim.yank_object` when dealing with objects that
target `Mode::VisualLine`, for example, paragraphs. This fixes an issue
where yanking and changing paragraphs would not include the trailing
newline character.
Closes #28804
Release Notes:
- Fixed linewise text object operations (`yap`, `cap`, etc.) omitting
trailing blank line in vim mode
---------
Co-authored-by: dino <dinojoaocosta@gmail.com>
Ramon
and
dino
created
85ccd7c
Fix not able to navigate to files in git commit multibuffer (#42558)
Click to expand commit body
Closes #40851
Release Notes:
- Fixed: Commit diff multibuffers now open real project files whenever
possible, restoring navigation and annotations inside those excerpts.
---------
Co-authored-by: Anthony Eid <anthony@zed.dev>
Xipeng Jin
and
Anthony Eid
created
b168679
language: Remove old unused `HTML/ERB` language ID (#44081)
Click to expand commit body
The `HTML/ERB` language was renamed
to `HTML+ERB` in https://github.com/zed-industries/zed/pull/40000 We can
remove the old name safely now.
Release Notes:
- N/A
Closes #43730
## Summary
This modifies the existing injections.scm file for go by adding more
specific prefix queries and *_content nodes to the existing
`raw_string_literal` and `interpreted_string_literal` sections
<details><summary>This PR</summary>
<img width="567" height="784" alt="image"
src="https://github.com/user-attachments/assets/bfe8c64e-1dc2-470c-9f85-2c664a6c5a15"
/>
<img width="383" height="909" alt="image"
src="https://github.com/user-attachments/assets/9349af8c-22d3-4c9b-a435-a73719f17ba3"
/>
<img width="572" height="800" alt="image"
src="https://github.com/user-attachments/assets/939ada3b-1440-443b-8492-0eb61a7ee90f"
/>
</details>
<details><summary>Current Release (0.214.7)</summary>
<img width="569" height="777" alt="image"
src="https://github.com/user-attachments/assets/e6fffe77-e4c6-48e3-9c6d-a140298225c5"
/>
<img width="381" height="896" alt="image"
src="https://github.com/user-attachments/assets/bf107950-c33a-4603-90d3-2304bef0a4af"
/>
<img width="574" height="798" alt="image"
src="https://github.com/user-attachments/assets/2c5e43e5-f101-4722-8f58-6b176ba950ca"
/>
</details>
<details><summary>Code</summary>
```go
func test_sql() {
// const assignment
const _ = /* sql */ "SELECT * FROM users"
const _ = /* sql */ `SELECT id, name FROM products`
// var assignment
var _ = /* sql */ `SELECT id, name FROM products`
var _ = /* sql */ "SELECT id, name FROM products"
// := assignment
test := /* sql */ "SELECT * FROM users"
test2 := /* sql */ `SELECT * FROM users`
println(test)
println(test2)
// = assignment
_ = /* sql */ "SELECT * FROM users WHERE id = 1"
_ = /* sql */ `SELECT * FROM users WHERE id = 1`
// literal elements
_ = testStruct{Field: /* sql */ "SELECT * FROM users"}
_ = testStruct{Field: /* sql */ `SELECT * FROM users`}
testFunc(/* sql */ "SELECT * FROM users")
testFunc(/* sql */ `SELECT * FROM users`)
const backtickString = /* sql */ `SELECT * FROM users;`
const quotedString = /* sql */ "SELECT * FROM users;"
const backtickStringNoHighlight = `SELECT * FROM users;`
const quotedStringNoHighlight = "SELECT * FROM users;"
}
func test_yaml() {
// const assignment
const _ = /* yaml */ `
settings:
enabled: true
port: 8080
`
// := assignment
test := /* yaml */ `
settings:
enabled: true
port: 8080
`
println(test)
// = assignment
_ = /* yaml */ `
settings:
enabled: true
port: 8080
`
// literal elements in a struct
_ = testStruct{Field: /* yaml */ `
settings:
test: 1234
port: 8080
`}
// function argument
testFunc(/* yaml */ `
settings:
enabled: true
port: 8080
`)
}
func test_css() {
// const assignment
const _ = /* css */ "body { margin: 0; }"
const _ = /* css */ `body { margin: 0; }`
const cssCodes = /* css */ `
h1 {
color: #333;
}
`
// := assignment
test := /* css */ "body { margin: 0; }"
println(test)
// = assignment
_ = /* css */ "body { margin: 0; }"
_ = /* css */ `body { margin: 0; }`
// literal elements
_ = testStruct{Field: /* css */ "body { margin: 0; }"}
_ = testStruct{Field: /* css */ `body { margin: 0; }`}
testFunc(/* css */ "body { margin: 0; }")
testFunc(/* css */ `body { margin: 0; }`)
const backtickString = /* css */ `body { margin: 0; }`
const quotedString = /* css */ "body { margin: 0; }"
const backtickStringNoHighlight = `body { margin: 0; }`
const quotedStringNoHighlight = "body { margin: 0; }"
}
```
</details>
Release Notes:
- Greatly improved the quality of comment-directed language injections
in Go
Jeff Brennan
created
c248a95
markdown: Fix rendering of inline HTML <code> tags (#43513)
Click to expand commit body
Added support for rendering HTML `<code> `tags inside Markdown content.
Previously, these tags were ignored by the renderer and displayed as raw
text (inside LSP hover documentation).
Closes: #43166
Release Notes:
- Fixed styling of `<code>` HTML tags in Markdown popovers.
Before:
<img width="445" height="145" alt="image"
src="https://github.com/user-attachments/assets/67c4f864-1fa7-46a9-bb25-8b07a335355d"
/>
After:
<img width="699" height="257" alt="image"
src="https://github.com/user-attachments/assets/8d784a75-28be-43cd-80b4-3aad8babb65b"
/>
Arthur Schurhaus
created
7e177c4
markdown_preview: Fix markdown tables taking up the full width of the parent element (#43555)
Click to expand commit body
Closes #39152
This PR fixes an issue where we would render Markdown tables full width
based on their container size. We now render tables based on their
content min size, meaning you are still allowed to make the table render
as it was before by making the columns `w_full`.
I had to change the `div()` to `v_flex().items_start()` because this
introduced a weird displaying behavior of the outside table border,
because the grid container was not shrinking due to It was always taking
up the full width of their container.
**Before**
<img width="1273" height="800" alt="Screenshot 2025-11-26 at 14 37 19"
src="https://github.com/user-attachments/assets/2e152021-8679-48c2-b7bd-1c02768c0253"
/>
**After**
<img width="1273" height="797" alt="Screenshot 2025-11-26 at 14 56 12"
src="https://github.com/user-attachments/assets/4459d20e-8c3b-487b-a215-c95ee5c1fc8e"
/>
**Code example**
```markdown
| Name | Age | Occupation |
|:--------:|:-------:|:--------------:|
| Alice | 28 | Engineer |
| Bob | 34 | Designer |
| Carol | 25 | Developer |
| Syntax | Description |
| ----------- | ----------- |
| Header | Title |
| Paragraph | Text |
| City | Population (approx.) | Known For |
|----------------|----------------------|------------------------------------|
| New York | 8,500,000 | Statue of Liberty, Wall Street |
| Los Angeles | 4,000,000 | Hollywood, film industry |
| Chicago | 2,700,000 | Architecture, deep-dish pizza |
| Houston | 2,300,000 | NASA, energy industry |
| Miami | 470,000 | Beaches, Latin culture |
| San Francisco | 800,000 | Golden Gate Bridge, Silicon Valley |
| Las Vegas | 650,000 | Casinos, nightlife |
<table>
<caption>Table Caption</caption>
<thead>
<tr>
<th>ID asjkfjaslkf jalksjflksajflka jlksdla k</th>
<th>Name</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>Chris</td>
</tr>
<tr>
<td>2</td>
<td>Dennis</td>
</tr>
<tr>
<td>3</td>
<td>Sarah</td>
</tr>
<tr>
<td>4</td>
<td>Karen</td>
</tr>
</tbody>
</table>
```
cc @bennetbo
Release Notes:
- Markdown Preview: Markdown tables scale now based on their content
size
904d90b
extension_ci: Run tests on pushes to `main` (#44079)
Click to expand commit body
This seems sensible to do - it already was the case prior but
indirectly, lets rather be explicit about this.
Release Notes:
- N/A
Co-authored-by: Agus Zubiaga <agus@zed.dev>
Finn Evers
and
Agus Zubiaga
created
1e09cbf
workspace: Scope tab tooltip to tab content only (#44076)
Click to expand commit body
Release Notes:
- Fixed scope tab tooltip to tab content only
Signed-off-by: Xiaobo Liu <cppcoffee@gmail.com>
Xiaobo Liu
created
8ca2571
extension_ci: Do not trigger version bump on workflow file changes (#44077)
Click to expand commit body
Release Notes:
- N/A
Co-authored-by: Agus Zubiaga <agus@zed.dev>
Finn Evers
and
Agus Zubiaga
created
95a553e
Do not report rejected sweep predictions to cloud (#44075)
Uses the latest version of the SDK + schema crate. A bit painful because
we needed to move to `#[non_exhaustive]` on all of these structs/enums,
but will be much easier going forward.
Also, since we depend on unstable features, I am pinning the version so
we don't accidentally introduce compilation errors from other update
cycles.
Release Notes:
- N/A
Ben Brandt
created
fe6fa1b
Revert "acp: Add a timeout when initializing an ACP agent so the user isn't waiting forever" (#44066)
Click to expand commit body
Reverts zed-industries/zed#43663
Ben Brandt
created
50d0f29
languages: Fix python run module task failing on windows (#44064)
Click to expand commit body
Fixes #40155
Release Notes:
- Fixed python's run module task not working on windows platforms
Co-authored by: Smit Barmase <smit@zed.dev>
Lukas Wirth
created
9857fd2
Make highlighting of C preprocessing directive same as C++ (#44043)
Click to expand commit body
Small fix for consistency between C and C++ highlighting. Related to
https://github.com/zed-industries/zed/issues/9461
Release Notes:
- Change syntax highlighting for preprocessing directive in C so it can
be configured with `keyword.directive` instead of being treated as other
`keyword`. The behavior should be like the C++ one now.
<img width="953" height="343" alt="圖片"
src="https://github.com/user-attachments/assets/6b45d2cc-323d-44ba-995f-d77996757669"
/>
lipcut
created
ad51017
Properly filter out the greedy bracket pairs (#44022)
Click to expand commit body
Follow-up of https://github.com/zed-industries/zed/pull/43607
Release Notes:
- N/A
Kirill Bulatov
created
2bf4787
Hide "File History" for untracked files in Git Panel context menu (#44035)
Joseph T. Lyons
created
65b4e9b
extensions_ui: Add upsell banners for integrated extensions (#43872)
Click to expand commit body
Add informational banners for extensions that have been integrated into
Zed core:
- Basedpyright (Python language server)
- Ruff (Python linter)
- Ty (Python language server)
These banners appear when users search for these extensions, informing
them that the functionality is now built-in and linking to relevant
documentation.
The banners trigger when:
- Users search by extension ID (e.g., 'id:ruff')
- Users search using relevant keywords (e.g., 'basedpyright', 'pyright',
'ruff', 'ty')
Supersedes #43844
Closes #43837
Release Notes:
- Added banners to the extensions page when searching for Basedpyright,
Ruff, or Ty, indicating that these features are now built-in.
---------
Co-authored-by: Marshall Bowers <git@maxdeviant.com>
Rani Malach
and
Marshall Bowers
created
98dec92
zed: Promote comment to a doc comment (#44031)
Click to expand commit body
This PR promotes a line comment above a variant member to a doc comment,
so that the docs show up on hover.
Release Notes:
- N/A
Marshall Bowers
created
39536ca
docs: Add Conda package to Linux community-maintained packages list (#44029)
Click to expand commit body
Release Notes:
- N/A
Joseph T. Lyons
created
b4e1d86
git: Use UI font in commit and blame popovers (#43975)
Click to expand commit body
Closes #30353
Release Notes:
- Fixed: Hover tooltips in git commit and blame popovers now
consistently use the UI font
Mikhail Pertsev
created
8a12ecf
commit view: Display message within editor (#44024)
Click to expand commit body
#42441 moved the commit message out of the multi-buffer editor into its
own header element which looks nicer, but unfortunately can make the
view become unusable when the commit message is too long since it
doesn't scroll with the diff.
This PR maintains the metadata in its own element, but moves the commit
message back to the editor so the user can scroll past it. This does
mean that we lose markdown rendering for now, but we think this is a
good solution for the moment.
https://github.com/user-attachments/assets/d67cf22e-1a79-451a-932a-cdc8a65e43de
Release Notes:
- N/A
---------
Co-authored-by: cameron <cameron.studdstreet@gmail.com>
Agus Zubiaga
and
cameron
created
22bf449
settings_ui: Fix some non-title case settings items (#44026)
Click to expand commit body
Release Notes:
- N/A
Danilo Leal
created
bcf9142
Update tree-sitter-bash to 0.25.1 (#44009)
Click to expand commit body
With the merging and publishing of
https://github.com/tree-sitter/tree-sitter-bash/pull/311 , we can now go
ahead and update the version of `tree-sitter-bash` that Zed relies on to
the latest version.
Closes #42091
Release Notes:
- Improved grammar for "Shell Script"
Dino
created
a2d57fc
zed_extension_api: Fork new version of extension API (#44025)
Click to expand commit body
This PR forks a new version of the `zed_extension_api` in preparation
for new changes.
We're jumping from v0.6.0 to v0.8.0 for the WIT because we released
v0.7.0 of the `zed_extension_api` without any WIT changes (it probably
should have been v0.6.1, instead).
Release Notes:
- N/A
Marshall Bowers
created
96a9170
Apply `show_completions_on_input: false` to word & snippet completions (#44021)
Click to expand commit body
Closes #43408
Previously, we checked the setting inside `is_completion_trigger()`,
which only affects LSP completions. This was ok because user-defined
snippets were tacked onto LSP completions. Then #42122 and #42398 made
snippet completions their own thing, similar to word completions,
surfacing #43408. This PR moves the settings check into
`open_or_update_completions_menu()` so it applies to all completions.
Release Notes:
- Fixed setting `show_completions_on_input: false` so that it affects
word and user-defined snippet completions as well as LSP completions
Andrew Farkas
created
a2ddb0f
Fix "busy" cursor appearing on startup (#44019)
23e5477
vim: Move to opening html tag from / in closing tag (#42513)
Click to expand commit body
Closes #41582
Release Notes:
- Improves the '%' vim motion for html by moving the cursor to the
opening tag when its positioned on the `/` ( slash ) of the closing tag
Pranav Joglekar
created
4e043cd
Add git team to git in REVIEWERS.conl (#41841)
Click to expand commit body
Release Notes:
- N/A
David Kleingeld
created
d283338
Add "File History" option to Git Panel entry context menu (#44016)
cargo-about@0.8.3 doesn't seem to like our license identifiers. Pinning
to 0.8.2 for now.
Release Notes:
- N/A
Agus Zubiaga
created
7bea1ba
Run commands if completion items require so (#44008)
Click to expand commit body
Abide the LSP better and actually run commands if completion items
request those:
https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#completionItem
```
/**
* An optional command that is executed *after* inserting this completion.
* *Note* that additional modifications to the current document should be
* described with the additionalTextEdits-property.
*/
command?: [Command](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#command);
```
Release Notes:
- N/A