14cd178
ollama: Add deepseek-r1 context size to defaults (#23420)
Peter Tripp created
14cd178
ollama: Add deepseek-r1 context size to defaults (#23420)
Peter Tripp created
aa5fa4b
git: Use a buffer for the panel's commit message (#23308)
This PR changes the `GitPanel` and `GitState` to use a `language::Buffer` for the commit message. This is a small initial step toward remote editing and collaboration support. Release Notes: - N/A --------- Co-authored-by: Max <max@zed.dev>
Cole Miller and Max created
64f9acf
Simplify workspace notification code (#23414)
* Remove `NotificationHandle` trait in favor of just passing `AnyView` - id field wasn't used. * Remove `show_notification_once`, doesn't seem to be needed for its only use. Release Notes: - N/A
Michael Sloan created
8c215d4
Fix pulling metadata out of broken symlinks (#22396)
## Problem
When developing extensions locally, developers will commonly put their
source code in a specific directory. Zed uses this directory to create a
symlink starting from `$HOME/Library/Application
Support/Zed/extensions/installed` (MacOS path). When a developer then
moves this source code and tries to reinstall the extension, Zed will
fail with an unhelpful message (you can check the #Testing section).
## Change Summary
With this PR, we fix this behaviour by handling broken symlinks
specifically when returning the metadata on `fs::metadata`. Today, we
1. Pull the symlink metadata.
2. Return it if the file was not a symlink OR if it is, pull the
metadata for the pointed file.
After this change gets merged, we return the Symlink metadata if the
symlink is broken. This makes the symlink be recreated since we remove
the symlink either way.
## Risks associated with this change
It's possible changing this behaviour will show additional cases where
we are handling broken symlinks incorrectly. I expect this to be a
better scenario AND backwards compatible. We have the same behaviour we
had for 1. existing symlinks 2. normal files.
## Testing
The way I have been reproducing this is by having a private extension of
my own. I install it using the `zed: install dev extension` command
after running `RUST_LOG=debug RUST_BACKTRACE=1 scripts/zed-local -1`.
Then I move the extension to a different directory.
Zed will now keeps a broken link on its `installed` directory:
```
❯ ll
Permissions Size User Date Modified Name
lrwxr-xr-x@ - enrikes 24 Dec 12:15 brazil-config-zed-extension -> /Volumes/workplace/BrazilConfigZedExtension
drwxr-xr-x@ - enrikes 5 Dec 14:48 java
drwxr-xr-x@ - enrikes 12 Dec 13:04 kotlin
drwxr-xr-x@ - enrikes 25 Oct 08:13 rose-pine-theme
```
Before the patch, Zed shows on its logs:
```
2024-12-24T16:44:02+01:00 INFO extension::extension_builder] compiled Rust extension /Users/enrikes/Documents/BrazilConfigZedExtension
[2024-12-24T16:44:02+01:00 INFO extension::extension_builder] compiling grammar brazil_config for extension /Users/enrikes/Documents/BrazilConfigZedExtension
[2024-12-24T16:44:02+01:00 INFO extension::extension_builder] checking out brazil_config parser
[2024-12-24T16:44:04+01:00 INFO extension::extension_builder] compiling brazil_config parser
[2024-12-24T16:44:05+01:00 INFO extension::extension_builder] compiled grammar brazil_config for extension /Users/enrikes/Documents/BrazilConfigZedExtension
[2024-12-24T16:44:05+01:00 INFO extension::extension_builder] finished compiling extension /Users/enrikes/Documents/BrazilConfigZedExtension
[2024-12-24T16:44:05+01:00 ERROR extensions_ui] No such file or directory (os error 2)
Stack backtrace:
0: std::backtrace_rs::backtrace::libunwind::trace
at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/std/src/../../backtrace/src/backtrace/libunwind.rs:116:5
1: std::backtrace_rs::backtrace::trace_unsynchronized
at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
2: std::backtrace::Backtrace::create
at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/std/src/backtrace.rs:331:13
3: anyhow::error::<impl core::convert::From<E> for anyhow::Error>::from
at /Users/enrikes/.cargo/registry/src/index.crates.io-6f17d22bba15001f/anyhow-1.0.94/src/backtrace.rs:27:14
4: <core::result::Result<T,F> as core::ops::try_trait::FromResidual<core::result::Result<core::convert::Infallible,E>>>::from_residual
at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/core/src/result.rs:1989:27
5: <fs::RealFs as fs::Fs>::metadata::{{closure}}
at ./crates/fs/src/fs.rs:603:13
```
After the patch, the extension is installed and the symlink replaced for
a new one pointing to the user's directory choice.
```
2024-12-24T16:53:33.916022+01:00 [INFO] compiled Rust extension /Users/enrikes/Documents/BrazilConfigZedExtension
2024-12-24T16:53:33.916094+01:00 [INFO] compiling grammar brazil_config for extension /Users/enrikes/Documents/BrazilConfigZedExtension
2024-12-24T16:53:33.916225+01:00 [INFO] checking out brazil_config parser
2024-12-24T16:53:35.481602+01:00 [INFO] compiling brazil_config parser
2024-12-24T16:53:35.964189+01:00 [INFO] compiled grammar brazil_config for extension /Users/enrikes/Documents/BrazilConfigZedExtension
2024-12-24T16:53:35.964319+01:00 [INFO] finished compiling extension /Users/enrikes/Documents/BrazilConfigZedExtension
2024-12-24T16:53:36.213608+01:00 [INFO] rebuilt extension index in 39.108542ms
2024-12-24T16:53:36.213835+01:00 [INFO] extensions updated. loading 0, reloading 1, unloading 0
2024-12-24T16:53:36.375928+01:00 [INFO] rebuilt extension index in 34.478167ms
2024-12-24T16:53:36.376054+01:00 [INFO] extensions updated. loading 0, reloading 1, unloading 0
```
and
```
❯ ll
lrwxr-xr-x@ - enrikes 24 Dec 16:53 brazil-config-zed-extension -> /Users/enrikes/Documents/BrazilConfigZedExtension
drwxr-xr-x@ - enrikes 5 Dec 14:48 java
drwxr-xr-x@ - enrikes 12 Dec 13:04 kotlin
drwxr-xr-x@ - enrikes 25 Oct 08:13 rose-pine-theme
```
Release Notes:
- Fix broken symlinks when installing dev extensions
---------
Co-authored-by: Mikayla Maki <mikayla@zed.dev>
Enrique Kessler Martínez and Mikayla Maki created
75c5344
Fix completion labels becoming overly large due to LSP completion items with newlines (#23407)
Reworks https://github.com/zed-industries/zed/pull/23030 and https://github.com/zed-industries/zed/pull/15087 Closes https://github.com/zed-industries/zed/issues/23352 Closes https://github.com/zed-industries/zed/issues/23310 Zed's completion items use `label` from LSP completion items as a base to show in the list: https://github.com/zed-industries/zed/blob/d290da7dac922fdc67c4774cdd371fba23fe62e3/crates/project/src/lsp_store.rs#L4371-L4374 Besides that, certain language plugins append `detail` or `label_details.description` as a suffix: https://github.com/zed-industries/zed/blob/d290da7dac922fdc67c4774cdd371fba23fe62e3/crates/languages/src/vtsls.rs#L178-L188 Either of these 3 properties may return `\n` (or multiple) in it, spoiling Zed's completion menu, which uses `UniformList` to render those items: a uniform list uses common, minimum possible height for each element, and `\n` bloats that overly. Good approach would be to use something else: https://github.com/zed-industries/zed/issues/21403 but that has its own drawbacks and relatively hard to use instead (?). We could follow VSCode's approach and move away all but `label` from `CodeLabel.text` to the side, where the documentation is, but that does not solve the issue with `details` having newlines. So, for now, sanitize all labels and remove any newlines from them. If newlines are found, also replace whitespace sequences if there's more than 1 in a row. Later, this approach can be improved similarly to how Helix and Zed's inline completions do: rendering a "ghost" text, showing the completion's edit applied to the editor. Release Notes: - Fixed completion labels becoming overly large due to LSP completion items with newlines
Kirill Bulatov created
94189e1
Add emacs mark mode (#23297)
Updates #21927 Replaces https://github.com/zed-industries/zed/pull/22904 Closes #8580 Adds actions (default keybinds with emacs keymap): - editor::SetMark (`ctrl-space` and `ctrl-@`) - editor::ExchangeMark (`ctrl-x ctrl-x`) Co-Authored-By: Peter <peter@zed.dev> Release Notes: - Add Emacs mark mode (`ctrl-space` / `ctrl-@` to set mark; `ctrl-x ctrl-x` to swap mark/cursor) - Breaking change: `selection` keyboard context has been replaced with `selection_mode` --------- Co-authored-by: Peter <peter@zed.dev>
Conrad Irwin and Peter created
c4542ca
zeta: Make the Jump to Edit callout pop up more (#23404)
| Before | After | |--------|--------| | <img width="1328" alt="Screenshot 2025-01-21 at 11 20 49 AM" src="https://github.com/user-attachments/assets/ad8e3017-122a-4ebd-b1f5-5eb41cc3725a" /> | <img width="1328" alt="Screenshot 2025-01-21 at 11 19 39 AM" src="https://github.com/user-attachments/assets/a0dcbd52-6aca-43fa-97ee-6efde15c8bc1" /> | Release Notes: - N/A
Danilo Leal created
d011b97
project_panel: Adjust entry background and border colors (#23403)
Follow up to https://github.com/zed-industries/zed/pull/22658 This PR ensures the background and border color of a project panel entry is exactly the same with one exception: if the item is focused, active, and not with mouse down. The point is to not be able to see the border at all given they're there to act sort of akin to CSS's `outline` (which doesn't add up to the box model). Please let me know if there is any edge case I either messed up here or didn't account for. https://github.com/user-attachments/assets/29c74f6a-b027-4d19-a7de-b9614f0d7859 Release Notes: - N/A
Danilo Leal created
f33d02c
lsp_store: Do not associate a language server with the language for symbol highlighting (#23401)
This unblocks work on #22182; a single language server might actually be required by multiple languages (think of e.g. C/C++, Javascript/Typescript), in which case it doesn't make sense to use a single grammar. We already use primary language of a buffer for highlights and this PR makes this the only supported syntax highlighting flavour for returned symbols. Closes #ISSUE Release Notes: - N/A
Piotr Osiewicz created
e2c7934
Show inline completion popover for hard to spot single edits (#23385)
If a suggested edit is a single character insert or a single line deletion, we'll show the diff popover to make it stand out more. Release Notes: - N/A Co-authored-by: Danilo <danilo@zed.dev>
Agus Zubiaga and Danilo created
d40177c
Fix project entry rename in Remote Development (#23382)
Closes #22883 To fix the problem, we move `handle_rename_project_entry` from `Worktree` to `LspStore` and register it there. This way it becomes available both in local and headless projects and this avoids the duplication. Release Notes: - Fixed renaming project entries in Remote Development
Andrew Borg (Kashin) created
cc1af7d
Display keymap errors on initial load (#23394)
Also fixes issue introduced in #23113 where changes to keyboard layout would not cause reload of keymap configuration. Closes #20531 Release Notes: - N/A
Michael Sloan created
04c04e8
windows: Fix FS-related issues (#23369)
I've noticed an occasional error: `ignoring event C:\some\path\to\file outside of root path \\?\C:\some\path`. This happens because UNC paths always fail to match with non-UNC paths during operations like `strip_prefix` or `starts_with`. To address this, I changed the types of some key parameters to `SanitizedPath`. With this adjustment, FS events are now correctly identified, and under the changes in this PR, the `test_rescan_and_remote_updates` test also passes successfully on Windows. Release Notes: - N/A
张小白 created
8f87b56
Wire up `@mention`ed files in assistant2 (#23389)
`@mention`ed files in assistant2 now get replaced by the full path of the file in what gets sent to the model, while rendering visually as just the filename (in a crease, so they can only be selected/deleted as a whole unit, not character by character). https://github.com/user-attachments/assets/a5867a93-d656-4a17-aced-58424c6e8cf6 Release Notes: - N/A --------- Co-authored-by: João Marcos <joao@zed.dev> Co-authored-by: Conrad <conrad@zed.dev>
Richard Feldman , João Marcos , and Conrad created
aacd80e
Prefer later bindings in keymap section for display in UI (#23378)
Closes #23015 Release Notes: - Improved which keybindings are selected for display. Now later entries within `bindings` will take precedence. The default keymaps have been updated accordingly.
Michael Sloan created
919703e
Toggle inline completion menu from keyboard (#23380)
Agus Zubiaga created
3c0acde
docs: Add troubleshooting section warning about RUSTFLAGS env var (#23354)
According to #23223, manually setting `RUSTFLAGS` env var overrides settings in `.cargo/config.toml`. Since users possibly may set their own `RUSTFLAGS` when building, this creates an avenue where builds may fail for really strange reasons that are difficult to debug. This PR adds notes to the troubleshooting section to avoid setting `RUSTFLAGS`, and offers alternatives which do not conflict. This problem most recently affected nightly CI builders since we had been setting `RUSTFLAGS` in our workflows to enable custom things like gles or compiling with a specific target cpu. PR #23117 caused builds to fail unless they were compiled with `-C target-feature=+crt-static`, which due to this issue the `RUSTFLAGS` env var we set overrode the `config.toml` compile flags, causing our builds to fail. Release Notes: - N/A
Cherry created
36c7b3e
Hide "Edit prediction" tooltip when menu is open (#23377)
Release Notes: - N/A
Agus Zubiaga created
a22d8ef
Add support for various action keys to Linux keymap (#22997)
Adds support for Cut, Copy, Paste, Undo, Redo, New, Open, Save, and Find keys to the default keymap. These keys can be found on old keyboards, but also custom layouts like [Extend](https://dreymar.colemak.org/layers-extend.html). Release Notes: - Added support for the Cut, Copy, Paste, Undo, Redo, New, Open, Save, and Find keys to the default keymap.
Jules Bertholet created
4b4876d
Document `KeymapFile` and `KeymapSection` for display in hovers (#23375)
Release Notes: - N/A
Michael Sloan created
fed4b48
git: Skip directories in git status output (#23300)
The output of `git status --porcelain=v1` includes untracked directories, i.e. directories that have no tracked files beneath. Since we have our own way of computing a "summary" status for each directory in a repo, this is not helpful for Zed; and it interferes with our handling of nested repos. So just skip these lines in the output. Closes #23133 Release Notes: - Fix project panel colors when one git repository is nested beneath another
Cole Miller created
5f59536
Fix older Anthropic models not supporting `-latest` tags (#23372)
- Closes: https://github.com/zed-industries/zed/issues/22322
Peter Tripp created
73001a7
python: Add capture groups for builtin types, builtin attribute decorators, class inheritance, function arguments and definition keywords (#21454)
Add capture groups for builtin types, builtin attribute decorators, class inheritance, function arguments and definition keywords. Related to #14892 Release Notes: - Improved syntax highlight for Python: new capture groups for `@function.arguments`, `@function.kwargs`, `@type.class.inheritance`, `@keyword.definition`, `@attribute.builtin` and `@type.builtin`.
Elisiário Couto created
3282398
Update `.mailmap` (#23366)
This PR updates the `.mailmap` file to merge some more commit authors. Release Notes: - N/A
Marshall Bowers created
8bd49b0
git_ui: Capitalize co-author prefix (#23365)
This PR capitalizes the co-author prefix, as this is the way GitHub writes it in their [docs](https://docs.github.com/en/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/creating-a-commit-with-multiple-authors#creating-co-authored-commits-on-the-command-line). Release Notes: - N/A
Marshall Bowers created
d0db059
assistant2: Update message editor placeholder (#23363)
To make the mention and keyboard navigability discoverable. Release Notes: - N/A
Danilo Leal created
40a6b0a
assistant2: Adjust "Recent" header label design in context picker (#23364)
Just a little design fine-tune. | Before | After | |--------|--------| | <img width="454" alt="Screenshot 2025-01-20 at 12 13 10 PM" src="https://github.com/user-attachments/assets/b27372f2-00f5-40f4-927d-0d831ec4b90d" /> | <img width="454" alt="Screenshot 2025-01-20 at 12 12 17 PM" src="https://github.com/user-attachments/assets/207d08da-d75e-4c60-a6eb-cb1549b5925c" /> | Release Notes: - N/A
Danilo Leal created
919803a
Require accepting ToS when enabling zeta (#23255)
Note: Design hasn't been reviewed yet, but the logic is done When the user switches the inline completion provider to `zed`, we'll show a modal prompting them to accept terms if they haven't done so: https://github.com/user-attachments/assets/3fc6d368-c00a-4dcb-9484-fbbbb5eb859e If they dismiss the modal, they'll be able to get to it again from the inline completion button: https://github.com/user-attachments/assets/cf842778-5538-4e06-9ed8-21579981cc47 This also stops zeta sending requests that will fail immediately when ToS are not accepted. Release Notes: - N/A --------- Co-authored-by: Richard <richard@zed.dev> Co-authored-by: Danilo Leal <daniloleal09@gmail.com> Co-authored-by: Joao <joao@zed.dev>
Agus Zubiaga , Richard , Danilo Leal , and Joao created
5bb696e
keybindings: Fix AcceptPartialInlineCompletion on macOS (#23357)
Related issue: https://github.com/zed-industries/zed/issues/20167 Release Notes: - Changed the default keybinding to accept partial inline completions from `ctrl-right` to `ctrl-cmd-right` on macOS, because `ctrl-right` is already bound to jump to the end of the line. Co-authored-by: Antonio <antonio@zed.dev> Co-authored-by: Kirill <kirill@zed.dev> Co-authored-by: Bennet <bennet@zed.dev>
Thorsten Ball , Antonio , Kirill , and Bennet created
571275e
tab_switcher: Preserve selected position on closed tabs (#22861)
When the user closes a tab, the tab switcher will now select the tab at the same position. This feature is especially relevant for keyboard users when you want to close multiple consecutive tabs with `<Ctrl-Backspace>`. Please see the discussion at https://github.com/zed-industries/zed/discussions/22791 for full motivation and the quick demo. Release Notes: - tab_switcher: Preserve selected position when tab is closed
Andrew Borg (Kashin) created
938b7bb
workspace: Add actions for cycling between windows (#23356)
Closes #22740 I haven't assigned any default keybindings to these actions because it might conflict with existing OS bindings. Preview: https://github.com/user-attachments/assets/7c62cb34-2747-4674-a278-f0998e7d17f9 Release Notes: - Added `workspace::ActivateNextWindow` and `workspace::ActivatePreviousWindow` actions for cycling between windows.
tims created
0ff803f
workspace: Add action to move focused panel to next dock position (#23317)
This Pull Request introduces a new command `workspace: move focused panel to next position` which finds the currently focused panel, if such panel exists, and moves it to the next valid dock position, following the order of `Left → Bottom → Right` and then starting again from the left position. In order to achieve this the following changes have been introduced: * Add a new default implementation for `PanelHandle`, namely `PanelHandle::move_to_next_position` which leverages `PanelHandle::position`, `PanelHandle::position_is_valid` and `PanelHandle::set_position` methods to update the panel's position to the next valid position. * Add a new method to the `workspace` module, ` move_focused_panel_to_next_position`, which is responsible for finding the currently focused panel, if such a panel exists, and calling the `move_to_next_position` method in the panel's handle. * Add a new action to the `workspace` module, `MoveFocusedPanelToNextPosition`, which is handled by the `move_focused_panel_to_next_position` method. Tests have also been added to the `workspace` module in order to guarantee that the action is correctly updating the focused panel's position. Here's a quick video of it, in action 🔽 https://github.com/user-attachments/assets/264d382b-5239-40aa-bc5e-5d569dec0734 Closes #23115 Release Notes: - Added new command to move the focused panel to the next valid dock position – `workspace: move focused panel to next position` .
Dino created
7302be8
lsp: Use `Path` instead of `String` for path handling (#22762)
During my work on PR #22616, while trying to fix the
`test_reporting_fs_changes_to_language_servers` test case, I noticed
that we are currently handling paths using `String` in some places.
However, this approach causes issues on Windows.
This draft PR modifies `rebuild_watched_paths_inner` and
`glob_literal_prefix`. For example, take the `glob_literal_prefix`
function modified in this PR:
```rust
assert_eq!(
glob_literal_prefix("node_modules/**/*.js"),
"node_modules"
); // This works on Unix, fails on Windows
assert_eq!(
glob_literal_prefix("node_modules\\**\\*.js"),
"node_modules"
); // This works on Windows
assert_eq!(
glob_literal_prefix("node_modules\\**/*.js"),
"node_modules"
); // This fails on Windows
```
The current implementation treats path as `String` and relies on `\` as
the path separator on Windows, but on Windows, both `/` and `\` can be
used as separators. This means that `node_modules\**/*.js` is also a
valid path representation.
There are two potential solutions to this issue:
1. **Continue handling paths with `String`**, and on Windows, replace
all `/` with `\`.
2. **Use `Path` for path handling**, which is the solution implemented
in this PR.
### Advantages of Solution 1:
- Simple and direct.
### Advantages of Solution 2:
- More robust, especially in handling `strip_prefix`.
Currently, the logic for removing a path prefix looks like this:
```rust
let path = "/some/path/to/file.rs";
let parent = "/some/path/to";
// remove prefix
let file = path.strip_prefix(parent).unwrap(); // which is `/file.rs`
let file = file.strip_prefix("/").unwrap();
```
However, using `Path` simplifies this process and makes it more robust:
```rust
let path = Path::new("C:/path/to/src/main.rs");
let parent = Path::new("C:/path/to/src");
let file = path.strip_prefix(&parent).unwrap(); // which is `main.rs`
let path = Path::new("C:\\path\\to/src/main.rs");
let parent = Path::new("C:/path/to\\src\\");
let file = path.strip_prefix(&parent).unwrap(); // which is `main.rs`
```
Release Notes:
- N/A
---------
Co-authored-by: Kirill Bulatov <mail4score@gmail.com>
张小白 and Kirill Bulatov created
7578834
Update actions/upload-artifact digest to 65c4c4a (#23197)
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [actions/upload-artifact](https://redirect.github.com/actions/upload-artifact) | action | digest | `6f51ac0` -> `65c4c4a` | --- ### Configuration 📅 **Schedule**: Branch creation - "after 3pm on Wednesday" in timezone America/New_York, Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- Release Notes: - N/A <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xMDcuMCIsInVwZGF0ZWRJblZlciI6IjM5LjEwNy4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
renovate[bot] and renovate[bot] created
35dad05
nix: Update nix flake (#23343)
Closes #23342 Ran `nix flake update` and did some cleanup in shell.nix to follow nix [best practices](https://discourse.nixos.org/t/how-to-solve-libstdc-not-found-in-shell-nix/25458/6). Prior to running `nix flake update` `strings "$(echo "$LD_LIBRARY_PATH" | tr : "\n" | grep "gcc")/libstdc++.so.6" | grep "CXXABI_1.3.15" CXXABI_1.3.15` Does not find `CXXABI_1.3.15` After running `nix flake update` `strings "$(echo "$LD_LIBRARY_PATH" | tr : "\n" | grep "gcc")/libstdc++.so.6" | grep "CXXABI_1.3.15" CXXABI_1.3.15` Finds `CXXABI_1.3.15` Launching Zed 0.168.3 inside Zed's nix development shell now launches with no errors. Release Notes: - N/A
AidanV created
1d5499b
windows: Rename some constants and functions in GPUI (#23348)
This PR renames the constants and functions previously introduced in PR#23283. Since the changes are within the GPUI crate, I renamed these from `**_ZED_**` to `**_GPUI_**`. Release Notes: - N/A
张小白 created
ac8220b
Overwrite gzip output without prompting in bundling scripts (#23340)
Release Notes: - N/A
Michael Sloan created
711dc21
Load all key bindings that parse and use markdown in error notifications (#23113)
* Collects and reports all parse errors * Shares parsed `KeyBindingContextPredicate` among the actions. * Updates gpui keybinding and action parsing to return structured errors. * Renames "block" to "section" to match the docs, as types like `KeymapSection` are shown in `json-language-server` hovers. * Removes wrapping of `context` and `use_key_equivalents` fields so that `json-language-server` auto-inserts `""` and `false` instead of `null`. * Updates `add_to_cx` to take `&self`, so that the user keymap doesn't get unnecessarily cloned. In retrospect I wish I'd just switched to using TreeSitter to do the parsing and provide proper diagnostics. This is tracked in #23333 Release Notes: - Improved handling of errors within the user keymap file. Parse errors within context, keystrokes, or actions no longer prevent loading the key bindings that do parse.
Michael Sloan created
c929533
editor: Hide horizontal scrollbar if not visible (#23337)
This PR fixes two visual issues, that were caused by the fact that we were always painting the horizontal scrollbar even if there is no horizontal scrolling possible Obscuring deleted lines when using the inline assistant: https://github.com/user-attachments/assets/f8460c3f-403e-40a6-8622-65268ba2d875 Cutting off text even when horizontal scrolling is not possible: https://github.com/user-attachments/assets/23c909f7-1c23-4693-8edc-40a2f089d4a8 This issue was only present in some themes (e.g. Nord, Catpuccin) Closes #22716 Release Notes: - Fixed an issue where horizontal scrollbars of editors would always be painted (even if there is no horizontal scrolling to be done)
Bennet Bo Fenner created
8c09a3d
assistant2: Use `notify_async_err` for error notifications (#23330)
Release Notes: - N/A
Michael Sloan created
0199eca
Allow filling co-authors in the git panel's commit input (#23329)
https://github.com/user-attachments/assets/78db908e-cfe5-4803-b0dc-4f33bc457840
* starts to extract usernames out of `users/` GitHub API responses, and
pass those along with e-mails in the collab sessions as part of the
`User` data
* adjusts various prefill and seed test methods so that the new data can
be retrieved from GitHub properly
* if there's an active call, where guests have write permissions and
e-mails, allow to trigger `FillCoAuthors` action in the context of the
git panel, that will fill in `co-authored-by:` lines, using e-mail and
names (or GitHub handle names if name is absent)
* the action tries to not duplicate such entries, if any are present
already, and adds those below the rest of the commit input's text
Concerns:
* users with write permissions and no e-mails will be silently omitted
— adding odd entries that try to indicate this or raising pop-ups is
very intrusive (maybe, we can add `#`-prefixed comments?), logging seems
pointless
* it's not clear whether the data prefill will run properly on the
existing users — seems tolerable now, as it seems that we get e-mails
properly already, so we'll see GitHub handles instead of names in the
worst case. This can be prefilled better later.
* e-mails and names for a particular project may be not what the user
wants.
E.g. my `.gitconfig` has
```
[user]
email = mail4score@gmail.com
# .....snip
[includeif "gitdir:**/work/zed/**/.git"]
path = ~/.gitconfig.work
```
and that one has
```
[user]
email = kirill@zed.dev
```
while my GitHub profile is configured so, that `mail4score@gmail.com` is
the public, commit e-mail.
So, when I'm a participant in a Zed session, wrong e-mail will be
picked.
The problem is, it's impossible for a host to get remote's collaborator
git metadata for a particular project, as that might not even exist on
disk for the client.
Seems that we might want to add some "project git URL <-> user name and
email" mapping in the settings(?).
The design of this is not very clear, so the PR concentrates on the
basics for now.
When https://github.com/zed-industries/zed/pull/23308 lands, most of the
issues can be solved by collaborators manually, before committing.
Release Notes:
- N/A
Kirill Bulatov created
ac214c5
Delay hiding git blame tooltip (#22644)
It's easy to overshoot the bottom of the tooltip when cursoring to a button, such as opening the commit from a blame tooltip. Before this change the tooltip would immediately disappear, and now it sticks around for a bit. Also: * Shares the implementation with `elements/text.rs`. This will particularly be handy when it makes use of hoverable tooltips. * Improves the fix to #21657. - Now the element will no longer think it has an active tooltip that it registers with the window. - It will instead display the next available tooltip, whereas I believe before the next available tooltip would be suppressed. * Fixes bug where `cx.refresh()` wasn't called when text tooltip is hidden due to a mouse down event. * Ports over fix in https://github.com/zed-industries/zed/pull/14832 to `elements/text.rs` Release Notes: - The tooltip for inline git blame now waits a bit before disappearing when the mouse leaves it.
Michael Sloan created
985544f
assistant2: Try again with fix use of rust-analyzer with `"workspace": false` (#23331)
I thought #23326 did the trick, but it didn't Release Notes: - N/A
Michael Sloan created
10f3586
lsp: Skip computation of `edits_since_save` when there are no disk based diagnostics (#23269)
Thought of this improvement while @ConradIrwin and I were looking into whether this code is misbehaving. It seems not to be. Release Notes: - N/A
Michael Sloan created
9a7b73b
assistant2: fix use with rust-analyzer `"workspace": false` (#23326)
Before this was getting errors about `TestAppContext` not existing. Release Notes: - N/A
Michael Sloan created
8c92da4
terminal: Add scrollbar (#23256)
Closes #4798 This PR implements a scrollbar for the terminal by turning `ScrollableHandle` into a trait, allowing us to implement a custom scroll handle, `TerminalScrollHandle`. It works by converting terminal lines into pixels that `ScrollableHandle` understands. When `ScrollableHandle` provides a changed offset (e.g., when you drag the scrollbar), we convert this pixel offset back into the number of lines to scroll and update the terminal content accordingly. While the current version works as expected, I believe the scrollbar's offset updates could potentially be turned into an event. This event could then be subscribed to in `TerminalView`, not needing to update the terminal's offset in the `render` method as it might have performance implications. Further ideas on this are welcome. Preview: https://github.com/user-attachments/assets/560f0aac-4544-4007-8f0b-8833386f608f Todo: - [x] Experiment with custom scrollbar responding to terminal mouse scroll - [x] Refactor existing scrollbar handle into a trait - [x] Update terminal to use the scrollbar trait instead of a custom scrollbar implementation - [x] Figure out how scrollbar events like mouse drag should notify the terminal to update its state - [x] Code clean up - [x] Scrollbar hide setting for terminal Release Notes: - Added scrollbar to the terminal
tims created
728a874
windows: Improve foreground task dispatching on Windows (#23283)
Closes #22653 After some investigation, I found this bug is due to that sometimes `foreground_task` is not dispatched to the main thread unless there is user input. The current Windows implementation works as follows: when the `WindowsDispatcher` receives a `foreground_task`, it adds the task to a queue and uses `SetEvent(dispatch_event)` to notify the main thread. The main thread then listens for notifications using `MsgWaitForMultipleObjects(&[dispatch_event])`. Essentially, this is a synchronous method, but it is not robust. For example, if 100 `foreground_task`s are sent, `dispatch_event` should theoretically be triggered 100 times, and `MsgWaitForMultipleObjects(&[dispatch_event])` should receive 100 notifications, causing the main thread to execute all 100 tasks. However, in practice, some `foreground_task`s may not get a chance to execute due to certain reasons. As shown in the attached video, when I don't move the mouse, there are about 20-30 `foreground_task`s waiting in the queue to be executed. When I move the mouse, `run_foreground_tasks()` is called, which processes the tasks in the queue. https://github.com/user-attachments/assets/83cd09ca-4b17-4a1f-9a2a-5d1569b23483 To address this, this PR adopts an approach similar to `winit`. In `winit`, an invisible window is created for message passing. In this PR, we use `PostThreadMessage` to directly send messages to the main thread. With this implementation, when 100 `foreground_task`s are sent, the `WindowsDispatcher` uses `PostThreadMessageW(thread_id, RUNNABLE_DISPATCHED)` to notify the main thread. This approach enqueues 100 `RUNNABLE_DISPATCHED` messages in the main thread's message queue, ensuring that each `foreground_task` is executed as expected. The main thread continuously processes these messages, guaranteeing that all 100 tasks are executed. Release Notes: - N/A
张小白 created
5138e6a
Fix accepting partial inline completion (#23312)
Release Notes: - Fixed a bug that could prevent accepting a partial inline completion.
Antonio Scandurra created
bf0578e
Remove gap in layout of notifications (#23303)
* Increases width of notification message to remove a gap * Puts the close button in the top right Release Notes: - N/A Co-authored-by: Nate <nate@zed.dev>
Michael Sloan and Nate created
e338a17
assistant2: Adjust "generating" state design (#23299)
To ensure message readability is not affected in any way. https://github.com/user-attachments/assets/9a2ad949-1a8a-4c31-ad3c-db70f48e5d98 Release Notes: - N/A
Danilo Leal created