zed/crates
Piotr Osiewicz 62f5ca562e
editor: Improve performance of lsp_ext validation (#22299)
We've received a complaint on Discord about bad multicursor performance.
I too run 15k cursor simultaneously. The gist of the issue was in the
lsp_ext; whenever we gather up actions to be registered on a buffer, we
need to know whether a buffer has any of the languages for which we have
LSP extensions. The problem stemed from the fact that we did a two-phase
filtering. For each selection we'd first check whether this selection
lies in a part of a file that is part of a language for which we have
LSP extensions. Then, we'd check whether we're running a language server
of interest for this buffer.

This is not optimal, because it would often do the redundant work:
1. We resolve selections for buffer that are known to not contain a
given language server.
2. We look up language server in the LspStore once per each matching
selection.

In case where the file is not related at all, we end up resolving all of
the selections which is pretty bad. This PR makes us skip buffers which
are known to not match the criteria. It also caches the result of
language server lookup for the buffers.

Closes #ISSUE

Release Notes:

- Improved performance with large quantity of cursors
2024-12-20 18:41:23 +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
assets
assistant Use static LazyLocks for all constant regexes (#22225) 2024-12-19 02:20:35 +00:00
assistant2 Reuse prompt editor across buffer and terminal assist (#22188) 2024-12-18 16:12:54 -05: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
auto_update_ui
breadcrumbs
call More telemetry events (#22171) 2024-12-17 22:16:59 -07:00
channel
cli Update Rust crate ipc-channel to 0.19 (#20951) 2024-11-28 10:58:10 +02:00
client More telemetry events (#22171) 2024-12-17 22:16:59 -07:00
clock
collab Add a CI check for todo! and FIXME comments (#21950) 2024-12-20 08:38:50 +00:00
collab_ui Hide chat panel button when not in a call (#22200) 2024-12-19 19:32:45 +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 Enable search within diagnostics pane (#22213) 2024-12-18 22:52:16 +00:00
docs_preprocessor
editor editor: Improve performance of lsp_ext validation (#22299) 2024-12-20 18:41:23 +00:00
evals
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 git_ui: Update todos (#22100) 2024-12-16 13:39:40 -05:00
go_to_line Only debounce the cursor position in multibuffer excerpts (#21946) 2024-12-12 18:27:06 -08:00
google_ai
gpui Add a CI check for todo! and FIXME comments (#21950) 2024-12-20 08:38:50 +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 Fix lang servers status set to Downloading when checking version (#22292) 2024-12-20 16:59:10 +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 chore: Remove stray println (#22297) 2024-12-20 18:18:44 +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 Add a CI check for todo! and FIXME comments (#21950) 2024-12-20 08:38:50 +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 Move multibuffer tests to their own source file (#22270) 2024-12-20 02:02:32 +00:00
node_runtime
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
prettier Add .prettierignore support (#21297) 2024-12-12 15:45:44 -08:00
project Add a CI check for todo! and FIXME comments (#21950) 2024-12-20 08:38:50 +00:00
project_panel Add Corner to geometry and make names of corner methods consistent (#22119) 2024-12-16 22:57:15 -07:00
project_symbols Add and use CodeLabel::filter_text() (#22054) 2024-12-15 22:24:41 -07:00
proto Start to split out initialization and registration (#21787) 2024-12-11 14:05:10 -07:00
recent_projects Improve StringMatchCandidate::new interface (#22011) 2024-12-14 13:35:36 -07:00
refineable
release_channel
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 Start to split out initialization and registration (#21787) 2024-12-11 14:05:10 -07:00
repl Add a CI check for todo! and FIXME comments (#21950) 2024-12-20 08:38:50 +00:00
reqwest_client
rich_text Markdown preview image rendering (#21082) 2024-11-22 14:49:26 -08:00
rope
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_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 Add telemetry::event! (#22146) 2024-12-17 11:39:18 -07: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 linux: Implement Menus (#21873) 2024-12-18 17:27:25 -05:00
toolchain_selector Improve StringMatchCandidate::new interface (#22011) 2024-12-14 13:35:36 -07:00
ui assistant2: Add temporary icon for the status bar item (#22156) 2024-12-17 16:57:47 -05:00
ui_input
ui_macros
util Use static LazyLocks for all constant regexes (#22225) 2024-12-19 02:20:35 +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 Fix panic in activate_pane_in_direction (#21948) 2024-12-17 22:10:30 -05: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 Enable Assistant2 outside of development builds (#22294) 2024-12-20 16:43:24 +00:00
zed_actions Move task centering code closer to user input (#22082) 2024-12-16 16:15:58 +02:00
zeta zeta: Always include current file's outline in telemetry (#22257) 2024-12-19 17:17:10 +00:00