This PR revives zed-industries/zed#27818 and aims to complete the partially implemented overloaded signature help feature. The first commit is a rebase of zed-industries/zed#27818, and the subsequent commit addresses all review feedback from the original PR. Now the overloaded signature help works like https://github.com/user-attachments/assets/e253c9a0-e3a5-4bfe-8003-eb75de41f672 Closes #21493 Release Notes: - Implemented signature help for overloaded items. Additionally, added a support for rendering signature help documentation. --------- Co-authored-by: Fernando Tagawa <tagawafernando@gmail.com> Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: Kirill Bulatov <mail4score@gmail.com> Co-authored-by: Kirill Bulatov <kirill@zed.dev>
470 lines
12 KiB
Rust
470 lines
12 KiB
Rust
//! This module contains all actions supported by [`Editor`].
|
|
use super::*;
|
|
use gpui::{Action, actions};
|
|
use schemars::JsonSchema;
|
|
use util::serde::default_true;
|
|
|
|
#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema, Action)]
|
|
#[action(namespace = editor)]
|
|
#[serde(deny_unknown_fields)]
|
|
pub struct SelectNext {
|
|
#[serde(default)]
|
|
pub replace_newest: bool,
|
|
}
|
|
|
|
#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema, Action)]
|
|
#[action(namespace = editor)]
|
|
#[serde(deny_unknown_fields)]
|
|
pub struct SelectPrevious {
|
|
#[serde(default)]
|
|
pub replace_newest: bool,
|
|
}
|
|
|
|
#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema, Action)]
|
|
#[action(namespace = editor)]
|
|
#[serde(deny_unknown_fields)]
|
|
pub struct MoveToBeginningOfLine {
|
|
#[serde(default = "default_true")]
|
|
pub stop_at_soft_wraps: bool,
|
|
#[serde(default)]
|
|
pub stop_at_indent: bool,
|
|
}
|
|
|
|
#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema, Action)]
|
|
#[action(namespace = editor)]
|
|
#[serde(deny_unknown_fields)]
|
|
pub struct SelectToBeginningOfLine {
|
|
#[serde(default)]
|
|
pub(super) stop_at_soft_wraps: bool,
|
|
#[serde(default)]
|
|
pub stop_at_indent: bool,
|
|
}
|
|
|
|
#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema, Action)]
|
|
#[action(namespace = editor)]
|
|
#[serde(deny_unknown_fields)]
|
|
pub struct DeleteToBeginningOfLine {
|
|
#[serde(default)]
|
|
pub(super) stop_at_indent: bool,
|
|
}
|
|
|
|
#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema, Action)]
|
|
#[action(namespace = editor)]
|
|
#[serde(deny_unknown_fields)]
|
|
pub struct MovePageUp {
|
|
#[serde(default)]
|
|
pub(super) center_cursor: bool,
|
|
}
|
|
|
|
#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema, Action)]
|
|
#[action(namespace = editor)]
|
|
#[serde(deny_unknown_fields)]
|
|
pub struct MovePageDown {
|
|
#[serde(default)]
|
|
pub(super) center_cursor: bool,
|
|
}
|
|
|
|
#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema, Action)]
|
|
#[action(namespace = editor)]
|
|
#[serde(deny_unknown_fields)]
|
|
pub struct MoveToEndOfLine {
|
|
#[serde(default = "default_true")]
|
|
pub stop_at_soft_wraps: bool,
|
|
}
|
|
|
|
#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema, Action)]
|
|
#[action(namespace = editor)]
|
|
#[serde(deny_unknown_fields)]
|
|
pub struct SelectToEndOfLine {
|
|
#[serde(default)]
|
|
pub(super) stop_at_soft_wraps: bool,
|
|
}
|
|
|
|
#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema, Action)]
|
|
#[action(namespace = editor)]
|
|
#[serde(deny_unknown_fields)]
|
|
pub struct ToggleCodeActions {
|
|
// Source from which the action was deployed.
|
|
#[serde(default)]
|
|
#[serde(skip)]
|
|
pub deployed_from: Option<CodeActionSource>,
|
|
// Run first available task if there is only one.
|
|
#[serde(default)]
|
|
#[serde(skip)]
|
|
pub quick_launch: bool,
|
|
}
|
|
|
|
#[derive(PartialEq, Clone, Debug)]
|
|
pub enum CodeActionSource {
|
|
Indicator(DisplayRow),
|
|
RunMenu(DisplayRow),
|
|
QuickActionBar,
|
|
}
|
|
|
|
#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema, Action)]
|
|
#[action(namespace = editor)]
|
|
#[serde(deny_unknown_fields)]
|
|
pub struct ConfirmCompletion {
|
|
#[serde(default)]
|
|
pub item_ix: Option<usize>,
|
|
}
|
|
|
|
#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema, Action)]
|
|
#[action(namespace = editor)]
|
|
#[serde(deny_unknown_fields)]
|
|
pub struct ComposeCompletion {
|
|
#[serde(default)]
|
|
pub item_ix: Option<usize>,
|
|
}
|
|
|
|
#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema, Action)]
|
|
#[action(namespace = editor)]
|
|
#[serde(deny_unknown_fields)]
|
|
pub struct ConfirmCodeAction {
|
|
#[serde(default)]
|
|
pub item_ix: Option<usize>,
|
|
}
|
|
|
|
#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema, Action)]
|
|
#[action(namespace = editor)]
|
|
#[serde(deny_unknown_fields)]
|
|
pub struct ToggleComments {
|
|
#[serde(default)]
|
|
pub advance_downwards: bool,
|
|
#[serde(default)]
|
|
pub ignore_indent: bool,
|
|
}
|
|
|
|
#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema, Action)]
|
|
#[action(namespace = editor)]
|
|
#[serde(deny_unknown_fields)]
|
|
pub struct MoveUpByLines {
|
|
#[serde(default)]
|
|
pub(super) lines: u32,
|
|
}
|
|
|
|
#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema, Action)]
|
|
#[action(namespace = editor)]
|
|
#[serde(deny_unknown_fields)]
|
|
pub struct MoveDownByLines {
|
|
#[serde(default)]
|
|
pub(super) lines: u32,
|
|
}
|
|
|
|
#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema, Action)]
|
|
#[action(namespace = editor)]
|
|
#[serde(deny_unknown_fields)]
|
|
pub struct SelectUpByLines {
|
|
#[serde(default)]
|
|
pub(super) lines: u32,
|
|
}
|
|
|
|
#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema, Action)]
|
|
#[action(namespace = editor)]
|
|
#[serde(deny_unknown_fields)]
|
|
pub struct SelectDownByLines {
|
|
#[serde(default)]
|
|
pub(super) lines: u32,
|
|
}
|
|
|
|
#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema, Action)]
|
|
#[action(namespace = editor)]
|
|
#[serde(deny_unknown_fields)]
|
|
pub struct ExpandExcerpts {
|
|
#[serde(default)]
|
|
pub(super) lines: u32,
|
|
}
|
|
|
|
#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema, Action)]
|
|
#[action(namespace = editor)]
|
|
#[serde(deny_unknown_fields)]
|
|
pub struct ExpandExcerptsUp {
|
|
#[serde(default)]
|
|
pub(super) lines: u32,
|
|
}
|
|
|
|
#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema, Action)]
|
|
#[action(namespace = editor)]
|
|
#[serde(deny_unknown_fields)]
|
|
pub struct ExpandExcerptsDown {
|
|
#[serde(default)]
|
|
pub(super) lines: u32,
|
|
}
|
|
|
|
#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema, Action)]
|
|
#[action(namespace = editor)]
|
|
#[serde(deny_unknown_fields)]
|
|
pub struct ShowCompletions {
|
|
#[serde(default)]
|
|
pub(super) trigger: Option<String>,
|
|
}
|
|
|
|
#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema, Action)]
|
|
#[action(namespace = editor)]
|
|
pub struct HandleInput(pub String);
|
|
|
|
#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema, Action)]
|
|
#[action(namespace = editor)]
|
|
#[serde(deny_unknown_fields)]
|
|
pub struct DeleteToNextWordEnd {
|
|
#[serde(default)]
|
|
pub ignore_newlines: bool,
|
|
}
|
|
|
|
#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema, Action)]
|
|
#[action(namespace = editor)]
|
|
#[serde(deny_unknown_fields)]
|
|
pub struct DeleteToPreviousWordStart {
|
|
#[serde(default)]
|
|
pub ignore_newlines: bool,
|
|
}
|
|
|
|
#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema, Action)]
|
|
#[action(namespace = editor)]
|
|
pub struct FoldAtLevel(pub u32);
|
|
|
|
#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema, Action)]
|
|
#[action(namespace = editor)]
|
|
#[serde(deny_unknown_fields)]
|
|
pub struct SpawnNearestTask {
|
|
#[serde(default)]
|
|
pub reveal: task::RevealStrategy,
|
|
}
|
|
|
|
#[derive(Debug, PartialEq, Eq, Clone, Copy, Deserialize, Default)]
|
|
pub enum UuidVersion {
|
|
#[default]
|
|
V4,
|
|
V7,
|
|
}
|
|
|
|
actions!(debugger, [RunToCursor, EvaluateSelectedText]);
|
|
|
|
actions!(
|
|
go_to_line,
|
|
[
|
|
#[action(name = "Toggle")]
|
|
ToggleGoToLine
|
|
]
|
|
);
|
|
|
|
actions!(
|
|
editor,
|
|
[
|
|
AcceptEditPrediction,
|
|
AcceptPartialCopilotSuggestion,
|
|
AcceptPartialEditPrediction,
|
|
AddSelectionAbove,
|
|
AddSelectionBelow,
|
|
ApplyAllDiffHunks,
|
|
ApplyDiffHunk,
|
|
Backspace,
|
|
Cancel,
|
|
CancelFlycheck,
|
|
CancelLanguageServerWork,
|
|
ClearFlycheck,
|
|
ConfirmRename,
|
|
ConfirmCompletionInsert,
|
|
ConfirmCompletionReplace,
|
|
ContextMenuFirst,
|
|
ContextMenuLast,
|
|
ContextMenuNext,
|
|
ContextMenuPrevious,
|
|
ConvertIndentationToSpaces,
|
|
ConvertIndentationToTabs,
|
|
ConvertToKebabCase,
|
|
ConvertToLowerCamelCase,
|
|
ConvertToLowerCase,
|
|
ConvertToOppositeCase,
|
|
ConvertToSnakeCase,
|
|
ConvertToTitleCase,
|
|
ConvertToUpperCamelCase,
|
|
ConvertToUpperCase,
|
|
ConvertToRot13,
|
|
ConvertToRot47,
|
|
Copy,
|
|
CopyAndTrim,
|
|
CopyFileLocation,
|
|
CopyHighlightJson,
|
|
CopyFileName,
|
|
CopyFileNameWithoutExtension,
|
|
CopyPermalinkToLine,
|
|
Cut,
|
|
CutToEndOfLine,
|
|
Delete,
|
|
DeleteLine,
|
|
DeleteToEndOfLine,
|
|
DeleteToNextSubwordEnd,
|
|
DeleteToPreviousSubwordStart,
|
|
DisplayCursorNames,
|
|
DuplicateLineDown,
|
|
DuplicateLineUp,
|
|
DuplicateSelection,
|
|
#[action(deprecated_aliases = ["editor::ExpandAllHunkDiffs"])]
|
|
ExpandAllDiffHunks,
|
|
ExpandMacroRecursively,
|
|
FindAllReferences,
|
|
FindNextMatch,
|
|
FindPreviousMatch,
|
|
Fold,
|
|
FoldAll,
|
|
FoldFunctionBodies,
|
|
FoldRecursive,
|
|
FoldSelectedRanges,
|
|
ToggleFold,
|
|
ToggleFoldRecursive,
|
|
Format,
|
|
FormatSelections,
|
|
GoToDeclaration,
|
|
GoToDeclarationSplit,
|
|
GoToDefinition,
|
|
GoToDefinitionSplit,
|
|
GoToDiagnostic,
|
|
GoToHunk,
|
|
GoToPreviousHunk,
|
|
GoToImplementation,
|
|
GoToImplementationSplit,
|
|
GoToNextChange,
|
|
GoToParentModule,
|
|
GoToPreviousChange,
|
|
GoToPreviousDiagnostic,
|
|
GoToTypeDefinition,
|
|
GoToTypeDefinitionSplit,
|
|
HalfPageDown,
|
|
HalfPageUp,
|
|
Hover,
|
|
Indent,
|
|
InsertUuidV4,
|
|
InsertUuidV7,
|
|
JoinLines,
|
|
KillRingCut,
|
|
KillRingYank,
|
|
LineDown,
|
|
LineUp,
|
|
MoveDown,
|
|
MoveLeft,
|
|
MoveLineDown,
|
|
MoveLineUp,
|
|
MoveRight,
|
|
MoveToBeginning,
|
|
MoveToEnclosingBracket,
|
|
MoveToEnd,
|
|
MoveToEndOfParagraph,
|
|
MoveToNextSubwordEnd,
|
|
MoveToNextWordEnd,
|
|
MoveToPreviousSubwordStart,
|
|
MoveToPreviousWordStart,
|
|
MoveToStartOfParagraph,
|
|
MoveToStartOfExcerpt,
|
|
MoveToStartOfNextExcerpt,
|
|
MoveToEndOfExcerpt,
|
|
MoveToEndOfPreviousExcerpt,
|
|
MoveUp,
|
|
Newline,
|
|
NewlineAbove,
|
|
NewlineBelow,
|
|
NextEditPrediction,
|
|
NextScreen,
|
|
OpenContextMenu,
|
|
OpenExcerpts,
|
|
OpenExcerptsSplit,
|
|
OpenProposedChangesEditor,
|
|
OpenDocs,
|
|
OpenPermalinkToLine,
|
|
#[action(deprecated_aliases = ["editor::OpenFile"])]
|
|
OpenSelectedFilename,
|
|
OpenSelectionsInMultibuffer,
|
|
OpenUrl,
|
|
OrganizeImports,
|
|
Outdent,
|
|
AutoIndent,
|
|
PageDown,
|
|
PageUp,
|
|
Paste,
|
|
PreviousEditPrediction,
|
|
Redo,
|
|
RedoSelection,
|
|
Rename,
|
|
RestartLanguageServer,
|
|
RevealInFileManager,
|
|
ReverseLines,
|
|
ReloadFile,
|
|
Rewrap,
|
|
RunFlycheck,
|
|
ScrollCursorBottom,
|
|
ScrollCursorCenter,
|
|
ScrollCursorCenterTopBottom,
|
|
ScrollCursorTop,
|
|
SelectAll,
|
|
SelectAllMatches,
|
|
SelectToStartOfExcerpt,
|
|
SelectToStartOfNextExcerpt,
|
|
SelectToEndOfExcerpt,
|
|
SelectToEndOfPreviousExcerpt,
|
|
SelectDown,
|
|
SelectEnclosingSymbol,
|
|
SelectLargerSyntaxNode,
|
|
SelectLeft,
|
|
SelectLine,
|
|
SelectPageDown,
|
|
SelectPageUp,
|
|
SelectRight,
|
|
SelectSmallerSyntaxNode,
|
|
SelectToBeginning,
|
|
SelectToEnd,
|
|
SelectToEndOfParagraph,
|
|
SelectToNextSubwordEnd,
|
|
SelectToNextWordEnd,
|
|
SelectToPreviousSubwordStart,
|
|
SelectToPreviousWordStart,
|
|
SelectToStartOfParagraph,
|
|
SelectUp,
|
|
ShowCharacterPalette,
|
|
ShowEditPrediction,
|
|
ShowSignatureHelp,
|
|
ShowWordCompletions,
|
|
ShuffleLines,
|
|
SignatureHelpNext,
|
|
SignatureHelpPrevious,
|
|
SortLinesCaseInsensitive,
|
|
SortLinesCaseSensitive,
|
|
SplitSelectionIntoLines,
|
|
StopLanguageServer,
|
|
SwitchSourceHeader,
|
|
Tab,
|
|
Backtab,
|
|
ToggleBreakpoint,
|
|
ToggleCase,
|
|
DisableBreakpoint,
|
|
EnableBreakpoint,
|
|
EditLogBreakpoint,
|
|
ToggleAutoSignatureHelp,
|
|
ToggleGitBlameInline,
|
|
OpenGitBlameCommit,
|
|
ToggleDiagnostics,
|
|
ToggleIndentGuides,
|
|
ToggleInlayHints,
|
|
ToggleInlineValues,
|
|
ToggleInlineDiagnostics,
|
|
ToggleEditPrediction,
|
|
ToggleLineNumbers,
|
|
ToggleMinimap,
|
|
SwapSelectionEnds,
|
|
SetMark,
|
|
ToggleRelativeLineNumbers,
|
|
#[action(deprecated_aliases = ["editor::ToggleHunkDiff"])]
|
|
ToggleSelectedDiffHunks,
|
|
ToggleSelectionMenu,
|
|
ToggleSoftWrap,
|
|
ToggleTabBar,
|
|
Transpose,
|
|
Undo,
|
|
UndoSelection,
|
|
UnfoldAll,
|
|
UnfoldLines,
|
|
UnfoldRecursive,
|
|
UniqueLinesCaseInsensitive,
|
|
UniqueLinesCaseSensitive,
|
|
]
|
|
);
|