ZIm/crates
smit fb19db00ca
editor: Do not highlight selected text + Clear highlight preemptively when new selection is detected (#25149)
When selecting text, it highlights all matching occurences along with
selected text itself. This causes highlight overlap, which looks bit
odd. This PR fixes it.

Bonus:

Context: We have an edge case (which we already cover) where we don’t
want to clear `SelectedTextHighlight` every time the selection changes.
This happens when you are dragging the selection across some word, if
you clear it directly on selection change, due to debounce wait, the
highlight take some time to appear, which causes flickering for the
user. We solve this by not clearing it directly but only clearing it
when a new selection is found. This avoids the flicker.

However, we also need to clear the selection even before the debounce
wait if we detect early on that the selection is different from previous
ones. Otherwise, the user will have to wait until the debounce time to
see it cleared on the screen.

The code for this is a little repetitive because we check the buffer
state both before and after the debounce. But this is necessary.

---
Before:

Notice overlapping corners and selected text is bit darker in this case.

![image](https://github.com/user-attachments/assets/ec371079-b513-4216-9f6e-73d1aff99250)

After:

![image](https://github.com/user-attachments/assets/0fb9cd58-5d4b-49e8-91cb-78999c3a54a8)

Release Notes:

- N/A
2025-02-19 17:43:36 +05:30
..
activity_indicator Remove more references to 'model' in GPUI APIs (#23693) 2025-01-27 04:00:27 +00:00
anthropic Solve 50+ cargo doc warnings (#24071) 2025-02-01 06:19:29 +00:00
assets Eliminate GPUI View, ViewContext, and WindowContext types (#22632) 2025-01-26 03:02:45 +00:00
assistant language_model: Return AuthenticateErrors from LanguageModelProvider::authenticate (#25126) 2025-02-19 00:01:48 +00:00
assistant2 Fix clicking on file links in editor (#25117) 2025-02-18 22:54:35 -07:00
assistant_context_editor Fix clicking on file links in editor (#25117) 2025-02-18 22:54:35 -07:00
assistant_settings Solve 50+ cargo doc warnings (#24071) 2025-02-01 06:19:29 +00:00
assistant_slash_command cx.background_executor().spawn(...) -> cx.background_spawn(...) (#25103) 2025-02-18 20:30:33 +00:00
assistant_slash_commands cx.background_executor().spawn(...) -> cx.background_spawn(...) (#25103) 2025-02-18 20:30:33 +00:00
assistant_tool Eliminate GPUI View, ViewContext, and WindowContext types (#22632) 2025-01-26 03:02:45 +00:00
assistant_tools Eliminate GPUI View, ViewContext, and WindowContext types (#22632) 2025-01-26 03:02:45 +00:00
audio Eliminate GPUI View, ViewContext, and WindowContext types (#22632) 2025-01-26 03:02:45 +00:00
auto_update cx.background_executor().spawn(...) -> cx.background_spawn(...) (#25103) 2025-02-18 20:30:33 +00:00
auto_update_ui Use the MessageNotification component for the release notes toast (#25013) 2025-02-17 11:32:04 -03:00
breadcrumbs Remove more references to 'model' in GPUI APIs (#23693) 2025-01-27 04:00:27 +00:00
buffer_diff cx.background_executor().spawn(...) -> cx.background_spawn(...) (#25103) 2025-02-18 20:30:33 +00:00
call cx.background_executor().spawn(...) -> cx.background_spawn(...) (#25103) 2025-02-18 20:30:33 +00:00
channel cx.background_executor().spawn(...) -> cx.background_spawn(...) (#25103) 2025-02-18 20:30:33 +00:00
cli Add build SHA to panic reports and zed --version (on nightly/dev) (#24258) 2025-02-06 02:09:24 -07:00
client cx.background_executor().spawn(...) -> cx.background_spawn(...) (#25103) 2025-02-18 20:30:33 +00:00
clock chore: Use workspace fields for edition and publish (#23291) 2025-01-17 17:39:22 +01:00
collab cx.background_executor().spawn(...) -> cx.background_spawn(...) (#25103) 2025-02-18 20:30:33 +00:00
collab_ui cx.background_executor().spawn(...) -> cx.background_spawn(...) (#25103) 2025-02-18 20:30:33 +00:00
collections chore: Use workspace fields for edition and publish (#23291) 2025-01-17 17:39:22 +01:00
command_palette cx.background_executor().spawn(...) -> cx.background_spawn(...) (#25103) 2025-02-18 20:30:33 +00:00
command_palette_hooks vim: :set support (#24209) 2025-02-11 04:55:40 +00:00
component project: Fine-grained language server management (#24038) 2025-02-14 15:41:49 +01:00
component_preview ui: Update Label component (#24653) 2025-02-11 20:16:59 +00:00
context_server cx.background_executor().spawn(...) -> cx.background_spawn(...) (#25103) 2025-02-18 20:30:33 +00:00
context_server_settings Eliminate GPUI View, ViewContext, and WindowContext types (#22632) 2025-01-26 03:02:45 +00:00
copilot cx.background_executor().spawn(...) -> cx.background_spawn(...) (#25103) 2025-02-18 20:30:33 +00:00
db cx.background_executor().spawn(...) -> cx.background_spawn(...) (#25103) 2025-02-18 20:30:33 +00:00
deepseek Add DeepSeek support (#23551) 2025-01-27 13:40:59 -05:00
diagnostics lsp: Send DidOpen notifications when changing selections in multi buffer (#22958) 2025-02-07 12:33:35 +01:00
docs_preprocessor Eliminate GPUI View, ViewContext, and WindowContext types (#22632) 2025-01-26 03:02:45 +00:00
editor editor: Do not highlight selected text + Clear highlight preemptively when new selection is detected (#25149) 2025-02-19 17:43:36 +05:30
evals file_finder: Remove common segments of long paths in search results (#25049) 2025-02-18 10:09:15 -05:00
extension theme: Don't log errors for missing themes until extensions have loaded (#25098) 2025-02-18 17:47:25 +00:00
extension_api file_finder: Remove common segments of long paths in search results (#25049) 2025-02-18 10:09:15 -05:00
extension_cli extension_cli: Include the list of what an extension provides in the generated manifest (#24295) 2025-02-05 18:17:19 +00:00
extension_host cx.background_executor().spawn(...) -> cx.background_spawn(...) (#25103) 2025-02-18 20:30:33 +00:00
extensions_ui extensions_ui: Add general structure for filtering extensions by what they provide (#24325) 2025-02-06 00:09:37 +00:00
feature_flags zeta: Remove predict-edits-launch feature flag (#24829) 2025-02-13 21:48:09 +00:00
feedback cx.background_executor().spawn(...) -> cx.background_spawn(...) (#25103) 2025-02-18 20:30:33 +00:00
file_finder Don't open file finder menu on command (#25097) 2025-02-18 14:27:10 -07:00
file_icons Allow icon themes to provide their own file associations (#24926) 2025-02-15 00:35:13 +00:00
fs git: Compute and synchronize diffs from HEAD (#23626) 2025-02-04 15:29:10 -05:00
fsevent Deflake fs::test_event_stream_simple (#24013) 2025-01-30 23:53:36 -07:00
fuzzy file_finder: Remove common segments of long paths in search results (#25049) 2025-02-18 10:09:15 -05:00
git git: Don't load shallow HEAD text of symlinks (#25058) 2025-02-18 15:18:23 +00:00
git_hosting_providers Add an undo button to the git panel (#24593) 2025-02-12 15:57:08 -07:00
git_ui cx.background_executor().spawn(...) -> cx.background_spawn(...) (#25103) 2025-02-18 20:30:33 +00:00
go_to_line project: Fine-grained language server management (#24038) 2025-02-14 15:41:49 +01:00
google_ai google_ai: Add support for Gemini 2.0 models (#24448) 2025-02-07 11:18:18 -05:00
gpui Revert gutter stripes as indicator of hunk staged status (#25089) 2025-02-18 13:20:39 -05:00
gpui_macros windows: Fix tests on Windows (#22616) 2025-02-05 14:30:09 +00:00
gpui_tokio Make the gpui_tokio crate generic over the context it spawns (#23995) 2025-01-31 02:00:55 +00:00
html_to_markdown Eliminate GPUI View, ViewContext, and WindowContext types (#22632) 2025-01-26 03:02:45 +00:00
http_client Replace rustls-native-certs with rustls-platform-verifier (#24656) 2025-02-12 07:32:17 -08:00
image_viewer cx.background_executor().spawn(...) -> cx.background_spawn(...) (#25103) 2025-02-18 20:30:33 +00:00
indexed_docs Eliminate GPUI View, ViewContext, and WindowContext types (#22632) 2025-01-26 03:02:45 +00:00
inline_completion edit predictions: Show user if current project is open source (#24587) 2025-02-10 22:28:56 -03:00
inline_completion_button inline_completion_button: Put "Eager Preview Mode" menu entry behind a feature flag (#24734) 2025-02-12 16:23:23 +00:00
install_cli Fix missed renames in #22632 (#23688) 2025-01-26 23:37:34 +00:00
journal cx.background_executor().spawn(...) -> cx.background_spawn(...) (#25103) 2025-02-18 20:30:33 +00:00
language Fix clicking on file links in editor (#25117) 2025-02-18 22:54:35 -07:00
language_extension Fix missed renames in #22632 (#23688) 2025-01-26 23:37:34 +00:00
language_model language_model: Return AuthenticateErrors from LanguageModelProvider::authenticate (#25126) 2025-02-19 00:01:48 +00:00
language_model_selector language_model_selector: Authenticate all providers up front (#25123) 2025-02-19 01:40:07 +00:00
language_models language_model: Return AuthenticateErrors from LanguageModelProvider::authenticate (#25126) 2025-02-19 00:01:48 +00:00
language_selector Refactor to use SharedString in more places (#23813) 2025-01-28 19:04:21 -05:00
language_tools Persist selections for editors (#25083) 2025-02-18 14:27:00 +00:00
languages Highlight super and this as keywords in JS/TS/TSX (#25135) 2025-02-19 05:53:16 +00:00
livekit_api Rename livekit_server to livekit_api (#24984) 2025-02-16 20:24:12 +00:00
livekit_client cx.background_executor().spawn(...) -> cx.background_spawn(...) (#25103) 2025-02-18 20:30:33 +00:00
livekit_client_macos Rename livekit_server to livekit_api (#24984) 2025-02-16 20:24:12 +00:00
lmstudio lmstudio: Support missing quantization in model metadata (#24054) 2025-01-31 22:28:11 +00:00
lsp cx.background_executor().spawn(...) -> cx.background_spawn(...) (#25103) 2025-02-18 20:30:33 +00:00
markdown Fix clicking on file links in editor (#25117) 2025-02-18 22:54:35 -07:00
markdown_preview cx.background_executor().spawn(...) -> cx.background_spawn(...) (#25103) 2025-02-18 20:30:33 +00:00
media chore: Use workspace fields for edition and publish (#23291) 2025-01-17 17:39:22 +01:00
menu chore: Use workspace fields for edition and publish (#23291) 2025-01-17 17:39:22 +01:00
migrator migrator: Fix keymap task_name regression (#24898) 2025-02-15 01:33:30 +05:30
mistral assistant: Add Mistral support (#24879) 2025-02-14 13:07:41 -05:00
multi_buffer cx.background_executor().spawn(...) -> cx.background_spawn(...) (#25103) 2025-02-18 20:30:33 +00:00
node_runtime Pass extra CA certs to node process if env var exists (#23662) 2025-01-30 08:56:02 -08:00
notifications Remove more references to 'model' in GPUI APIs (#23693) 2025-01-27 04:00:27 +00:00
ollama Eliminate GPUI View, ViewContext, and WindowContext types (#22632) 2025-01-26 03:02:45 +00:00
open_ai open_ai: Include o3-mini in Model::from_id (#24261) 2025-02-05 16:45:38 -05:00
outline project: Fine-grained language server management (#24038) 2025-02-14 15:41:49 +01:00
outline_panel cx.background_executor().spawn(...) -> cx.background_spawn(...) (#25103) 2025-02-18 20:30:33 +00:00
panel git_ui: Update git panel commit editor, start on quick commit 2025-02-10 15:52:09 +00:00
paths Settings/keymap backup path next to files + update notification messages (#24517) 2025-02-09 16:51:37 -07:00
picker ui: Remove track_focus method from Picker render (#25043) 2025-02-17 19:18:12 -03:00
prettier project: Fine-grained language server management (#24038) 2025-02-14 15:41:49 +01:00
project Properly normalize completion labels with multi-byte characters (#25150) 2025-02-19 12:11:10 +00:00
project_panel cx.background_executor().spawn(...) -> cx.background_spawn(...) (#25103) 2025-02-18 20:30:33 +00:00
project_symbols windows: Fix tests on Windows (#22616) 2025-02-05 14:30:09 +00:00
prompt_library cx.background_executor().spawn(...) -> cx.background_spawn(...) (#25103) 2025-02-18 20:30:33 +00:00
proto Git context menu (#24844) 2025-02-14 14:04:32 -07:00
recent_projects Fix clicking on file links in editor (#25117) 2025-02-18 22:54:35 -07:00
refineable windows: Fix tests on Windows (#22616) 2025-02-05 14:30:09 +00:00
release_channel Solve 50+ cargo doc warnings (#24071) 2025-02-01 06:19:29 +00:00
remote cx.background_executor().spawn(...) -> cx.background_spawn(...) (#25103) 2025-02-18 20:30:33 +00:00
remote_server cx.background_executor().spawn(...) -> cx.background_spawn(...) (#25103) 2025-02-18 20:30:33 +00:00
repl Terminal mouse improvements (#25104) 2025-02-18 13:10:10 -08:00
reqwest_client Redact Google Gemini API keys from error messaging and log (#24884) 2025-02-17 11:42:22 -05:00
rich_text file_finder: Remove common segments of long paths in search results (#25049) 2025-02-18 10:09:15 -05:00
rope Fix editor::SplitSelectionIntoLines adding an extra line at the end (#25053) 2025-02-18 03:23:48 +00:00
rpc extensions_ui: Add general structure for filtering extensions by what they provide (#24325) 2025-02-06 00:09:37 +00:00
schema_generator Add schema_generator for generating JSON schemas (#23991) 2025-01-31 01:22:10 +00:00
search Highlight regex in the project search input (#25147) 2025-02-19 11:04:44 +00:00
semantic_index cx.background_executor().spawn(...) -> cx.background_spawn(...) (#25103) 2025-02-18 20:30:33 +00:00
semantic_version chore: Use workspace fields for edition and publish (#23291) 2025-01-17 17:39:22 +01:00
session cx.background_executor().spawn(...) -> cx.background_spawn(...) (#25103) 2025-02-18 20:30:33 +00:00
settings migrator: In-memory migration and improved UX (#24621) 2025-02-12 06:47:08 +05:30
settings_ui Eliminate GPUI View, ViewContext, and WindowContext types (#22632) 2025-01-26 03:02:45 +00:00
snippet Eliminate GPUI View, ViewContext, and WindowContext types (#22632) 2025-01-26 03:02:45 +00:00
snippet_provider snippets: Fix snippets not updating while containing comments (#23755) 2025-01-28 10:37:48 +01:00
snippets_ui Remove more references to 'model' in GPUI APIs (#23693) 2025-01-27 04:00:27 +00:00
sqlez Eliminate GPUI View, ViewContext, and WindowContext types (#22632) 2025-01-26 03:02:45 +00:00
sqlez_macros windows: Fix tests on Windows (#22616) 2025-02-05 14:30:09 +00:00
story Eliminate GPUI View, ViewContext, and WindowContext types (#22632) 2025-01-26 03:02:45 +00:00
storybook ui: Update Label component (#24653) 2025-02-11 20:16:59 +00:00
streaming_diff chore: Use workspace fields for edition and publish (#23291) 2025-01-17 17:39:22 +01:00
sum_tree Implement staging and unstaging hunks (#24606) 2025-02-12 19:46:42 +00:00
supermaven Include prediction ID on edit prediction accepted/discarded events (#24480) 2025-02-07 22:06:37 +00:00
supermaven_api Eliminate GPUI View, ViewContext, and WindowContext types (#22632) 2025-01-26 03:02:45 +00:00
tab_switcher project: Fine-grained language server management (#24038) 2025-02-14 15:41:49 +01:00
task cx.background_executor().spawn(...) -> cx.background_spawn(...) (#25103) 2025-02-18 20:30:33 +00:00
tasks_ui Display case-sensitive keybindings for vim commands (#24322) 2025-02-14 22:03:59 -07:00
telemetry chore: Use workspace fields for edition and publish (#23291) 2025-01-17 17:39:22 +01:00
telemetry_events Add build SHA to panic reports and zed --version (on nightly/dev) (#24258) 2025-02-06 02:09:24 -07:00
terminal terminal: Handle shift+click selection (#25143) 2025-02-19 14:43:59 +05:30
terminal_view Terminal mouse improvements (#25104) 2025-02-18 13:10:10 -08:00
text Fix unnecessarily large edits emitted from multi buffer on diff recalculation (#23753) 2025-01-27 18:11:15 -08:00
theme Revert gutter stripes as indicator of hunk staged status (#25089) 2025-02-18 13:20:39 -05:00
theme_extension theme: Don't log errors for missing themes until extensions have loaded (#25098) 2025-02-18 17:47:25 +00:00
theme_importer Add schema_generator for generating JSON schemas (#23991) 2025-01-31 01:22:10 +00:00
theme_selector Add small improvement to the theme picker footer (#25088) 2025-02-18 13:24:06 -03:00
time_format Add an undo button to the git panel (#24593) 2025-02-12 15:57:08 -07:00
title_bar file_finder: Remove common segments of long paths in search results (#25049) 2025-02-18 10:09:15 -05:00
toolchain_selector file_finder: Remove common segments of long paths in search results (#25049) 2025-02-18 10:09:15 -05:00
ui Use lowercase for vim key bindings (#25024) 2025-02-17 10:17:22 -07:00
ui_input Eliminate GPUI View, ViewContext, and WindowContext types (#22632) 2025-01-26 03:02:45 +00:00
ui_macros component: Add component and component_preview crates to power UI components (#24456) 2025-02-09 13:25:03 -05:00
util Fix linux zeta modifiers display (#24764) 2025-02-12 14:46:42 -08:00
util_macros windows: Fix tests on Windows (#22616) 2025-02-05 14:30:09 +00:00
vim Fix for #25039 (#25138) 2025-02-19 06:24:54 +00:00
vim_mode_setting Eliminate GPUI View, ViewContext, and WindowContext types (#22632) 2025-01-26 03:02:45 +00:00
welcome welcome: Try Zed Edit Prediction (#24876) 2025-02-14 10:28:07 -05:00
workspace cx.background_executor().spawn(...) -> cx.background_spawn(...) (#25103) 2025-02-18 20:30:33 +00:00
worktree cx.background_executor().spawn(...) -> cx.background_spawn(...) (#25103) 2025-02-18 20:30:33 +00:00
zed Fix clicking on file links in editor (#25117) 2025-02-18 22:54:35 -07:00
zed_actions Adds a way to toggle font size without settings adjustments (#24857) 2025-02-14 13:27:48 +02:00
zeta cx.background_executor().spawn(...) -> cx.background_spawn(...) (#25103) 2025-02-18 20:30:33 +00:00