eb5e18c
Fix blade validation failure (#9172)
Click to expand commit body
Fix: #9167 Release Notes: - N/A
白山風露 created
eb5e18c
Fix blade validation failure (#9172)
Fix: #9167 Release Notes: - N/A
白山風露 created
830e107
Hide hover popover when mouse hovers over negative space (#9173)
Fixes https://github.com/zed-industries/zed/issues/8340 Release Notes: - Fixed a bug that would cause hover information to not be dismissed when hovering over negative space.
Antonio Scandurra created
45c4d35
rope: Preallocate chunks buffer
This commit also specializes 'fn push' for large text quantities. That specialized version uses a Vec instead of SmallVec. This commit shaves off about ~100ms out of 800ms when loading a 600Mb text buffer.
Piotr Osiewicz created
298314d
Fix regressions introduced by flicker fix (#9162)
This pull request fixes a couple of easy regressions we discovered right after using #9012 on nightly: - Popover buttons for a chat message were being occluded by the message itself. - Scrolling was not working on the `List` element. Release Notes: - N/A
Antonio Scandurra created
2f6c78b
Fix incorrect outline selections after submit (#9160)
Follow-up of https://github.com/zed-industries/zed/pull/9153 Release Notes: - N/A
Kirill Bulatov created
4700d33
Fix flickering (#9012)
See https://zed.dev/channel/gpui-536 Fixes https://github.com/zed-industries/zed/issues/9010 Fixes https://github.com/zed-industries/zed/issues/8883 Fixes https://github.com/zed-industries/zed/issues/8640 Fixes https://github.com/zed-industries/zed/issues/8598 Fixes https://github.com/zed-industries/zed/issues/8579 Fixes https://github.com/zed-industries/zed/issues/8363 Fixes https://github.com/zed-industries/zed/issues/8207 ### Problem After transitioning Zed to GPUI 2, we started noticing that interacting with the mouse on many UI elements would lead to a pretty annoying flicker. The main issue with the old approach was that hover state was calculated based on the previous frame. That is, when computing whether a given element was hovered in the current frame, we would use information about the same element in the previous frame. However, inspecting the previous frame tells us very little about what should be hovered in the current frame, as elements in the current frame may have changed significantly. ### Solution This pull request's main contribution is the introduction of a new `after_layout` phase when redrawing the window. The key idea is that we'll give every element a chance to register a hitbox (see `ElementContext::insert_hitbox`) before painting anything. Then, during the `paint` phase, elements can determine whether they're the topmost and draw their hover state accordingly. We are also removing the ability to give an arbitrary z-index to elements. Instead, we will follow the much simpler painter's algorithm. That is, an element that gets painted after will be drawn on top of an element that got painted earlier. Elements can still escape their current "stacking context" by using the new `ElementContext::defer_draw` method (see `Overlay` for an example). Elements drawn using this method will still be logically considered as being children of their original parent (for keybinding, focus and cache invalidation purposes) but their layout and paint passes will be deferred until the currently-drawn element is done. With these changes we also reworked geometry batching within the `Scene`. The new approach uses an AABB tree to determine geometry occlusion, which allows the GPU to render non-overlapping geometry in parallel. ### Performance Performance is slightly better than on `main` even though this new approach is more correct and we're maintaining an extra data structure (the AABB tree).  Release Notes: - Fixed a bug that was causing popovers to flicker. --------- Co-authored-by: Nathan Sobo <nathan@zed.dev> Co-authored-by: Thorsten <thorsten@zed.dev>
Antonio Scandurra , Nathan Sobo , and Thorsten created
9afd78b
Add ESLint information to JavaScript docs (#9158)
Release Notes: - N/A
Thorsten Ball created
9ff3cff
Respect `eslint.nodePath` setting (#9073)
I'm using Yarn Plug'n'Play. In this case, by default, eslint cannot find the path, so configuration like `"eslint.nodePath": ".yarn/sdks"` is required. So, I want to add this! Release Notes: - Added eslint config nodePath
Yanguk created
d66f8f9
docs: Move Linux tracking issue (#9130)
Release Notes: - N/A
Kainoa Kanter created
2698487
Fix Vim code formating (#9098)
- N/A
Hans created
39bd12a
gpui: add set menus example (#9131)
Add an example showing how to add a menu item, register an action with the `AppContext`, and successfully call the action. Release Notes: - N/A
Andrew created
e1f8a1e
Fix `<!DOCTYPE html>` syntax highlighting (#9108)
Release Notes: - Added `<!DOCTYPE html>` syntax highlighting ([4318](https://github.com/zed-industries/zed/issues/4318))
Max created
41dc5fc
Allow highlighting editor rows from multiple sources concurrently (#9153)
Kirill Bulatov created
f4a86e6
Always single-quote directory when cd'ing to get shell env (#9145)
This avoids us potentially executing code (if someone were to name their directory `$(echo you-are-pwned > /secure-files)`, for example). Works with zsh, bash, fish, nushell. Tested locally with all of them. Release Notes: - N/A
Thorsten Ball created
597465b
Slightly simplify editor highlights code (#9123)
Prepare for git diff hunk highlights by grouping all inlay highlight properties into one struct, and removing the dead background highlight code. Release Notes: - N/A
Kirill Bulatov created
ccc9391
Remove obsolete separator (#9117)
Max created
a03feca
Remove feedback button from status bar (#9100)
This PR removes the feedback button from the status bar, as Nathan and I discussed. We discussed the fact that we likely no longer need to take up valuable screen real estate for this, with where Zed as at now. This PR also moves the `Share Feedback...` collab menu item to the `Help` menu, as that's where VS Code puts their action to send in-app feedback (which might help with future discoverability) and renames it to `Give Feedback...`, to make it consistent with the name of the command palette action. Release Notes: - Removed the feedback button from the status bar.
Joseph T. Lyons created
ca696fd
Add rs-notify implementation of `fs::watch` (#9040)
This PR simplifies the Zed file system abstraction and implements `Fs::watch` for linux and windows. TODO: - [x] Figure out why this fails to initialize the file watchers when we have to initialize the config directory paths, but succeeds on subsequent runs. - [x] Fix macOS dependencies on old fsevents::Event crate Release Notes: - N/A
Mikayla Maki created
456efb5
windows: Add file dialog using IFileOpenDialog (#8919)
Release Notes: - Added a file dialog for Windows
Jason Wen created
d4ec78f
Add strikethrough to deprecated methods in CompletionsMenu (#9086)
Release Notes: - Added ([#8390](https://github.com/zed-industries/zed/issues/8390)). - Also Grays out deprecated methods Before <img width="730" alt="image" src="https://github.com/zed-industries/zed/assets/71665039/8b5e8009-22c2-43f7-b85b-79e571a5d282"> After <img width="773" alt="image" src="https://github.com/zed-industries/zed/assets/71665039/0aff572b-6d3f-4ed9-b08b-d925ee650817">
Adam created
efe5203
GPUI: Wayland: Add fullscreen, minimize and avoid unnecessary resizes (#9060)
Release Notes: - N/A
bbb651 created
146971f
Splice remove suggesion hints when those are cleared in the editor. (#9088)
Closes https://github.com/zed-industries/zed/issues/6793 Release Notes: - Fixed copilot suggestions not disappearing after disabling the tool ([6793](https://github.com/zed-industries/zed/issues/6793))
Kirill Bulatov created
3471780
Add `editor::RevertSelectedHunks` to revert git diff hunks in the editor (#9068)
https://github.com/zed-industries/zed/assets/2690773/653b5658-e3f3-4aee-9a9d-0f2153b4141b Release Notes: - Added `editor::RevertSelectedHunks` (`cmd-alt-z` by default) for reverting git hunks from the editor
Kirill Bulatov created
6a7a3b2
Add missing docstrings to settings.rs (#9054)
 Add documentation for theme-related settings. Release Notes: - Add documentation for theme-related settings ([8383](https://github.com/zed-industries/zed/issues/8383))
Jadi created
8a6264d
Provide wasm extensions with APIs needed for using pre-installed LSP binaries (#9085)
In this PR, we've added two new methods that LSP extensions can call: * `shell_env()`, for retrieving the environment variables set in the user's default shell in the worktree * `which(command)`, for looking up paths to an executable (accounting for the user's shell env in the worktree) To test this out, we moved the `uiua` language support into an extension. We went ahead and removed the built-in support, since this language is extremely obscure. Sorry @mikayla-maki. To continue coding in Uiua in Zed, for now you can `Add Dev Extension` from the extensions pane, and select the `extensions/uiua` directory in the Zed repo. Very soon, we'll support publishing these extensions so that you'll be able to just install it normally. Release Notes: - N/A --------- Co-authored-by: Marshall <marshall@zed.dev>
Max Brunsfeld and Marshall created
5abcc1c
Let LineColumn on StatusBar as clickable to open GoToLineColumn (#9002)
Release Notes: - Added to let LineColumn on StatusBar as clickable to open GoToLineColumn. - Added placeholder to GoToLineColumn input, and show help message on input changed. ## Screenshot 
Jason Lee created
977af37
open zed urls (#9081)
Release Notes: - Added support for opening files on the zed protocol `open zed:///Users/example/Desktop/a.txt` ([#8482](https://github.com/zed-industries/zed/issues/8482)).
Conrad Irwin created
1756c1f
Improve UI of popover buttons when hovering over chat messages (#9041)
### Before https://github.com/zed-industries/zed/assets/146845123/4a16c1ce-a671-4e39-abc9-3a0cb25bc0cd ### After https://github.com/zed-industries/zed/assets/146845123/cfab3d00-246e-427d-9c40-8ee520a0a186 Release Notes: - Improved the UI of popover buttons when hovering over chat messages.
Evren Sen created
be953b7
Add script for setting up WASI dependencies (#9078)
This PR adds a script for setting up the WASI dependencies needed for extensions. These already get downloaded when needed when using Zed, but in the tests the HTTP client is faked out, so if you don't already have them installed the `test_extension_store_with_gleam_extension` test will fail. Release Notes: - N/A
Marshall Bowers created
51ebe0e
Allow wasm extensions to do arbitrary file I/O in their own directory to install language servers (#9043)
This PR provides WASM extensions with write access to their own specific working directory under the Zed `extensions` dir. This directory is set as the extensions `current_dir` when they run. Extensions can return relative paths from the `Extension::language_server_command` method, and those relative paths will be interpreted relative to this working dir. With this functionality, most language servers that we currently build into zed can be installed using extensions. Release Notes: - N/A
Max Brunsfeld created
a550b9c
Impl `prompts` and `savefile dialog` on Windows (#9009)
### Description This is a part of #8809 , and this PR dose not include `open file dialog`, as I already saw two PRs impl this. https://github.com/zed-industries/zed/assets/14981363/3223490a-de77-4892-986f-97cf85aec3ae Release Notes: - N/A
张小白 created
bf295ea
Task::spawn now takes an optional task name as an argument.
If it is not set, we fall back to opening a modal. This allows user to spawn tasks via keybind.
Piotr Osiewicz created
fa5dfe1
Fix default tasks.json definition
Piotr Osiewicz created
7b73e28
fs: allocate backing storage once in Fs::load (#9020)
`futures_lite::AsyncReadExt::read_to_string` (that we use in `RealFs::load`) explicitly does not allocate memory for String contents up front, which leads to excessive reallocations. That reallocation time is a significant contributor to the time we spend loading files (esp large ones). For example, out of ~1s that it takes to open up a 650Mb ASCII buffer on my machine (after changes related to fingerprinting from #9007), 350ms is spent in `RealFs::load`. This change slashes that figure to ~110ms, which is still *a lot*. About 60ms out of 110ms remaining is spent zeroing memory. Sadly, `AsyncReadExt` API forces us to zero a buffer we're reading into (whether it's via read_to_string or read_exact), but at the very least this commit alleviates unnecessary reallocations. We could probably use something like [simdutf8](https://docs.rs/simdutf8/latest/simdutf8/) to speed up UTF8 validation in this method as well, though that takes only about ~18ms out of 110ms, so while it is significant, I've left that out for now. Memory zeroing is a bigger problem at this point. Before:  After:  /cc @as-cii Release Notes: - Improved performance when loading large files.
Piotr Osiewicz created
1081ba7
Adjust to newer logic from zed-industries/cargo-bundle (#9058)
Zed uses a fork of cargo-bundle, that got upstream changes and https://github.com/zed-industries/cargo-bundle/commit/9e185bd44d968d8039192220603494555afdbb4f into the deploy branch. Remove a TODO and adjust the script to the new packaging logic. Release Notes: - N/A
Kirill Bulatov created
ed8aa6d
Fix panic in layout_line when Y coordinate is too high (#9052)
Release Notes: - N/A
Conrad Irwin created
af56424
Make comment above `util::fs::remove_matching` a doc comment (#9051)
Just this one little thing, noticed it while working on an unrelated pull request. Release Notes: - N/A
Valentine Briese created
aa7be4b
Add clipboard support for Windows (#8978)
Release Notes: - Added Read / Write clipboard support to Windows via copypasta --------- Co-authored-by: Mikayla Maki <mikayla@zed.dev>
EricApostal and Mikayla Maki created
866d791
Fix joining hosted projects (#9038)
Release Notes: - N/A
Conrad Irwin created
f67abd2
vim: smartcase find option (#9033)
Release Notes: - Added option `use_smartcase_find` to the vim-mode
Rom Grk created
d247086
vim: subword motions (#8725)
Add subword motions to vim, inspired by [nvim-spider](https://github.com/chrisgrieser/nvim-spider), [CamelCaseMotion](https://github.com/bkad/CamelCaseMotion). Release Notes: - Added subword motions to vim
Rom Grk created
467a179
Add Elixir symbols in outline view (#8761)
Release Notes: - Improved: Add `@callback`, `@type` and `@typep` Elixir symbols in outline view https://github.com/zed-industries/zed/assets/14976415/208d3def-f49e-41e0-a306-fb8e00317e6b
rauan created
b50f867
Impl drag-drop action for Windows (#8959)
### Description This is a part of #8809 https://github.com/zed-industries/zed/assets/14981363/2b085b9d-8b83-4ac7-8b84-07c679760eba Release Notes: - N/A --------- Co-authored-by: Mikayla Maki <mikayla@zed.dev>
Small White and Mikayla Maki created
e85d484
Fix terminal on Windows (#8999)
### Description Since [this PR](https://github.com/alacritty/alacritty/pull/7796) has been merged, so we can delete the `todo`s in `terminal` module. Release Notes: - N/A
Small White created
2d83580
linux: enable test TextSystem (#9037)
Make text tests work on linux.
Rom Grk created
a90a667
Windows: Add document (#8948)
Release Notes: - N/A
白山風露 created
35c7b5d
Add vulkan linux dependency (#8932)
Release Notes: - Fixed ([#8934](https://github.com/zed-industries/zed/issues/8934)). Optionally, include screenshots / media showcasing your addition that can be included in the release notes. **or** - N/A Signed-off-by: pigletfly <wangbing.adam@gmail.com>
Bing Wang created
ffebe2e
Initial Linux nightly bundles upload (#8913)
Changes Zed CI to build and upload Linux nightly bundles.
* `todo!(linux)` are replaced with `TODO linux` to make `todo!`-based
workflows more convenient
* renames `run-build-dmg` label into `run-bundling`, also renames a few
GH Actions entries to be more generic
* make another upload path for Linux, which keeps a separate file with SHA to version the nightly artifact.
* adds a `*.deb` package building with a couple of caveats, marked with
new `TODO linux` entries:
1. `cargo-bundle` is not very flexible, so it generates artifacts with
the structure and names that we're unable to alter before/during the
generation.
For that, a set of extra steps is made by repacking the *.deb package —
this is not very portable between different Linux distros, so later one
needs to find a way to combine multiple package types in this script.
2. `cargo-bundle` is not able to properly generate the *.msi bundle
despite declaring it in the features:
https://github.com/burtonageo/cargo-bundle/issues/116
Windows needs to invent its own way of bundling or fix the tool.
3. Both `cli` and `zed` binaries are added into the archive under
`/usr/local/bin/` path with their `-$channel` suffix
(-nightly/-preview/-dev/-stable) and a `/usr/local/bin/zed ->
/usr/local/bin/cli-nightly` symlink is made to make CLI work as Zed
launcher:
```
~/work/zed kb/linux-nightly:origin/kb/linux-nightly* ❯ dpkg -c target/zed_amd64.deb
drwxr-xr-x allaptop/allaptop 0 2024-03-06 00:53 ./
drwxr-xr-x allaptop/allaptop 0 2024-03-06 00:53 ./usr/
drwxr-xr-x allaptop/allaptop 0 2024-03-06 00:53 ./usr/local/
drwxr-xr-x allaptop/allaptop 0 2024-03-06 00:53 ./usr/local/bin/
-rwxr-xr-x allaptop/allaptop 8746832 2024-03-06 00:53 ./usr/local/bin/cli-nightly
-rwxr-xr-x allaptop/allaptop 689078560 2024-03-06 00:53 ./usr/local/bin/zed-nightly
drwxr-xr-x allaptop/allaptop 0 2024-03-06 00:53 ./usr/share/
drwxr-xr-x allaptop/allaptop 0 2024-03-06 00:53 ./usr/share/applications/
-rw-r--r-- allaptop/allaptop 153 2024-03-06 00:53 ./usr/share/applications/zed.desktop
drwxr-xr-x allaptop/allaptop 0 2024-03-06 00:53 ./usr/share/icons/
drwxr-xr-x allaptop/allaptop 0 2024-03-06 00:53 ./usr/share/icons/hicolor/
drwxr-xr-x allaptop/allaptop 0 2024-03-06 00:53 ./usr/share/icons/hicolor/1024x1024@2x/
drwxr-xr-x allaptop/allaptop 0 2024-03-06 00:53 ./usr/share/icons/hicolor/1024x1024@2x/apps/
-rw-r--r-- allaptop/allaptop 716288 2024-03-06 00:53 ./usr/share/icons/hicolor/1024x1024@2x/apps/zed.png
drwxr-xr-x allaptop/allaptop 0 2024-03-06 00:53 ./usr/share/icons/hicolor/512x512/
drwxr-xr-x allaptop/allaptop 0 2024-03-06 00:53 ./usr/share/icons/hicolor/512x512/apps/
-rw-r--r-- allaptop/allaptop 239870 2024-03-06 00:53 ./usr/share/icons/hicolor/512x512/apps/zed.png
lrwxrwxrwx allaptop/allaptop 0 2024-03-06 00:53 ./usr/local/bin/zed -> /usr/local/bin/cli-nightly
```
But the CLI does not work under Linux yet and there's no way to install
that CLI from Zed now; Zed binary itself is not able to open
`file/location:12:34`-like things and set up the env properly, but is
able to start or open a directory.
So, this structure can be considered temporary and changed, if needed.
4. Zed Nightly on Linux does not know how to update itself, so all
nightly publishing is not picked up automatically.
5. Rust cache from `main` builds does not get shared between CI jobs,
due to being run in a different CI job that forms a different CI key, so
```
- name: Cache dependencies
uses: swatinem/rust-cache@v2
with:
save-if: ${{ false }}
```
would not work.
This makes Linux bundling jobs long.
Release Notes:
- N/A
Kirill Bulatov created
e85f190
Fix 0 notes versions being always unread (#9030)
Co-Authored-By: Max <max@zed.dev> Co-Authored-By: Nathan <nathan@zed.dev> Release Notes: - Fixed empty notes always showing as unread Co-authored-by: Max <max@zed.dev> Co-authored-by: Nathan <nathan@zed.dev>
Conrad Irwin , Max , and Nathan created
284a57d
Fix panic in open urls (#9032)
Co-Authored-By: Nathan <nathan@zed.dev> Release Notes: - N/A Co-authored-by: Nathan <nathan@zed.dev>
Conrad Irwin and Nathan created