Add a way to toggle inlay hints with modifiers (#25752)

This commit is contained in:
Kirill Bulatov 2025-02-27 17:53:10 +02:00 committed by GitHub
parent 2e98bc17cb
commit e8ef36edcc
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
10 changed files with 101 additions and 9 deletions

View file

@ -12,6 +12,7 @@ use crate::{
hover_popover::{
self, hover_at, HOVER_POPOVER_GAP, MIN_POPOVER_CHARACTER_WIDTH, MIN_POPOVER_LINE_HEIGHT,
},
inlay_hint_settings,
items::BufferSearchHighlights,
mouse_context_menu::{self, MenuPosition, MouseContextMenu},
scroll::{axis_pair, scroll_amount::ScrollAmount, AxisPair},
@ -19,10 +20,11 @@ use crate::{
DisplayRow, DocumentHighlightRead, DocumentHighlightWrite, EditDisplayMode, Editor, EditorMode,
EditorSettings, EditorSnapshot, EditorStyle, ExpandExcerpts, FocusedBlock, GoToHunk,
GoToPrevHunk, GutterDimensions, HalfPageDown, HalfPageUp, HandleInput, HoveredCursor,
InlineCompletion, JumpData, LineDown, LineUp, OpenExcerpts, PageDown, PageUp, Point, RowExt,
RowRangeExt, SelectPhase, SelectedTextHighlight, Selection, SoftWrap, StickyHeaderExcerpt,
ToPoint, ToggleFold, COLUMNAR_SELECTION_MODIFIERS, CURSORS_VISIBLE_FOR, FILE_HEADER_HEIGHT,
GIT_BLAME_MAX_AUTHOR_CHARS_DISPLAYED, MAX_LINE_LEN, MULTI_BUFFER_EXCERPT_HEADER_HEIGHT,
InlayHintRefreshReason, InlineCompletion, JumpData, LineDown, LineUp, OpenExcerpts, PageDown,
PageUp, Point, RowExt, RowRangeExt, SelectPhase, SelectedTextHighlight, Selection, SoftWrap,
StickyHeaderExcerpt, ToPoint, ToggleFold, COLUMNAR_SELECTION_MODIFIERS, CURSORS_VISIBLE_FOR,
FILE_HEADER_HEIGHT, GIT_BLAME_MAX_AUTHOR_CHARS_DISPLAYED, MAX_LINE_LEN,
MULTI_BUFFER_EXCERPT_HEADER_HEIGHT,
};
use buffer_diff::{DiffHunkSecondaryStatus, DiffHunkStatus, DiffHunkStatusKind};
use client::ParticipantIndex;
@ -505,6 +507,30 @@ impl EditorElement {
return;
}
editor.update(cx, |editor, cx| {
let inlay_hint_settings = inlay_hint_settings(
editor.selections.newest_anchor().head(),
&editor.buffer.read(cx).snapshot(cx),
cx,
);
if let Some(inlay_modifiers) =
inlay_hint_settings.toggle_on_modifiers_press.as_ref()
{
if inlay_modifiers == &event.modifiers {
editor.refresh_inlay_hints(
InlayHintRefreshReason::Toggle(!editor.inlay_hints_enabled()),
cx,
);
editor.inlay_hint_modifiers_toggled = true;
} else if editor.inlay_hint_modifiers_toggled {
editor.refresh_inlay_hints(
InlayHintRefreshReason::Toggle(!editor.inlay_hints_enabled()),
cx,
);
editor.inlay_hint_modifiers_toggled = false;
}
}
if editor.hover_state.focused(window, cx) {
return;
}