Commit Graph
100 Commits
Author SHA1 Message Date
Kirill Bulatov 760c4918cb Respect completion resolve server capabilities (#2858)
Only query for additional edits if the server supports it

Release Notes:

- N/A
2023-08-18 17:50:37 +03:00
Kirill BulatovandJulia Risley 269dad5a9c Respect completion resolve server capabilities
Only query for additional edits if the server supports it

Co-Authored-By: Julia Risley <julia@zed.dev>
2023-08-18 16:55:47 +03:00
Kirill Bulatov 988ea3c16b Add editor::ToggleInlayHints command and a bar to toggle editor-related items (#2839)
Closes
https://linear.app/zed-industries/issue/Z-2735/make-inlay-hints-discoverable
Deals with https://github.com/zed-industries/community/issues/1764

Adds `editor::ToggleInlayHints` command and a new panel with two
buttons for 
* toggling hints on/off for every editor separately (overrides settings)

Would benefit from a new icon.

* toggling buffer search on/off 

Does not have a keybinding shown in its tooltip, that is a separate
issue with the way `KeystrokeLabel` gets these for panels not in the
view directly.

Release Notes:

- Adds `editor::ToggleInlayHints` command and a bar to toggle
editor-related items
2023-08-16 23:50:54 +03:00
Kirill Bulatov 7334bdccbf Better multibuffer tests 2023-08-16 23:38:11 +03:00
Kirill Bulatov 7fcf9022b4 Fix rebase issues 2023-08-16 23:38:11 +03:00
Kirill Bulatov f9131f657e Use InlayHint instead of Inlay where appropriate 2023-08-16 23:38:11 +03:00
Kirill Bulatov 1938fd85e8 Do not leak pane handles 2023-08-16 23:38:11 +03:00
Kirill Bulatov 9c6135f47a Test hints toggle 2023-08-16 23:38:11 +03:00
Kirill Bulatov 8926c23bdb Extract quick_action_bar into its own crate 2023-08-16 23:38:11 +03:00
Kirill BulatovandMikayla Maki 0f650acc23 Repaint inlays icon on inlays cache disabling/enabling
Co-Authored-By: Mikayla Maki <mikayla@zed.dev>
2023-08-16 23:38:11 +03:00
Kirill Bulatov 0b93e490a5 Improve toggle UI, fix inlays update speed 2023-08-16 23:38:11 +03:00
Kirill Bulatov 6a326c1bd8 Toggle buffer search via quick actions 2023-08-16 23:38:11 +03:00
Kirill Bulatov 5c3d563f0f Draft quick actions bar 2023-08-16 23:38:11 +03:00
Kirill Bulatov 1601892f35 Focus terminal view on mouse click in terminal (#2852)
Before, terminal view focused the parent (pane) instead and, if
terminal's search bar was open and focused, pane transferred the focus
back

Release Notes:

- Fixed terminal search focus not switching to terminal on mouse click
inside
2023-08-16 15:25:17 +03:00
Kirill Bulatov 80c779b95e Focus terminal view on mouse click in terminal
Before, terminal view focused the parent (pane) instead and, if
terminal's search bar was open and focused, pane transferred the focus
back
2023-08-16 15:16:20 +03:00
Kirill Bulatov 139cbbfd3a Move gpui derives tests into gpui crate to avoid dependency cycles (#2851)
`cargo run` on Zed project leads to rust-analyzer evantually emitting

`[ERROR project_model::workspace] cyclic deps:
gpui_macros(Idx::<CrateData>(269)) -> gpui(Idx::<CrateData>(264)),
alternative path: gpui(Idx::<CrateData>(264)) ->
gpui_macros(Idx::<CrateData>(269))`

error after loading the project.

The PR fixes this by moving away the test to the "root" project.

Release Notes:

- N/A
2023-08-16 10:41:12 +03:00
Kirill Bulatov 1c4be24fb7 Move gpui derives tests into gpui crate to avoid dependency cycles
`cargo run` on Zed project leads to rust-analyzer evantually emitting

`[ERROR project_model::workspace] cyclic deps:
gpui_macros(Idx::<CrateData>(269)) -> gpui(Idx::<CrateData>(264)),
alternative path: gpui(Idx::<CrateData>(264)) ->
gpui_macros(Idx::<CrateData>(269))`

error after loading the project.

The PR fixes this by moving away the test to the "root" project.
2023-08-16 10:19:20 +03:00
Kirill Bulatov 2670e2c9ec Support editor::SelectAll in Terminal (#2848)
![image](https://github.com/zed-industries/zed/assets/2690773/3aae1e6a-9993-4e65-8ed1-20f2f4b452df)

Allows to use `editor::SelectAll`(`cmd-a` by default) in Terminal to
select all text in it, for future copying.
Currently, does not try to be smart and trim the selected whitespaces
after the last prompt, and copies them too.

Release Notes:

- Support `editor::SelectAll` in Terminal
2023-08-15 23:59:26 +03:00
Kirill Bulatov de69f08c10 Support editor::SelectAll in Terminal 2023-08-15 23:43:32 +03:00
Kirill Bulatov 64c2043913 Query less inlay hints (#2842)
Part of
https://linear.app/zed-industries/issue/Z-2750/investigate-performance-of-collaborating-on-large-files-with-inlay

Instead of querying the entire file for hints, query visible editor(s)
range + the areas above and below, of the same height.
Non-invalidating future queries (e.g. scrolling) query only missing
parts of the ranges.

Release Notes:

- Improved LSP resource usage by querying less hints for big files
2023-08-14 23:06:30 +03:00
Kirill Bulatov 54bcef9420 Strip off inlay hint data that should be resolved (#2843)
Part of
https://linear.app/zed-industries/issue/Z-2750/investigate-performance-of-collaborating-on-large-files-with-inlay

* Declares client capabilities for hint resolution, marking both fields
available for resolution (`textEdits` and `tooltop`) as resolvable.
We do not use these fields anymore, hence can omit resolving them for
now, but LSP servers can omit them during general hint requests.

* Removes `tooltip` and replaces complex `label` with its simple string
counterpart for clients' hint responses from host: both should be
resolved through host later

Release Notes:

- Reduces collab mode clients' inlay hint footprint by enabling hint
data resolution
2023-08-14 23:06:19 +03:00
Kirill Bulatov 27bf01c3a8 Strip off inlay hints data that should be resolved 2023-08-14 22:50:55 +03:00
Kirill Bulatov e0d011e354 Better assert multibuffer edit test results 2023-08-14 20:12:35 +03:00
Kirill Bulatov 4b3273182a Do not filter out hints to be removed 2023-08-14 19:20:20 +03:00
Kirill Bulatov 336fbb3392 Clip offsets in inlay hint queries 2023-08-14 18:39:30 +03:00
Kirill Bulatov 558367dc8b Optimize query ranges tracking 2023-08-14 16:19:44 +03:00
Kirill Bulatov 87e6651ecb Fix hint tests, add a char boundary bug test 2023-08-14 16:01:02 +03:00
Kirill Bulatov 449c009639 Properly generate ranges to query 2023-08-14 11:25:02 +03:00
Kirill Bulatov 56f89739f8 Do not add duplicate hints to the cache 2023-08-14 11:25:02 +03:00
Kirill Bulatov 0e2a1fc149 Query inlay hints for parts of the file 2023-08-14 11:25:02 +03:00
Kirill Bulatov 708409e06d Query hints on every scroll 2023-08-14 11:25:02 +03:00
Kirill Bulatov 5d2750e0d4 Hide inlay cache fields 2023-08-14 11:25:02 +03:00
Kirill Bulatov 704ab33f72 Restore shutdown behavior 2023-08-09 23:39:21 +03:00
Kirill Bulatov 06a0c9f82b Track history items in the buffer and project searches (#2817)
![image](https://github.com/zed-industries/zed/assets/2690773/53ce324f-2243-4cd9-a8aa-11f361c36860)

Tracks last N (20 currently) items in buffer and project search, allows
cycling through between them with up/down keys by default.

Release Notes:

- Track history in buffer and project searches
2023-08-01 01:44:58 +03:00
Kirill Bulatov 634baeedb4 Add project search history 2023-08-01 01:31:28 +03:00
Kirill Bulatov 646dabe113 Add buffer search history 2023-08-01 01:31:28 +03:00
Kirill Bulatov 97042eb5aa Make project search includes and excludes more user-friendly (#2806)
Closes
https://linear.app/zed-industries/issue/Z-2707/make-inclusionexclusion-with-non-globs-more-intuitive

Allow search results that start with the include/exclude path part.

![image](https://github.com/zed-industries/zed/assets/2690773/ef48ca8e-f8fd-41b2-a656-c31dc7712a11)


Release Notes:

- Improved project search include/exclude filters' usability: allow path
entries along with the glob ones
2023-07-28 13:38:53 +03:00
Kirill Bulatov cf6e524c9a Make project search includes and excludes more user-friendly
Allow search results that start with the include/exclude path part
2023-07-28 12:56:44 +03:00
Kirill Bulatov 52154f76ac Fixes a crash when SelectAllMatches action was called on no matches (#2783)
Release Notes:

- Fixes a crash when SelectAllMatches action was called on no matches
2023-07-24 15:48:45 +03:00
Kirill Bulatov 7dccb487de Fixes a crash when SelectAllMatches action was called on no matches 2023-07-24 15:42:10 +03:00
Kirill Bulatov e0915190d4 In terminal, open paths starting with ~ and focus on project panel when opening directories (#2780)
Further improves terminal navigation with cmd+click, now allowing to
open paths starting with `~` (if they are present otherwise) and
focusing project panel with highlighted entry for the directories
opened.

Release Notes:

- Further improves terminal navigation with cmd+click, now allowing to
open paths starting with `~` (if they are present otherwise) and
focusing project panel with highlighted entry for the directories
opened.
2023-07-23 00:23:19 +03:00
Kirill Bulatov f05095a6dd Focus project panel on directory select 2023-07-23 00:12:25 +03:00
Kirill Bulatov dcaf8a9af8 Open paths starting with ~ from terminal click 2023-07-22 01:34:25 +03:00
Kirill Bulatov bd9118f673 Do not scroll when selecting all (#2778)
In big buffers, when I press `cmd-a`, the view gets scrolled to the very
bottom.
Usually it's now that I want, I can scroll to bottom with `cmd-down`
separately, and selecting all text is used for copy-pasting it
somewhere, no need to scroll anywhere for that — I can get back to the
same place later.

Release Notes:

- Removed the scroll to the end of the editor after `editor::SelectAll`
action
2023-07-22 00:25:37 +03:00
Kirill Bulatov c538504b9c Do not scroll when selecting all 2023-07-22 00:17:02 +03:00
Kirill Bulatov 25ea07cd41 When renaming in project panel, select file names without extensions (#2776)
Closes
https://github.com/zed-industries/community/issues/1789#issuecomment-1646061712

<img width="196" alt="Screenshot 2023-07-21 at 23 23 47"
src="https://github.com/zed-industries/zed/assets/2690773/f5c7025b-6dc8-4f0c-81e5-3cc98a3a9c8b">
<img width="197" alt="Screenshot 2023-07-21 at 23 23 52"
src="https://github.com/zed-industries/zed/assets/2690773/596f8ab0-15e0-4285-be34-ce4c276b686f">

When renaming in project panel, select file names without extensions.

Release Notes:

- Improved project panel rename by selecting file names without
extensions
2023-07-21 23:30:55 +03:00
Kirill Bulatov 33b215a288 Add search in directory action in the project panel (#2774)
Part of https://github.com/zed-industries/zed/issues/1153
Closes https://github.com/zed-industries/community/issues/1326

<img width="432" alt="image"
src="https://github.com/zed-industries/zed/assets/2690773/a50ee073-9d2e-4e5c-ae5e-23312693c540">

Adds an `project_panel::NewSearchInDirectory` action ("alt-shift-f"
default) in the project editor context to open a new project search in
the selected directory.

Release Notes:

- Adds an action to open project search in the project panel's directory
2023-07-21 23:25:45 +03:00
Kirill Bulatov 804da68af7 When renaming in project panel, select file names without extensions 2023-07-21 23:22:22 +03:00
Kirill Bulatov 595bc16749 Add search in directory action in the project panel 2023-07-21 22:47:57 +03:00
Kirill Bulatov 35400d5797 Do not highlight fake URLs in terminal (#2770)
Closes https://github.com/zed-industries/community/issues/1794
See also https://github.com/alacritty/alacritty/pull/7101

Release Notes:

- Fixed terminal incorrectly highlighting certain strings as URLs
2023-07-21 11:57:29 +03:00
Kirill Bulatov cd3620692b Do not highlight fake URLs in terminal 2023-07-21 11:28:56 +03:00
Kirill Bulatov 0237276557 Fully revert the line height change 2023-07-20 15:39:22 +03:00
Kirill Bulatov 0e6048a85d Keep basic line height for single line editors 2023-07-20 13:42:11 +03:00
Kirill Bulatov 257dd57fe4 Properly display keybindings in context menus (#2758)
Fixes https://github.com/zed-industries/community/issues/1751


![image](https://github.com/zed-industries/zed/assets/2690773/cbf29eca-0fca-4aff-be50-810eb80fdcb5)

![image](https://github.com/zed-industries/zed/assets/2690773/330054eb-ba92-4c8f-862f-06f276cc262b)


Release Notes:

- Fixed context menu keybindings not updating with custom keybinding
values
2023-07-20 12:25:41 +03:00
Kirill Bulatov a5e63fbf77 Properly display keybindings in context menus 2023-07-20 12:18:04 +03:00
Kirill Bulatov c528880155 Clean up stale conflicting hints (#2751)
Closes
https://linear.app/zed-industries/issue/Z-2618/thread-main-panicked-at-excerpt-not-found-crateseditorsrcmulti
Closes
https://linear.app/zed-industries/issue/Z-2616/thread-main-panicked-at-excerpt-not-found-crateseditorsrcmulti

Fixes inlay hints cache not removing stale hints on invalidating
refreshes.

Release Notes:

- Fixes inlay hint panics after visible kinds settings update
2023-07-19 15:38:27 +03:00
Kirill Bulatov 3058a96dee Clean up stale conflicting hints 2023-07-19 15:29:00 +03:00
Kirill Bulatov c5e47f27f5 Rework terminal highlight mechanism (#2743)
<img width="807" alt="image"
src="https://github.com/zed-industries/zed/assets/2690773/ef3bfeef-28f5-458f-abe6-7c19bf820106">

Closes https://github.com/zed-industries/community/issues/10
Closes https://github.com/zed-industries/community/issues/560

Initial version of improved terminal highlights and "open link"
functionality: drops old behavior where URLs were highlighted on hover.
Now, Cmd + hover is needed to highlight the links and click opens both
URLs and files that exist (either abs paths, or anything relative to the
project workspace worktree roots).
Only paths eligible for opening are highlighted.

Release Notes:

- Improved terminal highlights and selections: Cmd+Click opens local
files and links
2023-07-19 09:05:48 +03:00
Kirill Bulatov 33921183dc Avoid extra blinking on mouse moves 2023-07-18 22:59:41 +03:00
Kirill Bulatov 6ed7820f7c Consider all terminal when searching for words 2023-07-18 22:59:41 +03:00
Kirill Bulatov 10db05f87f Rework terminal highlight event flow 2023-07-18 22:59:41 +03:00
Kirill Bulatov 6f7a6e57fc Avoid excessive blinking on cmd-hover 2023-07-18 22:59:41 +03:00
Kirill Bulatov 94358ffb16 Use lines and columns from the file url strings 2023-07-18 22:59:41 +03:00
Kirill Bulatov 82a9d53c8a Only highlight the openable things 2023-07-18 22:59:41 +03:00
Kirill Bulatov 6349d90cac Properly open project directories 2023-07-18 22:59:41 +03:00
Kirill Bulatov 6123c67de9 Detect and open URLs properly 2023-07-18 22:59:41 +03:00
Kirill Bulatov 23f25562b5 Map initial approach to string opening 2023-07-18 22:59:41 +03:00
Kirill Bulatov f52722b6a4 Properly handle Cmd press for terminal highlights 2023-07-18 22:59:41 +03:00
Kirill BulatovandMikayla 75d900704e Refactor terminal highlights and open mechanisms
Co-authored-by: Mikayla <mikayla@zed.dev>
2023-07-18 22:59:41 +03:00
Kirill Bulatov 91ba80ae98 Ignore empty hover contents, trim final hover label text (#2747)
Removes empty hovers from appearing:

![image](https://github.com/zed-industries/zed/assets/2690773/b8a8af17-e20f-4d87-8782-465dfbf9b561)

And trims final hover label to ensure no trailing whitespaces are
present:

![image](https://github.com/zed-industries/zed/assets/2690773/24aeb0f0-d4f0-4e2b-9265-53694bfec437)


Release Notes:

- Tidies up hover elements by trimming them and removing the empty ones
2023-07-18 22:59:24 +03:00
Kirill Bulatov 9aeb970f09 Ignore empty hover contents, trim final hover label text 2023-07-18 22:53:44 +03:00
Kirill Bulatov 009cf48b26 Slightly tidy up vector_db code (#2744)
Code snippet
```rust
fn main() {
    //√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√
}
```

has length of 191, but consists of 87 chars, and the debug code with
`.truncate(100)` panicked.
Fixed that issue, cc @KCaverly 


Release Notes:

- N/A
2023-07-18 14:22:34 +03:00
Kirill Bulatov a884bd77e1 Slightly tidy up vector_db code
Avoid panicking when truncating code with special chars
2023-07-18 14:06:57 +03:00
Kirill BulatovandMax Brunsfeld a4bf19c5bd Simplify NoAction filtering logic
co-authored-by: Max Brunsfeld <max@zed.dev>
2023-07-17 20:42:35 +03:00
Kirill Bulatov 4cc06748c9 Ignore keybindings with NoAction in config overrides 2023-07-17 18:34:39 +03:00
Kirill Bulatov f5eac82e81 Reload menu after keybindings change 2023-07-17 12:30:42 +03:00
Kirill Bulatov eaa8224076 Use id instead of type_id for actions
Currently, both are the same thing, so the logic is not changed.
2023-07-17 12:24:56 +03:00
Kirill Bulatov cde5b3952d Select all matches (#2717)
Closes https://github.com/zed-industries/community/issues/75
Closes https://github.com/zed-industries/community/issues/1749

The PR 

* changes keybindings for `Editor && mode == auto_height` context:
before, `alt-enter` and `alt-shift-enter` added new lines in such
editors, including the one from buffer search.

New bindings are the same as in `Editor && mode == full` context.

* adds `search::SelectAllMatches` action and binds it to `Alt + Enter`
by default, to select all matches of a buffer search

The behavior mimics VSCode: we do not move the screen even if all
selections are out of the visible range (Cmd+G will navigate there) and
allow reselecting the results from both pane and search field, as long
as the search is not dismissed.

Release Notes:

- Added `search::SelectAllMatches` (`Alt + Enter` default) action to
place carets and select all buffer search results
([#75](https://github.com/zed-industries/community/issues/75),
[#1749](https://github.com/zed-industries/community/issues/1749)).
2023-07-14 21:37:04 +03:00
Kirill Bulatov b14cd5f56d Add a new button for the action 2023-07-14 17:32:10 +03:00
Kirill Bulatov ccc78000bd Preserve serach index for multicaret selection editor events 2023-07-14 14:47:12 +03:00
Kirill Bulatov f710efca3b Use a better name 2023-07-14 14:47:12 +03:00
Kirill Bulatov 2053418f21 Use VSCode-like shortcuts by default 2023-07-14 14:47:12 +03:00
Kirill Bulatov 29cbeb39bd Allow selecting all search matches in buffer 2023-07-14 14:47:12 +03:00
Kirill Bulatov c2ffd8975b Update another deprecated plugin (#2716)
Follow-up of https://github.com/zed-industries/zed/pull/2713, fixing the
same for the bundling part of the pipeline.

Release Notes:

- N/A
2023-07-13 12:12:42 +03:00
Kirill Bulatov 8cce403c11 Update another deprecated plugin 2023-07-13 11:52:35 +03:00
Kirill Bulatov 1e8ee5361d Update GH Actions (#2713)
Fixes deprecation warnings the CI jobs started to have:

https://github.com/zed-industries/zed/actions/runs/5535503789

<img width="1383" alt="image"
src="https://github.com/zed-industries/zed/assets/2690773/a33ecc2a-d6d3-451d-8033-da5754df4731">

Release Notes:

- N/A
2023-07-12 22:25:59 +03:00
Kirill Bulatov 7cbcc28b1b Update checkout actions 2023-07-12 22:18:37 +03:00
Kirill Bulatov d164034198 Allow all completions with preresolved additional text edits (#2711)
Deals with https://github.com/zed-industries/community/issues/752
Deals with https://github.com/zed-industries/community/issues/566

Currently, when converting from LSP to Zed objects, completions with
non-empty `additional_text_edits` are filtered out.
Later, all other completions form a list and the selected one gets the
`Editor::confirm_completion` call, which always queries an LSP
completion resolve request to get the `additional_text_edits` field.

Otherwise, `additional_text_edits` field is ignored entirely for the
rest of the completion lifetime — and we always pass the selected
completion through the resolve request.

The PR changes the logic, removing the `additional_text_edits` filtering
and instead of resolving every completion, now we check for
`additional_text_edits` in the completion before resolving: resolve
happens only if the data is absent.

Generally, feels like resolve has to happen before the completion
selection: LSP servers may send us markdown for completion documentation
preview pop ups and similar extra info.
Also, the server may lack resolve capabilities entirely, always sending
the request seems dangerous.
For now, the PR does not attempt to change either.

Release Notes:

- Brings rust-analyzer's postfix completions and others completions with
preresolved additional text edits
2023-07-12 22:10:18 +03:00
Kirill BulatovandMax Brunsfeld 0c7949bdee Force resolve all completions, to ensure their edits are up-to-date
co-authored-by: Max Brunsfeld <max@zed.dev>
2023-07-12 21:10:01 +03:00
Kirill Bulatov c732aa1617 Do not resolve completions if extra edits are available 2023-07-12 20:28:16 +03:00
Kirill Bulatov 6d96c6ef51 Draft the postfix completions support 2023-07-12 18:32:03 +03:00
Kirill Bulatov 5483bd1404 Refactor LSP restart logic (#2705)
Instead of storing `initialization_options` in every LSP adapter as
before, store previous LSP settings in `Project` entirely.

This way, we can later have use multiple different project
configurations per single LSP with its associated adapter.

Release Notes:

- N/A
2023-07-11 22:09:40 +03:00
Kirill BulatovandMax Brunsfeld 4b4d049b0a Refactor LSP restart logic
Instead of storing `initialization_options` in every LSP adapter as
before, store previous LSP settings in `Project` entirely.

This way, we can later have use multiple different project
configurations per single LSP with its associated adapter.

co-authored-by: Max Brunsfeld <max@zed.dev>
2023-07-11 21:56:55 +03:00
Kirill Bulatov efe8b8b6d0 Revert "Fix language servers improper restarts"
This reverts commit 91832c8cd8.
2023-07-11 20:46:45 +03:00
Kirill Bulatov 8161438a85 Fix language servers improper restarts (#2702)
Fixes
https://linear.app/zed-industries/issue/Z-2595/language-servers-are-unnecessarily-restarted-when-unrelated-settings

Language servers mixed `initialization_options` from hardcodes and user
settings, fix that to ensure we restart servers on their settings
changes only.

Release Notes:

- N/A
2023-07-11 17:15:19 +03:00
Kirill Bulatov 748e7af5a2 Add a test 2023-07-11 17:10:34 +03:00
Kirill Bulatov 91832c8cd8 Fix language servers improper restarts
Language servers mixed `initialization_options` from hardcodes and user
settings, fix that to ensure we restart servers on their settings
changes only.
2023-07-11 16:36:20 +03:00
Kirill Bulatov 4ab2b8b24b Restart LSP server on corresponding initialization_options change (#2690)
Inlay hints depend on LSP server settings, but servers do not update the
initialization options and query hints with old settings.

Generally, we cannot know whether a certain option can be changed
without server restart, which the name of the options implies too, so be
on the safe side and restart the server.
Hints will update automatically after the server either sends a /refresh
request or reports its work progress end after startup.

Release Notes:

- Fixed LSP server not restarting after `initialization_options`
settings changes
2023-07-06 23:32:34 +03:00
Kirill Bulatov e6ec0af743 Remove redundant hint kind checks in tests 2023-07-06 23:27:25 +03:00
Kirill Bulatov fff65968bf Restart LSP server on initialization options change 2023-07-06 23:27:22 +03:00