0a8e9c0
Use a temporary fork of oo7 (#22751)
Click to expand commit body
Release Notes: - N/A
Cole Miller created
0a8e9c0
Use a temporary fork of oo7 (#22751)
Release Notes: - N/A
Cole Miller created
aa0eaea
Double max event count for zeta (#22772)
Release Notes: - N/A Co-authored-by: Thorsten <thorsten@zed.dev>
Antonio Scandurra and Thorsten created
fb272c0
ssh remoting: Improve error message if netcat is missing (#22767)
Closes #22752 Release Notes: - N/A
Thorsten Ball created
bcc6d95
assistant2: Make context pill names work like editor tabs (#22741)
Context pills for files will now only display the basename of the file. If two files have the same base name, we will also show their parent directories, mimicking the behavior of editor tabs. https://github.com/user-attachments/assets/ee88ee3b-80ff-4115-9ff9-8fe4845a67d8 Note: The double `/` in the file picker is a known separate issue. Release Notes: - N/A --------- Co-authored-by: Danilo <danilo@zed.dev> Co-authored-by: Danilo Leal <daniloleal09@gmail.com>
Agus Zubiaga , Danilo , and Danilo Leal created
a827f54
Reduce amount of workspace serialization happening (#22730)
Part of https://github.com/zed-industries/zed/issues/16472 Reduces amount of workspace serialization happening by: * fixing the deserialization logic: now it does not set panels that are hidden to active * cleaning up `active_panel_index` for docks that are closed, to avoid emitting extra events for such closed docks * adjusting outline panel to drop active editor subscriptions on deactivation — this way, `cx.observe` on the dock with outline panel is not triggered (used to be triggered on every selection change before) * adjusting workspace dock drag listener to remember previous coordinates and only resize the dock if those had changed * adjusting workspace pane event listener to ignore `pane::Event::UserSavedItem` and `pane::Event::ChangeItemTitle` that seem to happen relatively frequently but not influence values that are serialized for the workspace * not using `cx.observe` on docks, instead explicitly serializing on panel zoom and size changes Release Notes: - Reduced amount of workspace serialization happening
Kirill Bulatov created
4c47728
Set `TERM` env variable inside the terminal (#22615)
Closes #17991 Release Notes: - Set the `TERM` environment variable inside the terminal Currently the terminal inherits the `TERM` variable from the parent process. However this can cause issues with programs that rely on this variable to make sure certain features are present. For example not supporting backspaces making the terminal almost unusable.
Julius de Boer created
e56b692
Make expand excerpt apply to all excerpts in selections (#22748)
Closes #22720 Release Notes: - `ExpandExcerpts` (`shift+enter` by default) now expands all excerpts that have selected text, rather than just excerpts that contain the end of a selection.
Michael Sloan created
810b37c
Rename the `OpenFile` action to `OpenSelectedFilename` to better reflect its function (#22494)
Release Notes: - Renamed the `OpenFile` action to `OpenSelectedFilename` for clarity
Cole Miller created
2ba9160
Fix nix shell (#22091)
Add back necessary packages for linux user from https://github.com/zed-industries/zed/pull/21075/files#diff-dd972f906c9914eb70fae1db9cf66baa653e6b643bbdedeaa0070939abc3fb56L20-L22 Release Notes: - N/A
wuliuqii created
410b4bd
Show error alert when there's an error opening file with native OS picker (#22671)
Closes #20814 by showing error alert if there's some error after OS native File -> Open https://github.com/user-attachments/assets/ce092831-4b55-4e20-8ffa-8e60eaf6364d The implementation here is the same as in handle_external_paths_drop function (when users uses drag and drop to open the file): https://github.com/zed-industries/zed/blob/de08e47e5bc94afdee81fd99f838100fc577a98c/crates/workspace/src/pane.rs#L2810 Release Notes: - Added an error alert when there's an error opening file with native OS picker.
spotikhanov created
dc0075b
Fix empty title in Recent Projects (#21952)
Close #13595
Release Notes:
- Fixed empty title in Recent Projects.
---
| Before | After |
| --- | --- |
| <img width="695" alt="SCR-20241213-nzxr"
src="https://github.com/user-attachments/assets/f19a0bad-d542-44cd-85c1-89386d396f27"
/> | <img width="625" alt="image"
src="https://github.com/user-attachments/assets/0d2afef7-4cd2-43eb-9046-c169df2eb8a0"
/> |
This is because the `LocalPathsOrder` get empty list.
```
[crates/recent_projects/src/recent_projects.rs:385:9] &location = Local(
LocalPaths(
[
"/Users/jason/Library/Application Support/Zed/prettier/node_modules",
],
),
LocalPathsOrder(
[],
),
)
[crates/recent_projects/src/recent_projects.rs:386:9] &paths = [
"~/Library/Application Support/Zed/prettier/node_modules",
]
[crates/recent_projects/src/recent_projects.rs:385:9] &location = Local(
LocalPaths(
[
"/Users/jason/github/tree-sitter-csv",
],
),
LocalPathsOrder(
[],
),
)
[crates/recent_projects/src/recent_projects.rs:386:9] &paths = [
"~/github/tree-sitter-csv",
]
[crates/recent_projects/src/recent_projects.rs:385:9] &location = Local(
LocalPaths(
[
"/Users/jason/work/autocorrect/autocorrect-website/dist",
],
),
LocalPathsOrder(
[],
),
)
```
Jason Lee created
e08eba8
Update Rust crate tree-sitter-python to v0.23.6 (#22557)
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [tree-sitter-python](https://redirect.github.com/tree-sitter/tree-sitter-python) | workspace.dependencies | patch | `0.23.5` -> `0.23.6` | --- ### Release Notes <details> <summary>tree-sitter/tree-sitter-python (tree-sitter-python)</summary> ### [`v0.23.6`](https://redirect.github.com/tree-sitter/tree-sitter-python/releases/tag/v0.23.6) [Compare Source](https://redirect.github.com/tree-sitter/tree-sitter-python/compare/v0.23.5...v0.23.6) **NOTE:** Download `tree-sitter-python.tar.xz` for the *complete* source code. </details> --- ### 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:eyJjcmVhdGVkSW5WZXIiOiIzOS44NS4wIiwidXBkYXRlZEluVmVyIjoiMzkuODUuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
renovate[bot] and renovate[bot] created
92b9d80
Silence unnecessary log (#22750)
It is expected that an unsaved buffer would have no file. Release Notes: - N/A
Conrad Irwin created
6fce536
project_panel: Refine selection, copying, and deletion behavior (#22658)
Closes #22655 A more detailed write-up for this change can be found in the issue itself. Here, I'm just providing previews after the change. The preview before the change can be found in the attached issue. 1. While selecting multiple entries, the last clicked entry should be selected. [a.webm](https://github.com/user-attachments/assets/2add69c3-82a9-4e45-92e8-366aaf9b298a) 2. When holding `Ctrl`/`Cmd` on an entry, there should be clear visual feedback to indicate whether the entry is selected or marked. [b.webm](https://github.com/user-attachments/assets/2cefb8aa-e7d0-4929-9efa-89a4329f428b) 3. When only one entry is marked, but it’s different from the selection, operations should prioritize the selected entry. This let's you do quick one-off actions without disrupting the marked state. [c.webm](https://github.com/user-attachments/assets/8e7ae0c0-4387-49b9-9761-5d02a1c21a84) 4. When more than one entries are marked, operations should prioritize the marked entries. If the selection differs from the marked entries, it should not interfere with operations on the marked entries. This let's you do actions on multiple marked entries without needing to adjust the selection. [d.webm](https://github.com/user-attachments/assets/165a74be-cbe9-48ac-b558-2562485ea224) Release Notes: - Improved project panel selection, copying, and deletion behavior, to be more predictable.
tims created
e7ca39d
vim: Fix VisualYankLine (#22416)
Closes #22388 Release Notes: - Fixed Visual Mode Use `Y` Yank Line --------- Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
0x2CA and Conrad Irwin created
7d0c571
linux: Prevent target file from being trashed when trashing symlink (#22704)
Closes #22399 Currently, the target file is being trashed when trashing a symlink, and the symlink remains intact. Symlinks are not handled separately yet, so when `open` is used on a symlink, it gets resolved to the target file. To fix this, we can get the file descriptor of the symlink by passing `libc::O_PATH | libc::O_NOFOLLOW` flags to `open`, and then pass this file descriptor to the existing `trash::trash_file` from `ashpd`. However, this would result in an error because `ashpd` currently does not support trashing symlink files. I have created an issue for it here: [https://github.com/bilelmoussaoui/ashpd/issues/255](https://github.com/bilelmoussaoui/ashpd/issues/255). For the time being, this PR partially fixes the issue by removing the symlink without trashing so that the target file won't be affected. Once the upstream bug is fixed, we can switch this remove action back to trashing. Release Notes: - Fixed target file from being trashed when trashing symlink on Linux.
tims created
d2d1779
linux: Add `keyboard_layout` and `on_keyboard_layout_change` support (#22736)
No issue, as the functionality is currently not being used in Zed. This is more of a GPUI improvement. Currently, `keyboard_layout` and `on_keyboard_layout_change` are already handled on macOS. This PR implements the same for X11 and Wayland. Linux supports up to 4 keyboard layout groups (e.g., Group 0: English US, Group 1: Bulgarian, etc). On X11 and Wayland, `event` provides a new active group, which maps to the `layout_index`. We already store keymap state from where we can get the current `layout_index`. By comparing them, we determine if the layout has changed. X11: <img src="https://github.com/user-attachments/assets/b528db77-1ff2-4f17-aac5-7654837edeb9" alt="x11" width="300px" /> Wayland: <img src="https://github.com/user-attachments/assets/2b4e2a30-b0f4-495c-96bb-7bca41365d56" alt="wayland" width="300px" /> Release Notes: - N/A
tims created
76d18f3
Disable inline completions in Vim normal mode (#22439)
This is harmful for user experience and at best requires a user setting. This was committed as part of https://github.com/zed-industries/zed/pull/21739 however that change had no relevant release notes and no relevant settings. The issue #22343 shows how this can result in user experience regression: deleting a text fragment can reinsert it back, and it's thus unclear if the deletion has even worked. Maybe this can be reenabled in some very restrictive setup, and put behind a setting, but it can't be unconditional. Completions should activate when the user signals intent of entering code - for example, if instead of `de` to delete a fragment, I press `ce` to replace it, I would naturally expect inline completions to show up. Note: The linked PR added more code in vim crate to refresh inline completions in normal mode. I'm keeping that code around in this commit, so that this can be the minimal fix to the linked issue -- with the assumption that maybe there's some way in the future to reenable this in a subset of cases that don't result in confusing / broken UX. If that is not true the code might need further cleanup. Let me know if you'd rather see removal of those changes in this PR as well. Closes #22343. Release Notes: - Fixes inline completions showing up in Vim normal mode.
Arseny Kapoulkine created
7fa30f4
html: Use `@attribute` highlight capture for HTML attributes (#20752)
`@attribute` is the very first query on the https://zed.dev/docs/extensions/languages#syntax-highlighting captures list, we should be using it! This PR changes the highlights queries for HTML to use the `@attribute` capture instead of the `@property` capture for `attribute_name` nodes. Release Notes: - N/A Co-authored-by: Marshall Bowers <elliott.codes@gmail.com>
uncenter and Marshall Bowers created
7075f34
Fix uploading ssh binaries when ssh cds (#22744)
The code we have assumes that when you run commands over ssh they run in your home directory. This was not true in some cases, and broke SSH remoting if you had `upload_binary_over_ssh` set. To reproduce this use Coder and set the `dir` parameter. Release Notes: - Fixed SSH remoting in the case that ssh defaults to a non-$HOME directory.
Conrad Irwin created
847596a
assistant2: Expand some variable names (#22742)
This PR expands some variables names in the `ThreadStore` for better readability. Release Notes: - N/A
Marshall Bowers created
e36ae04
elixir: Add textobjects queries (#22055)
Release Notes: - N/A Adds textobjects queries for Elixir. These queries were originally pulled directly from the [nvim-treesitter-textobjects](https://github.com/nvim-treesitter/nvim-treesitter-textobjects) repo with [this textobjects.scm](https://raw.githubusercontent.com/nvim-treesitter/nvim-treesitter-textobjects/refs/heads/master/queries/elixir/textobjects.scm) file, but have been heavily edited for Zed.
David Baldwin created
5f7de2e
assistant2: Clear all collections when clearing the `ThreadStore` (#22743)
This PR adds some missing calls to clear the sub-collections in the `ThreadStore` when we call `ThreadStore::drain` or `ThreadStore::clear`. Release Notes: - N/A
Marshall Bowers created
3c430af
Temporarily revert git panel diff editor feature (#22733)
The existing code was causing us to constantly re-scan files when anything changed in the project. Temporarily revert this as we're about to rework this entire UI with the new primitives. follow up to https://github.com/zed-industries/zed/pull/22329 Release Notes: - N/A --------- Co-authored-by: Cole <cole@zed.dev>
Mikayla Maki and Cole created
5ec9248
go: Adjust `gopls` path based on OS (#22727)
Based on the python https://github.com/zed-industries/zed/issues/21452
and PR https://github.com/zed-industries/zed/pull/22587
I found the same problem with go on windows.
Describe the bug / provide steps to reproduce it
Language server error: gopls
The system cannot find the file specified. (os error 2)
-- stderr--
[ERROR project::lsp_store] Failed to start language server "gopls": The
system cannot find the file specified. (os error 2)
[ERROR project::lsp_store] server stderr: ""
Environment
Windows 11
Go
Release Notes:
- Windows: Fixed `gopls` path construction on Windows 11.
---------
Co-authored-by: Marshall Bowers <elliott.codes@gmail.com>
Torrat and Marshall Bowers created
c968225
Add Emacs keybindings to open new/close windows and quit Zed (#22629)
These are more closely like default Emacs bindings. I hope such small and minor changes didn't warrant a discussion in advance. Release Notes: - Added Emacs bindings for creating a new window, closing a window, and quitting zed entirely.
Ross Timson created
1413932
Add validation in `LspCommand::to_lsp` + check for inverted ranges (#22731)
#22690 logged errors and flipped the range in this case. Instead it brings more visibility to the issue to return errors. Release Notes: - N/A
Michael Sloan created
1c223d8
Ensure project search keyboard shortcut tooltip is displayed (#22717)
Part of: https://github.com/zed-industries/zed/issues/22673 Before/After: <img width="212" alt="Screenshot 2025-01-06 at 12 17 52" src="https://github.com/user-attachments/assets/8eef7c5e-ccc7-4946-be19-f10dcd5f957d" /><img width="211" alt="Screenshot 2025-01-06 at 12 17 42" src="https://github.com/user-attachments/assets/8612b1b5-139d-422f-9457-ce399814d641" /> Release Notes: - N/A
Peter Tripp created
80acecc
Improve R install docs (#22737)
Release Notes: - N/A
Peter Tripp created
bbce1c1
Add compile_commands.json documentation for C/C++ (#22639)
Added documentation explaining that clangd requires `compile_commands.json` for proper functionality in both C and C++ projects. Includes instructions for generating the file using CMake. This is related to https://github.com/zed-industries/zed/discussions/6480 Release Notes: - N/A --------- Co-authored-by: Peter Tripp <peter@zed.dev>
Justin Simon and Peter Tripp created
2856d0a
Fix inline assist layout issues related to screen size (#22732)
## Before https://github.com/user-attachments/assets/c84f15d2-5643-46f2-9eb6-f0234c563c01 ## After https://github.com/user-attachments/assets/d4eab08a-1bd5-442c-9663-34bb512dba4b Release Notes: - N/A --------- Co-authored-by: Marshall <marshall@zed.dev>
Richard Feldman and Marshall created
799e81f
google_ai: Add Gemini 2.0 Flash support (#22665)
Release Notes: - Added support for Google's Gemini 2.0 Flash experimental model. Note: Weirdly enough the model is slow on small talk responses like 'hi' (in my tests) but very fast on things that need more tokens like 'write me a snake game in python'. Likely an API problem. TESTED ONLY ON WINDOWS! Would test further but don't have Linux installed and don't have an Mac. Will likely work everywhere. Why?: I think Gemini 2.0 Flash is incredibly good model at coding and following instructions. I think it would be nice to have it in the editor. I did as minimal changes as possible while adding the model and streaming validation. I think it's worth merging the commits as they bring good improvements. --------- Co-authored-by: Marshall Bowers <elliott.codes@gmail.com>
volt and Marshall Bowers created
0d30bda
Rename livekit_client_macos test_app to suppress warnings (#22719)
Current copy/paste conflict between crates triggers warnings during test runs. <img width="1492" alt="Screenshot 2025-01-06 at 12 41 11" src="https://github.com/user-attachments/assets/ea7f90ec-bef8-482a-a954-6d5c41b9fd7e" /> Release Notes: - N/A
Peter Tripp created
ec2506b
Fix a bug where repositories were always being marked as changed (#22725)
Release Notes: - N/A Co-authored-by: cole <cole@zed.dev>
Mikayla Maki and cole created
3a061a9
assistant2: Do not allow a context entry to be added multiple times (#22712)
https://github.com/user-attachments/assets/81674c88-031b-4d55-b362-43819492b93d Release Notes: - N/A
Agus Zubiaga created
c74e5f5
assistant2: Render placeholder thread title until summary is generated (#22723)
This PR ensures we render a "New Thread" placeholder title until a message has been sent, and thus, a summary is generated. https://github.com/user-attachments/assets/1c30e0ff-baaa-44ad-a1a2-42f1ce9fe0b0 Release Notes: - N/A
Danilo Leal created
2023c43
ci: Add logging to docs-only change detection (#22724)
This PR adds some logging to the docs-only change detection, for better auditability. Release Notes: - N/A
Marshall Bowers created
84fdcbb
Document `git.gutter_debounce` setting (#22663)
Closes #22588 by providing documentation to git.gutter_debounce setting Release Notes: - N/A --------- Co-authored-by: Marshall Bowers <elliott.codes@gmail.com>
spotikhanov and Marshall Bowers created
2dec4c2
Use info popovers instead of diagnostic for invisible char hover (#22701)
This will allow the diagnostic popover to be displayed even if hovering an invisible char. Beyond that, it solves a rare `DiagnosticPopover` corner case: * Supports moving the selection to a diagnostic when `GoToDiagnostic` is done while hovering, based on `group_id` * Provides Diagnostic values with `group_id: 0` providing information on hover about invisible characters. So, `GoToDiagnostic` would navigate to the very first error produced by a language server. Really not a big deal of course. Release Notes: - N/A
Michael Sloan created
d02bfe1
Add a case for shadows when blur_radius = 0 (#22441)
Closes #22433 Before/After (macOS):  For some reason the non-blurred one seems much lower quality, so we may need to tinker with the samples, or something else.  I'm unsure if this is a problem on Linux/in the Blade renderer, but since no changes were made outside of the medal shaders we can probably take this macOS-specific win for now. Release Notes: - gpui: Fixed an issue where shadows with a `blur_radius` of 0 would not render.
Nate Butler created
154a391
zed: Add timeouts for feature flag resolution in workspace panel initialization (#22715)
This PR adds timeouts when resolving feature flags during workspace panel initialization so that we don't block indefinitely if Zed is not connected to the internet. Right now we wait for 5 seconds, but this value was chosen arbitrarily. Release Notes: - N/A
Marshall Bowers created
0f548c6
Make `show project panel` keyboard shortcut work in more places (#22713)
- Closes: https://github.com/zed-industries/zed/issues/22699 - Refine the key binding for `cmd-shift-e` (macOS) / `ctrl-shift-e` (linux) - Now Works after closing the final buffer - Now Works from other panels (Terminal/Assistant/Collab/Chat/etc) Follow-up to: - https://github.com/zed-industries/zed/pull/21228 Release Notes: - Fixed Project Panel toggle (`cmd-shift-e` / `ctrl-shift-e`) so it works in more contexts.
Peter Tripp created
033726c
Improve diagnostics multibuffer design (#22705)
Namely, just removing the unnecessary extra line dividers and adding a super subtle background color to the diagnostic message to create a bit of separation/hierarchy. <img width="800" alt="Screenshot 2025-01-04 at 9 46 03 PM" src="https://github.com/user-attachments/assets/d62883b9-ed76-4fbb-b9c1-b55146eaeed4" /> Release Notes: - N/A
Danilo Leal created
d83f1e8
Revert "Start diagnostic group_id at 1 to handle non LS diagnostics (#22694) (#22700)
This reverts commit 3ae6aa0e4dbc21c09c14d7bb92b4c52cf480d39f. If "group_id = 0" really did mean a diagnostic not from a language server then various methods related to diagnostic set would need to be updated. Something like [this diff](https://gist.github.com/mgsloan/e902153bcaec207b39260a8f40d3134d). Plan instead is to use InfoPopover instead of DiagnosticPopover for these. Release Notes: - N/A
Michael Sloan created
1ef638d
Remove unnecessary lifetimes on `Buffer::diagnostic_group` (#22698)
Release Notes: - N/A
Michael Sloan created
fcb0398
Remove unnecessary finding of primary diagnostic for diagnostic hover (#22697)
No need to find or store the primary range ahead of time as it's found by `activate_diagnostics`. Not entirely sure we should still even have the special case when the popover is visible. It does support the keyboard interaction of opening hover followed by jumping to the primary position, but that seems pretty undiscoverable. Support for clicking the hover to navigate to the primary diagnostic was removed in https://github.com/zed-industries/zed/pull/3408 Release Notes: - N/A
Michael Sloan created
2a9fa0e
Ensure `end >= start` in `lsp::Range` (#22690)
Should resolve https://github.com/zed-industries/zed/issues/21714.
In some conditions that I'm not sure of, Zed sends LSP requests with
`start > end` position, and zls has an [assertion for end >=
start](https://github.com/zigtools/zls/blob/f253553b8230ecd94824ecc3e2da2eb1643e7512/src/offsets.zig#L492),
and that causes zls to crash, like:
```bash
# first `textDocument/inlayHint` request with `end >= start`
[2025-01-05T19:33:09+00:00 TRACE lsp] outgoing message:{"jsonrpc":"2.0","id":1043,"method":"textDocument/inlayHint","params":{"textDocument":{"uri":"file:///Users/burak/Code/parzig/src/parquet/decoding.zig"},"range":{"start":{"line":0,"character":0},"end":{"line":24,"character":0}}}}
# successful response
[2025-01-05T19:33:09+00:00 TRACE lsp::input_handler] incoming message: {"jsonrpc":"2.0","id":1043,"result":[{"position":{"line":0,"character":9},"label":": type","kind":1,"paddingLeft":false,"paddingRight":false},{"position":{"line":1,"character":22},"label":": type","kind":1,"paddingLeft":false,"paddingRight":false},{"position":{"line":4,"character":13},"label":": [](unknown type)","kind":1,"paddingLeft":false,"paddingRight":false},{"position":{"line":4,"character":30},"label":"T:","kind":2,"tooltip":{"kind":"markdown","value":"```zig\ncomptime type\n```"},"paddingLeft":false,"paddingRight":true},{"position":{"line":4,"character":33},"label":"n:","kind":2,"tooltip":{"kind":"markdown","value":"```zig\nusize\n```"},"paddingLeft":false,"paddingRight":true},{"position":{"line":5,"character":23},"label":": bool","kind":1,"paddingLeft":false,"paddingRight":false},{"position":{"line":6,"character":19},"label":": usize","kind":1,"paddingLeft":false,"paddingRight":false},{"position":{"line":9,"character":26},"label":": [](unknown type)","kind":1,"paddingLeft":false,"paddingRight":false},{"position":{"line":9,"character":43},"label":"T:","kind":2,"tooltip":{"kind":"markdown","value":"```zig\ncomptime type\n```"},"paddingLeft":false,"paddingRight":true},{"position":{"line":9,"character":47},"label":"n:","kind":2,"tooltip":{"kind":"markdown","value":"```zig\nusize\n```"},"paddingLeft":false,"paddingRight":true},{"position":{"line":21,"character":13},"label":": [](unknown type)","kind":1,"paddingLeft":false,"paddingRight":false},{"position":{"line":21,"character":30},"label":"T:","kind":2,"tooltip":{"kind":"markdown","value":"```zig\ncomptime type\n```"},"paddingLeft":false,"paddingRight":true},{"position":{"line":21,"character":33},"label":"n:","kind":2,"tooltip":{"kind":"markdown","value":"```zig\nusize\n```"},"paddingLeft":false,"paddingRight":true},{"position":{"line":22,"character":33},"label":"T:","kind":2,"tooltip":{"kind":"markdown","value":"```zig\ncomptime type\n```"},"paddingLeft":false,"paddingRight":true},{"position":{"line":22,"character":36},"label":"buf:","kind":2,"tooltip":{"kind":"markdown","value":"```zig\n[]T\n```"},"paddingLeft":false,"paddingRight":true},{"position":{"line":22,"character":41},"label":"bit_width:","kind":2,"tooltip":{"kind":"markdown","value":"```zig\nu8\n```"},"paddingLeft":false,"paddingRight":true},{"position":{"line":22,"character":52},"label":"reader:","kind":2,"tooltip":{"kind":"markdown","value":"```zig\nanytype\n```"},"paddingLeft":false,"paddingRight":true}]}
[2025-01-05T19:33:09+00:00 TRACE lsp] Took 14.855ms to receive response to "textDocument/inlayHint" id 1043
# problematic `textDocument/inlayHint` request with `start > end`
[2025-01-05T19:33:09+00:00 TRACE lsp] outgoing message:{"jsonrpc":"2.0","id":1044,"method":"textDocument/inlayHint","params":{"textDocument":{"uri":"file:///Users/burak/Code/parzig/src/parquet/decoding.zig"},"range":{"start":{"line":50,"character":25},"end":{"line":25,"character":0}}}}
# zls crashes here, and after this point, all LSP requests fail
[2025-01-05T19:33:09+00:00 TRACE lsp] incoming stderr message:thread 5391652 panic: reached unreachable code
[2025-01-05T19:33:09+00:00 ERROR lsp] cannot read LSP message headers
```
In LSP specification for
[`Range`](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#range)
type, it says:
> ... If you want to specify a range that contains a line including the
line ending character(s) then use an end position denoting the start of
the next line.
I feel like zls's assertion is sensible, so I've updated the generic
`range_to_lsp` function rather than doing something specific to zls. But
let me know if this seems incorrect.
zls was crashing after 5-10 minutes of working with a Zig codebase
before, and after this change, I tested for an hour and didn't
experience any crashes.
Release Notes:
- Ensure `end >= start` in `lsp::Range`, which should fix Zig/zls
crashes.
---------
Co-authored-by: Michael Sloan <michael@zed.dev>
Burak Varlı and Michael Sloan created
3ae6aa0
Start diagnostic group_id at 1 to handle non LS diagnostics (#22694)
In particular, `DiagnosticPopover` both: * Supports moving the selection to a diagnostic when clicked, based on `group_id` * Provides Diagnostic values with `group_id: 0` providing informztion on hover about invisible characters. So, clicking such a popover would navigate to the very first error produced by a language server. Really not a big deal of course, but seems good to fix as it might result in surprising behavior in other future circumstances Release Notes: - N/A
Michael Sloan created
7506c03
Fix a doc comment typo on DiagnosticEntry::to_lsp_diagnostic_stub (#22695)
Release Notes: - N/A
Michael Sloan created
570e6c8
Fix panic on diagnostic hover (#22693)
In #22620 `diagnostic_group` was modified to return results for multibuffers, but was returning singleton buffer points. `hover_popover` uses it to find the jump target for clicking the popup - which doesn't seem to be working right now but that's a separate issue. Now that `diagnostic_group` is returning values in multibuffers converting these to anchors was crashing. Also resolves a potential bug - if folding in multibuffers was supported then "Go To Diagnostics" would not properly skip diagnostics from folded regions. Release Notes: - N/A
Michael Sloan created