zed/crates
Kirill Bulatov ed61abb8b8
Resolve completion items once exactly (#22448)
Closes https://github.com/zed-industries/zed/issues/19214
Closes https://github.com/zed-industries/zed/pull/22443

Adds `resolved` property into Zed completion item data, to ensure we
resolve every completion item exactly once.

There are 2 paths for singplayer Zed, and corresponding 2 analogues for
multi player code, where resolve may happen:
* completions menu display & selection, that ends up using
`resolve_completions` in `lsp_store.rs`
* applying a completion menu entry, that ends up using
`apply_additional_edits_for_completion` in `lsp_store.rs`

Now, all local counterparts check `enabled` field before resolving and
set it to true afterwards, and reuse the same `resolve_completion_local`
method for resolving the items.

A logic for re-generating docs and item labels was moved out from the
`resolve_completion_local` method into a separate method, as
`apply_additional_edits_for_completion` does not need that, but needs
the rest of the logic for resolving.
During the extraction, I've noted that multiplayer clients are not
getting the item labels, regenerated after the resolve — as the Zed
protocol-based flow is not the exact copy of the local resolving.
To improve that, `resolve_completion_remote` needs to be adjusted, but
this change is omitted to avoid bloating the PR.

Release Notes:

- Fixed autocomplete inserting multiple imports
2024-12-27 16:43:01 +00:00
..
activity_indicator Add Corner to geometry and make names of corner methods consistent (#22119) 2024-12-16 22:57:15 -07:00
anthropic assistant: Remove low_speed_timeout (#20681) 2024-11-15 07:37:31 +01:00
assets
assistant Resolve completion items once exactly (#22448) 2024-12-27 16:43:01 +00:00
assistant2 assistant2: Derive the Context icon at render time instead of storing (#22397) 2024-12-24 16:13:35 +00:00
assistant_slash_command Overhaul extension registration (#21083) 2024-11-22 19:02:32 -05:00
assistant_tool Factor tool definitions out of assistant (#21189) 2024-11-25 18:26:34 -05:00
assistant_tools assistant2: Add support for using tools (#21190) 2024-11-25 19:44:34 -05:00
audio Update Rust crate rodio to 0.20.0 (#20955) 2024-11-28 10:58:36 +02:00
auto_update Extract auto_update_ui crate (#21008) 2024-11-21 14:11:57 -05:00
auto_update_ui Extract auto_update_ui crate (#21008) 2024-11-21 14:11:57 -05:00
breadcrumbs Make breadcrumb content scrollable (#22309) 2024-12-20 22:50:41 +00:00
call More telemetry events (#22171) 2024-12-17 22:16:59 -07:00
channel Use Instant not chrono for telemetry (#20756) 2024-11-19 08:23:12 -07:00
cli chore: Remove explicit usages of once_cell in favor of std (#22407) 2024-12-25 00:33:26 +00:00
client chore: Remove explicit usages of once_cell in favor of std (#22407) 2024-12-25 00:33:26 +00:00
clock Use Instant not chrono for telemetry (#20756) 2024-11-19 08:23:12 -07:00
collab Improve Linux panic reporting (#22202) 2024-12-22 08:20:17 +00:00
collab_ui Resolve completion items once exactly (#22448) 2024-12-27 16:43:01 +00:00
collections
command_palette Match keymap-style action names in command palette (#22149) 2024-12-19 12:48:54 +00:00
command_palette_hooks Use the same InlineAssist action between both assistant and assistant2 (#22126) 2024-12-16 23:57:07 -05:00
context_server context_server: Add missing types for MCP spec to protocol 2024-11-05 (#21498) 2024-12-04 10:45:25 -05:00
context_server_settings Factor tool definitions out of assistant (#21189) 2024-11-25 18:26:34 -05:00
copilot Show inline completions in menu only for supported providers (#22181) 2024-12-18 12:55:09 +01:00
db
diagnostics Sticky multibuffer headers (#22391) 2024-12-24 17:55:25 +00:00
docs_preprocessor
editor Resolve completion items once exactly (#22448) 2024-12-27 16:43:01 +00:00
evals windows: Set CREATE_NO_WINDOW for commands (#18447) 2024-11-20 16:52:38 -08:00
extension Add language icons to the language selector (#21298) 2024-12-02 15:01:09 -03:00
extension_api zed_extension_api: Add a short explanation of repo format (#21824) 2024-12-10 15:04:47 -05:00
extension_cli
extension_host Add telemetry::event! (#22146) 2024-12-17 11:39:18 -07:00
extensions_ui Allow telemetry::event! with no properties (#22190) 2024-12-18 09:41:47 -07:00
feature_flags Add placeholder git panel (#21894) 2024-12-11 22:13:52 -05:00
feedback Use static LazyLocks for all constant regexes (#22225) 2024-12-19 02:20:35 +00:00
file_finder Add Corner to geometry and make names of corner methods consistent (#22119) 2024-12-16 22:57:15 -07:00
file_icons Add a CI check for todo! and FIXME comments (#21950) 2024-12-20 08:38:50 +00:00
fs linux: Fix saving file with root ownership (#22045) 2024-12-19 22:16:01 +00:00
fsevent
fuzzy Fix fuzzy string match invariant check (#22032) 2024-12-15 01:15:22 -07:00
git Rename GitRepository.path() to GitRepository.dot_git_dir() (#22026) 2024-12-14 15:30:56 -07:00
git_hosting_providers Use static LazyLocks for all constant regexes (#22225) 2024-12-19 02:20:35 +00:00
git_ui Make git panel entries clickable (#22329) 2024-12-21 14:20:08 +00:00
go_to_line Only debounce the cursor position in multibuffer excerpts (#21946) 2024-12-12 18:27:06 -08:00
google_ai assistant: Remove low_speed_timeout (#20681) 2024-11-15 07:37:31 +01:00
gpui gpui: Update Shadow Example (#22434) 2024-12-26 19:23:10 +00:00
gpui_macros gpui: Add cursor style methods of nesw nwse resize (#21801) 2024-12-10 11:54:26 -07:00
html_to_markdown Use static LazyLocks for all constant regexes (#22225) 2024-12-19 02:20:35 +00:00
http_client Use LiveKit's Rust SDK on Linux while continue using Swift SDK on Mac (#21550) 2024-12-05 15:06:17 -08:00
image_viewer image viewer: Allow dropping images on pane (#21803) 2024-12-10 15:01:14 +01:00
indexed_docs Improve StringMatchCandidate::new interface (#22011) 2024-12-14 13:35:36 -07:00
inline_completion Show inline completions in menu only for supported providers (#22181) 2024-12-18 12:55:09 +01:00
inline_completion_button Add Corner to geometry and make names of corner methods consistent (#22119) 2024-12-16 22:57:15 -07:00
install_cli
journal
language Expand diagnostic excerpts using heuristics on syntactic information from TreeSitter (#21942) 2024-12-20 22:42:18 +00:00
language_extension Add language icons to the language selector (#21298) 2024-12-02 15:01:09 -03:00
language_model Fuse LLM completion stream to avoid a panic (#21914) 2024-12-12 11:39:35 -05:00
language_model_selector Add Corner to geometry and make names of corner methods consistent (#22119) 2024-12-16 22:57:15 -07:00
language_models Mention Lllama 3.3 in Ollama config panel (#21866) 2024-12-11 16:38:03 -05:00
language_selector Improve StringMatchCandidate::new interface (#22011) 2024-12-14 13:35:36 -07:00
language_tools Add Corner to geometry and make names of corner methods consistent (#22119) 2024-12-16 22:57:15 -07:00
languages python: Fix decorated test detection (#22327) 2024-12-21 13:11:52 +00:00
livekit_client Use LiveKit's Rust SDK on Linux while continue using Swift SDK on Mac (#21550) 2024-12-05 15:06:17 -08:00
livekit_client_macos Bump to livekit 1.1.6 (#21660) 2024-12-06 12:06:55 -08:00
livekit_server Use LiveKit's Rust SDK on Linux while continue using Swift SDK on Mac (#21550) 2024-12-05 15:06:17 -08:00
lsp Hide the implementation of Task (#22009) 2024-12-14 02:52:22 -07:00
markdown assistant2: Add stray visual adjusments (#22386) 2024-12-24 04:26:13 +00:00
markdown_preview Add tooltip for Markdown Preview copy code button (#22057) 2024-12-17 14:46:38 -05:00
media Switch to a single GPU context in Blade (#20853) 2024-12-18 14:47:09 -07:00
menu Show restart transformation button after successful inline assist (#20439) 2024-12-13 20:31:54 -08:00
multi_buffer Expand diagnostic excerpts using heuristics on syntactic information from TreeSitter (#21942) 2024-12-20 22:42:18 +00:00
node_runtime windows: Set CREATE_NO_WINDOW for commands (#18447) 2024-11-20 16:52:38 -08:00
notifications Markdown preview image rendering (#21082) 2024-11-22 14:49:26 -08:00
ollama Fix inaccurate Ollama context length for qwen2.5 models (#20933) 2024-11-22 10:10:01 -05:00
open_ai Introduce staff-only inline completion provider (#21739) 2024-12-09 14:26:36 +01:00
outline Toggle & Switch (#21979) 2024-12-13 14:23:02 -05:00
outline_panel Add Corner to geometry and make names of corner methods consistent (#22119) 2024-12-16 22:57:15 -07:00
paths
picker toolchains: Use language-specific terms in UI (#20985) 2024-11-21 15:57:22 +01:00
prettier Add .prettierignore support (#21297) 2024-12-12 15:45:44 -08:00
project Resolve completion items once exactly (#22448) 2024-12-27 16:43:01 +00:00
project_panel Fix knockout icon background to match hovered entry background in project panel (#22258) 2024-12-20 21:24:38 +00:00
project_symbols Add and use CodeLabel::filter_text() (#22054) 2024-12-15 22:24:41 -07:00
proto Resolve completion items once exactly (#22448) 2024-12-27 16:43:01 +00:00
recent_projects Improve StringMatchCandidate::new interface (#22011) 2024-12-14 13:35:36 -07:00
refineable
release_channel chore: Remove explicit usages of once_cell in favor of std (#22407) 2024-12-25 00:33:26 +00:00
remote Fix panics from spawn_local tasks dropped on other threads in remote server (#21022) 2024-11-21 14:50:38 -07:00
remote_server Improve Linux panic reporting (#22202) 2024-12-22 08:20:17 +00:00
repl Add a CI check for todo! and FIXME comments (#21950) 2024-12-20 08:38:50 +00:00
reqwest_client assistant: Remove low_speed_timeout (#20681) 2024-11-15 07:37:31 +01:00
rich_text Markdown preview image rendering (#21082) 2024-11-22 14:49:26 -08:00
rope rope: Minor optimization for tab indices (#20911) 2024-11-21 08:48:13 +01:00
rpc Introduce staff-only inline completion provider (#21739) 2024-12-09 14:26:36 +01:00
search editor: Add horizontal scrollbar (#19495) 2024-12-17 17:24:59 +01:00
semantic_index Add a prototype with a multi buffer having all project git changes (#21543) 2024-12-04 23:36:36 +02:00
semantic_version
session
settings Update NorwegianExtended equivalents (#21665) 2024-12-06 16:42:58 -07:00
settings_ui Toggle & Switch (#21979) 2024-12-13 14:23:02 -05:00
snippet Snippet choices (#13958) 2024-11-18 22:56:34 +01:00
snippet_provider Overhaul extension registration (#21083) 2024-11-22 19:02:32 -05:00
snippets_ui Improve StringMatchCandidate::new interface (#22011) 2024-12-14 13:35:36 -07:00
sqlez Update rustls and sqlx (#21506) 2024-12-03 23:22:26 -05:00
sqlez_macros
story
storybook Improve StringMatchCandidate::new interface (#22011) 2024-12-14 13:35:36 -07:00
sum_tree
supermaven Show inline completions in menu only for supported providers (#22181) 2024-12-18 12:55:09 +01:00
supermaven_api
tab_switcher Toggle & Switch (#21979) 2024-12-13 14:23:02 -05:00
task Move task centering code closer to user input (#22082) 2024-12-16 16:15:58 +02:00
tasks_ui Move task centering code closer to user input (#22082) 2024-12-16 16:15:58 +02:00
telemetry Allow telemetry::event! with no properties (#22190) 2024-12-18 09:41:47 -07:00
telemetry_events Improve Linux panic reporting (#22202) 2024-12-22 08:20:17 +00:00
terminal Add arrow key movements to terminal vi mode (#22103) 2024-12-20 13:49:12 +00:00
terminal_view Focus terminal when creating one after activating the terminal panel (#22133) 2024-12-17 14:19:13 +02:00
text Implement Helix Support (WIP) (#19175) 2024-12-03 23:19:52 -07:00
theme project panel: Use theme token for focused border color (#21593) 2024-12-05 19:17:26 -03:00
theme_extension Overhaul extension registration (#21083) 2024-11-22 19:02:32 -05:00
theme_importer Publish theme json schema v0.2.0 (#21428) 2024-12-03 12:57:39 -05:00
theme_selector More telemetry events (#22171) 2024-12-17 22:16:59 -07:00
time_format
title_bar Return back Windows menu (#22339) 2024-12-21 22:03:17 +00:00
toolchain_selector Improve StringMatchCandidate::new interface (#22011) 2024-12-14 13:35:36 -07:00
ui Add the SwitchWithLabel component (#22314) 2024-12-20 23:44:47 +00:00
ui_input Remove usage of use gpui::* (#22310) 2024-12-20 22:52:11 +00:00
ui_macros
util linux: Fix "Failed to start language server" errors when starting Zed from .desktop file (#22335) 2024-12-22 10:05:52 +00:00
vcs_menu Improve StringMatchCandidate::new interface (#22011) 2024-12-14 13:35:36 -07:00
vim vim: Fix deletion with sentence-motion (#22289) 2024-12-20 12:48:38 +00:00
vim_mode_setting Extract VimModeSetting to its own crate (#21019) 2024-11-21 16:24:38 -05:00
welcome More telemetry events (#22171) 2024-12-17 22:16:59 -07:00
workspace pane: Add keybinding to "Close Left" and "Close Right" actions (#22402) 2024-12-26 13:22:08 +00:00
worktree Fix permalink-to-line when Git repo root and worktree dir don't coincide (#22003) 2024-12-19 19:23:50 +00:00
zed Use more elaborate messages for permission denied errors on startup (#22368) 2024-12-23 12:34:29 +00:00
zed_actions Move task centering code closer to user input (#22082) 2024-12-16 16:15:58 +02:00
zeta Allow disabling editor scrollbars programmatically (#22333) 2024-12-21 16:58:26 +00:00