Release Notes:
- linux: Fixed overflow in xkbcommon-rs
Conrad Irwin
created
0bf0152
Fix GoForward shortcut on non-US keyboard layouts (#14570)
Click to expand commit body
- Fixes #14418. Originally broken by #13946
Peter Tripp
created
d338e4a
editor: Improve performance of edit coalescing (#14567)
Click to expand commit body
# Background
In https://github.com/zed-industries/zed/issues/14408 we received a
repro for "Replace all" being slow, even after the work I did
https://github.com/zed-industries/zed/pull/13654. Admittedly #13654 was
a pretty straightforward change.
Under the profiler it turned out that we're spending *10 seconds* in
`memmove` on main thread. Ugh. Not great. The direct ancestor of the
memmove call was
https://github.com/zed-industries/zed/blob/66f0c390a88f5aa16d21047a8982a5888fa0f816/crates/editor/src/display_map/tab_map.rs#L108-L119
What?
# Accidental O(n^2)
We have a bunch of `consolidate_*_edits` functions which take a list of
Fold/Tab/Inlay/Wrap edits and merge consecutive edits if their ranges
overlap/are next to one another. The loop usually goes as follows:
```
while ix < edits.len() {
let (prev_edits, next_edits) = edits.split_at_mut(ix);
let prev_edit = prev_edits.last_mut().unwrap();
let edit = &next_edits[0];
if PREV_EDIT_CAN_BE_MERGED_WITH_CURRENT_ONE {
MERGE_EDITS(prev_edit, edit);
edits.remove(ix); // !!
} else {
ix += 1;
}
}
```
The problem is the call to `.remove` - it has to shift all of the
consecutive elements in the `edits` vector! Thus, when processing the
edits from the original repro (where consolidation shrinks the edit list
from 210k entries to 30k), we mostly spend time moving entries in memory
around.
Thus, the original repro isn't really an issue with replace_all; it's
just that replace_all is one of the few tools available to the end user
that can apply large # of edits in a single transaction.
# Solution
In this PR I address the issue by rewriting the loop in a way that does
not throw items away via `.remove`. Instead, `Iterator::scan` is used,
which lets us achieve the same logic without having the pitfalls of
`.remove`s.
Crucially, **this code does not allocate a new backing buffer for
edits** (see [this article for
rationale](https://blog.polybdenum.com/2024/01/17/identifying-the-collect-vec-memory-leak-footgun.html));
with `vec.into_iter().scan().filter_map().collect()` we still use the
same underlying buffer as the one that's passed into `consolidate_*`
functions. In development I verified that by checking whether the
pointers to backing storage of a Vec are the same before and after the
consolidation.
# Results
### Before
Nightly 0.145.0
[66f0c390a88f5aa16d21047a8982a5888fa0f816](https://github.com/zed-industries/zed/commit/66f0c390a88f5aa16d21047a8982a5888fa0f816)
https://github.com/user-attachments/assets/8b0ad3bc-86d6-4f8a-850c-ebb86e8b3bfc
(~13s end-to-end)
### After
https://github.com/user-attachments/assets/366835db-1d84-4f95-8c74-b1506a9fabec
(~2s end-to-end)
The remaining lag is (I think) lies in `TextSummary` calculation and not
the consolidation itself. Thus, for the purposes of scoping this PR,
I'll tackle it separately.
Release Notes:
- Significantly improved performance of applying large quantities of
concurrent edits (e.g. when running "Replace all").
Piotr Osiewicz
created
751508b
linux: Install dependencies when bundling nightly (#14566)
66f0c39
linux: Fix missing licenses in binary causing panics (#14561)
Click to expand commit body
Turns out that the existing CI step for Nightly did create the licenses
and they have been baked into X86 builds ever since, because our
builders are stateful.
On ARM machines, the licenses wouldn't exist in the binary because we
called `script/generate-licenses` too late in `scripts/bundle-linux`,
after the binary had been created.
This removes the duplication and generates the licenses once, before the
binary is created.
Fixes #14302.
Release Notes:
- Fixed "View Dependency Licenses" (or `zed: open licenses`) crashing on
Linux ARM machines.
([#14302](https://github.com/zed-industries/zed/issues/14302)
Thorsten Ball
created
fdd233e
Change the context menu and Copilot settings icon (#14501)
Click to expand commit body
Felt the link we were using for menu items that open a browser page was
not the best. That one is most typically used for attachments within
scope, as opposed to opening external links. Noticed that via the
"Copilot Settings" menu, which also felt like it could have a bit more
descriptive label. Also reduced the size of the rendered icon in this
component.
---
Release Notes:
- N/A
e68d9f4
Switch to muted color for kernel output labels (#14529)
Click to expand commit body
Sets the text for "Executing...", "Queued", etc. to be `Color::Muted`
<img width="442" alt="image"
src="https://github.com/user-attachments/assets/10c27ce2-b804-41a3-a50e-0778b7e6cd09">
Release Notes:
- N/A
Mostly some small tweaks to the file chooser dialogs.
Fixes https://github.com/zed-industries/zed/issues/14127 (along with the
`ashpd` update in https://github.com/zed-industries/zed/pull/14401)
Also included a fix
(https://github.com/zed-industries/zed/commit/971d67c994dd595454cc4bc92bdf33d9da30a31a)
for an issue that made multiple file chooser dialogs pop up on Wayland
when doing CTRL + O and quickly pressing the escape key.
Release Notes:
- N/A
Release Notes:
- linux: Added a fallback Open picker for when XDG is not working
- Added a new setting `use_system_path_prompts` (default true) that can
be disabled to use Zed's builtin keyboard-driven prompts.
---------
Co-authored-by: Max <max@zed.dev>
This PR adds support for displaying file icons in tabs.
The `tabs.file_icons` setting controls whether the icons are displayed:
```json
{
"tabs": {
"file_icons": false
}
}
```
This setting defaults to `true`.
<img width="1566" alt="Screenshot 2024-07-15 at 6 17 26 PM"
src="https://github.com/user-attachments/assets/86dfc8c9-764c-453d-95e4-2ec95d6fe715">
<img width="1566" alt="Screenshot 2024-07-15 at 6 24 26 PM"
src="https://github.com/user-attachments/assets/4b4e8489-49d3-41bf-b4cb-59365bdd3e9d">
Release Notes:
- Added file icons to buffer tabs
([#12138](https://github.com/zed-industries/zed/issues/12138)).
- If desired, these icons can be removed using `"tabs": { "file_icons":
false }`.
Marshall Bowers
created
2ae1a47
Upsell built-in features on the extensions page (#14516)
Click to expand commit body
This PR extends the extensions page with support for upselling built-in
Zed features when certain keywords are searched for.
This should help inform users about features that Zed has out-of-the-box
when they go looking for them as extensions.
For example, when someone searches "vim":
<img width="1341" alt="Screenshot 2024-07-15 at 4 58 44 PM"
src="https://github.com/user-attachments/assets/b256d07a-559a-43c2-b491-3eca5bff436e">
Here are more examples of what the upsells can look like:
<img width="1341" alt="Screenshot 2024-07-15 at 4 54 39 PM"
src="https://github.com/user-attachments/assets/1f453132-ac14-4884-afc4-7c12db47ad1d">
Release Notes:
- Added banners for built-in Zed features when corresponding keywords
are used in the extension search.
Marshall Bowers
created
d7a25c1
Add an experimental, WIP diagnostics grouping panel (#14515)
Click to expand commit body
Provide a current, broken state as an experimental way to browse
diagnostics.
The diagnostics are grouped by lines and reduced into a block that, in
case of multiple diagnostics per line, could be toggled back and forth
to show more diagnostics on the line.
Use `grouped_diagnostics::Deploy` to show the panel.
Issues remaining:
* panic on warnings toggle due to incorrect excerpt manipulation
* badly styled blocks
* no key bindings to navigate between blocks and toggle them
* overall odd usability gains for certain groups of people
Due to all above, the thing is feature-gated and not exposed to regular
people.
Release Notes:
- N/A
Kirill Bulatov
created
2c6cb4e
Fix Cmd+\ for workspace::ToggleLeftDock for Atom base keymap (#14098)
Click to expand commit body
Release Notes:
- Fixed Left Dock in Atom keymap on Mac/Linux (`cmd-\`, `ctrl-\`)
([#14098](https://github.com/zed-industries/zed/pull/14098), thanks [@audionerd](https://github.com/audionerd)).
---------
Co-authored-by: Peter Tripp <peter@zed.dev>
This PR extracts a separate `border_style_methods` macro so that it can
be used independently from `style_helpers!`.
Release Notes:
- N/A
Marshall Bowers
created
fa3d290
Add REPL dropdown menu to toolbar (#14493)
Click to expand commit body
TODO:
- [x] Actions run from menu not firing
- [x] Menu differentiates idle and busy for running kernel
Menu States:
- [x] No session && no support known
No session && no kernel installed for languages of known support
- (TODO after) Intro to REPL
- [x] Link to docs
No session but can start one
- [x] Start REPL
- (TODO after) More info -> Docs?
Yes Session
- [x] Info: Kernel name, language
example: chatlab-3.7-adsf87fsa (Python)
example: condapy-3.7 (Python)
- [x] Change Kernel -> https://zed.dev/docs/repl#change-kernel
- ---
- [x] Run
- [x] Interrupt
- [x] Clear Outputs
- ---
- [x] Shutdown
(Release notes left empty as the change will be documented in the REPL
release!)
Reserved for a follow on PR:
```
- [ ] Status should update when the menu is open (missing `cx.notify`?)
- [ ] Shutdown all kernels action
- [ ] Restart action
- [ ] [Default kernel changed - restart (this kernel) to apply] // todo!(kyle): need some kind of state thing that says if this has happened
```
Release Notes:
- N/A
---------
Co-authored-by: Marshall Bowers <elliott.codes@gmail.com>
Co-authored-by: Kyle Kelley <rgbkrk@gmail.com>
Co-authored-by: Piotr Osiewicz <24362066+osiewicz@users.noreply.github.com>
Nate Butler
,
Marshall Bowers
,
Kyle Kelley
, and
Piotr Osiewicz
created
1856320
Add mouse handling to gpui input example (#14350)
Click to expand commit body
Release Notes:
- N/A
---------
Co-authored-by: Jason Lee <huacnlee@gmail.com>
Conrad Irwin
and
Jason Lee
created
b58abb1
linux: Hide Install CLI from welcome (#14506)
Click to expand commit body
Release Notes:
- linux: Remove "Install CLI" from welcome, it is not necessary
Release Notes:
- linux: Fixed opening urls/directories on systems where the xdg desktop
portal doesn't handle those requests.
Conrad Irwin
created
0b0de8c
Display hint to add PATH for Fish shell too (#14504)
Click to expand commit body
tested on `fish 3.7.1 (released March 19, 2024)`
___
Release Notes:
- N/A
makeProjectGreatAgain
created
f3ddd18
linux: Show warning if file picker portal is missing (#14401)
Click to expand commit body
This PR adds a warning when the file chooser couldn't be opened on Linux
It's quite confusing when trying to open a file and apparently nothing
happens:
fixes https://github.com/zed-industries/zed/issues/11089,
https://github.com/zed-industries/zed/issues/14328,
https://github.com/zed-industries/zed/issues/13753#issuecomment-2225812703,
https://github.com/zed-industries/zed/issues/13766,
https://github.com/zed-industries/zed/issues/14384,
https://github.com/zed-industries/zed/issues/14353,
https://github.com/zed-industries/zed/issues/9209

Release Notes:
- N/A
apricotbucket28
created
5d860e2
Fix selectable popover dismissing on key press (#14368)
Click to expand commit body
Release Notes:
- Fixed dismissal bug included in #12918
Ephram
created
e26dbe2
Add linux Zed log location to crash report github issue template (#14373)
Click to expand commit body
Release Notes:
- N/A
Peter Tripp
created
3c38be5
Add keyboard shortcuts to center scrolling around current line (#14385)
Click to expand commit body
- MacOS: Center the cursor in the visible area. `ctrl-l` (matches MacOS)
- Linux JetBrains: Scroll so cursor is at the Middle `ctrl-m`
- `editor::NextScreen` is not longer bound in any keymap by default (was
`ctrl-l` on MacOS)
Fixes #5247
Peter Tripp
created
e50811c
Adjust list item & pickers spacing (#14250)
Danilo Leal
created
c1aa4d9
rust: Expose import names in completions for modules and functions (#14490)
Click to expand commit body
Release Notes:
- Improved accuracy of completion lists for Rust functions and modules.
98b95d9
Introduce `/symbols` command in assistant panel (#14360)
Click to expand commit body
Release Notes:
- Added `/symbols` command in assistant panel.
---------
Co-authored-by: Antonio <antonio@zed.dev>
Co-authored-by: Antonio Scandurra <me@as-cii.com>
Co-authored-by: Nathan <nathan@zed.dev>
Max Brunsfeld
,
Antonio
,
Antonio Scandurra
, and
Nathan
created
decdd3b
Introduce following for assistant panel (#14479)
Click to expand commit body
Release Notes:
- Added support for following into the assistant panel.
---------
Co-authored-by: Max <max@zed.dev>
Co-authored-by: Max Brunsfeld <maxbrunsfeld@gmail.com>
Co-authored-by: Nathan <nathan@zed.dev>
Antonio Scandurra
,
Max
,
Max Brunsfeld
, and
Nathan
created
977a1b7
Support dynamic formatting capabilities [un]registration (#14478)
This PR provides a similar implementation to the macOS clipboard
implementation, adds support for metadata and includes tests.
Release Notes:
- N/A
张小白
created
ba09eab
windows: Make window creation failable (#14395)
Click to expand commit body
Release Notes:
- N/A
张小白
created
70d983a
Include stable package in docs, mention UM, and link to sources for the Fedora package (#14432)
Click to expand commit body
Hello, I'm one of the maintainers of the Zed package on Terra. I made
the following changes:
- Mention the Terra stable package, instead of only preview and nightly.
- Link to sources for Terra packages instead of pkgs.org.
- Mention Ultramarine in addition to Fedora (one of Terra's targets).
Release Notes:
- N/A
lea
created
4a3097d
x11: Fix capitalization with neo 2 (#14466)
Click to expand commit body
Fixed #14282
Release Notes:
- N/A
Fernando Tagawa
created
59ce353
Turn off `use_on_type_format` too, for languages that have `format_on_save` disabled (#14413)
Click to expand commit body
Based on the discussion in
https://github.com/zed-industries/zed/issues/14400
Release Notes:
- N/A
Kirill Bulatov
created
f8b5e42
Do not send `textDocument/didSave` message if server does not declare its support (#14412)
Do not require the `prettier` dependency name to be in package.json's
[dev]Dependencies, instead just checking the `node_modules` contents.
Release Notes:
- Improved `prettier` detection to pick up its installation from
transitive dependencies
([12731](https://github.com/zed-industries/zed/issues/12731)
Currently deno lsp only works because deno have a workaround when it
detects deno.json it gets activated, but without a deno.json it won't
work
With this change now it works correctly regardless of a deno.json
presence, it only require enable:true:
```json
{
"lsp": {
"deno": {
"settings": {
"deno": {
"enable": true
}
}
}
}
}
```
Release Notes:
- Improved initial Deno set-up to enable it without explicit deno.json present in the file system
Bedis Nbiba
created
3a41094
Apply `terminal.foreground` and `terminal.background` from theme (#14281)
Click to expand commit body
Release Notes:
- Fixed terminal colors not respecting the theme
([#11418](https://github.com/zed-industries/zed/discussions/11418)).