actions.rs

  1//! This module contains all actions supported by [`Editor`].
  2use super::*;
  3use gpui::{action_as, action_with_deprecated_aliases, actions};
  4use schemars::JsonSchema;
  5use util::serde::default_true;
  6
  7#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema)]
  8#[serde(deny_unknown_fields)]
  9pub struct SelectNext {
 10    #[serde(default)]
 11    pub replace_newest: bool,
 12}
 13
 14#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema)]
 15#[serde(deny_unknown_fields)]
 16pub struct SelectPrevious {
 17    #[serde(default)]
 18    pub replace_newest: bool,
 19}
 20
 21#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema)]
 22#[serde(deny_unknown_fields)]
 23pub struct MoveToBeginningOfLine {
 24    #[serde(default = "default_true")]
 25    pub stop_at_soft_wraps: bool,
 26    #[serde(default)]
 27    pub stop_at_indent: bool,
 28}
 29
 30#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema)]
 31#[serde(deny_unknown_fields)]
 32pub struct SelectToBeginningOfLine {
 33    #[serde(default)]
 34    pub(super) stop_at_soft_wraps: bool,
 35    #[serde(default)]
 36    pub stop_at_indent: bool,
 37}
 38
 39#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema)]
 40#[serde(deny_unknown_fields)]
 41pub struct DeleteToBeginningOfLine {
 42    #[serde(default)]
 43    pub(super) stop_at_indent: bool,
 44}
 45
 46#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema)]
 47#[serde(deny_unknown_fields)]
 48pub struct MovePageUp {
 49    #[serde(default)]
 50    pub(super) center_cursor: bool,
 51}
 52
 53#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema)]
 54#[serde(deny_unknown_fields)]
 55pub struct MovePageDown {
 56    #[serde(default)]
 57    pub(super) center_cursor: bool,
 58}
 59
 60#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema)]
 61#[serde(deny_unknown_fields)]
 62pub struct MoveToEndOfLine {
 63    #[serde(default = "default_true")]
 64    pub stop_at_soft_wraps: bool,
 65}
 66
 67#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema)]
 68#[serde(deny_unknown_fields)]
 69pub struct SelectToEndOfLine {
 70    #[serde(default)]
 71    pub(super) stop_at_soft_wraps: bool,
 72}
 73
 74#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema)]
 75#[serde(deny_unknown_fields)]
 76pub struct ToggleCodeActions {
 77    // Display row from which the action was deployed.
 78    #[serde(default)]
 79    #[serde(skip)]
 80    pub deployed_from_indicator: Option<DisplayRow>,
 81    // Run first available task if there is only one.
 82    #[serde(default)]
 83    #[serde(skip)]
 84    pub quick_launch: bool,
 85}
 86
 87#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema)]
 88#[serde(deny_unknown_fields)]
 89pub struct ConfirmCompletion {
 90    #[serde(default)]
 91    pub item_ix: Option<usize>,
 92}
 93
 94#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema)]
 95#[serde(deny_unknown_fields)]
 96pub struct ComposeCompletion {
 97    #[serde(default)]
 98    pub item_ix: Option<usize>,
 99}
100
101#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema)]
102#[serde(deny_unknown_fields)]
103pub struct ConfirmCodeAction {
104    #[serde(default)]
105    pub item_ix: Option<usize>,
106}
107
108#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema)]
109#[serde(deny_unknown_fields)]
110pub struct ToggleComments {
111    #[serde(default)]
112    pub advance_downwards: bool,
113    #[serde(default)]
114    pub ignore_indent: bool,
115}
116
117#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema)]
118#[serde(deny_unknown_fields)]
119pub struct MoveUpByLines {
120    #[serde(default)]
121    pub(super) lines: u32,
122}
123
124#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema)]
125#[serde(deny_unknown_fields)]
126pub struct MoveDownByLines {
127    #[serde(default)]
128    pub(super) lines: u32,
129}
130
131#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema)]
132#[serde(deny_unknown_fields)]
133pub struct SelectUpByLines {
134    #[serde(default)]
135    pub(super) lines: u32,
136}
137
138#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema)]
139#[serde(deny_unknown_fields)]
140pub struct SelectDownByLines {
141    #[serde(default)]
142    pub(super) lines: u32,
143}
144
145#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema)]
146#[serde(deny_unknown_fields)]
147pub struct ExpandExcerpts {
148    #[serde(default)]
149    pub(super) lines: u32,
150}
151
152#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema)]
153#[serde(deny_unknown_fields)]
154pub struct ExpandExcerptsUp {
155    #[serde(default)]
156    pub(super) lines: u32,
157}
158
159#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema)]
160#[serde(deny_unknown_fields)]
161pub struct ExpandExcerptsDown {
162    #[serde(default)]
163    pub(super) lines: u32,
164}
165
166#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema)]
167#[serde(deny_unknown_fields)]
168pub struct ShowCompletions {
169    #[serde(default)]
170    pub(super) trigger: Option<String>,
171}
172
173#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema)]
174pub struct HandleInput(pub String);
175
176#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema)]
177#[serde(deny_unknown_fields)]
178pub struct DeleteToNextWordEnd {
179    #[serde(default)]
180    pub ignore_newlines: bool,
181}
182
183#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema)]
184#[serde(deny_unknown_fields)]
185pub struct DeleteToPreviousWordStart {
186    #[serde(default)]
187    pub ignore_newlines: bool,
188}
189
190#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema)]
191pub struct FoldAtLevel(pub u32);
192
193#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema)]
194#[serde(deny_unknown_fields)]
195pub struct SpawnNearestTask {
196    #[serde(default)]
197    pub reveal: task::RevealStrategy,
198}
199
200#[derive(Debug, PartialEq, Eq, Clone, Copy, Deserialize, Default)]
201pub enum UuidVersion {
202    #[default]
203    V4,
204    V7,
205}
206
207impl_actions!(
208    editor,
209    [
210        ComposeCompletion,
211        ConfirmCodeAction,
212        ConfirmCompletion,
213        DeleteToBeginningOfLine,
214        DeleteToNextWordEnd,
215        DeleteToPreviousWordStart,
216        ExpandExcerpts,
217        ExpandExcerptsDown,
218        ExpandExcerptsUp,
219        HandleInput,
220        MoveDownByLines,
221        MovePageDown,
222        MovePageUp,
223        MoveToBeginningOfLine,
224        MoveToEndOfLine,
225        MoveUpByLines,
226        SelectDownByLines,
227        SelectNext,
228        SelectPrevious,
229        SelectToBeginningOfLine,
230        SelectToEndOfLine,
231        SelectUpByLines,
232        SpawnNearestTask,
233        ShowCompletions,
234        ToggleCodeActions,
235        ToggleComments,
236        FoldAtLevel,
237    ]
238);
239
240actions!(
241    editor,
242    [
243        AcceptEditPrediction,
244        AcceptPartialCopilotSuggestion,
245        AcceptPartialEditPrediction,
246        AddSelectionAbove,
247        AddSelectionBelow,
248        ApplyAllDiffHunks,
249        ApplyDiffHunk,
250        Backspace,
251        Cancel,
252        CancelLanguageServerWork,
253        ConfirmRename,
254        ConfirmCompletionInsert,
255        ConfirmCompletionReplace,
256        ContextMenuFirst,
257        ContextMenuLast,
258        ContextMenuNext,
259        ContextMenuPrevious,
260        ConvertToKebabCase,
261        ConvertToLowerCamelCase,
262        ConvertToLowerCase,
263        ConvertToOppositeCase,
264        ConvertToSnakeCase,
265        ConvertToTitleCase,
266        ConvertToUpperCamelCase,
267        ConvertToUpperCase,
268        ConvertToRot13,
269        ConvertToRot47,
270        Copy,
271        CopyAndTrim,
272        CopyFileLocation,
273        CopyHighlightJson,
274        CopyFileName,
275        CopyFileNameWithoutExtension,
276        CopyPermalinkToLine,
277        Cut,
278        CutToEndOfLine,
279        Delete,
280        DeleteLine,
281        DeleteToEndOfLine,
282        DeleteToNextSubwordEnd,
283        DeleteToPreviousSubwordStart,
284        DisplayCursorNames,
285        DuplicateLineDown,
286        DuplicateLineUp,
287        DuplicateSelection,
288        ExpandMacroRecursively,
289        FindAllReferences,
290        FindNextMatch,
291        FindPreviousMatch,
292        Fold,
293        FoldAll,
294        FoldFunctionBodies,
295        FoldRecursive,
296        FoldSelectedRanges,
297        ToggleFold,
298        ToggleFoldRecursive,
299        Format,
300        FormatSelections,
301        GoToDeclaration,
302        GoToDeclarationSplit,
303        GoToDefinition,
304        GoToDefinitionSplit,
305        GoToDiagnostic,
306        GoToHunk,
307        GoToPreviousHunk,
308        GoToImplementation,
309        GoToImplementationSplit,
310        GoToNextChange,
311        GoToPreviousChange,
312        GoToPreviousDiagnostic,
313        GoToTypeDefinition,
314        GoToTypeDefinitionSplit,
315        HalfPageDown,
316        HalfPageUp,
317        Hover,
318        Indent,
319        InsertUuidV4,
320        InsertUuidV7,
321        JoinLines,
322        KillRingCut,
323        KillRingYank,
324        LineDown,
325        LineUp,
326        MoveDown,
327        MoveLeft,
328        MoveLineDown,
329        MoveLineUp,
330        MoveRight,
331        MoveToBeginning,
332        MoveToEnclosingBracket,
333        MoveToEnd,
334        MoveToEndOfParagraph,
335        MoveToNextSubwordEnd,
336        MoveToNextWordEnd,
337        MoveToPreviousSubwordStart,
338        MoveToPreviousWordStart,
339        MoveToStartOfParagraph,
340        MoveToStartOfExcerpt,
341        MoveToStartOfNextExcerpt,
342        MoveToEndOfExcerpt,
343        MoveToEndOfPreviousExcerpt,
344        MoveUp,
345        Newline,
346        NewlineAbove,
347        NewlineBelow,
348        NextEditPrediction,
349        NextScreen,
350        OpenContextMenu,
351        OpenExcerpts,
352        OpenExcerptsSplit,
353        OpenProposedChangesEditor,
354        OpenDocs,
355        OpenPermalinkToLine,
356        OpenSelectionsInMultibuffer,
357        OpenUrl,
358        OrganizeImports,
359        Outdent,
360        AutoIndent,
361        PageDown,
362        PageUp,
363        Paste,
364        PreviousEditPrediction,
365        Redo,
366        RedoSelection,
367        Rename,
368        RestartLanguageServer,
369        RevealInFileManager,
370        ReverseLines,
371        RevertFile,
372        ReloadFile,
373        Rewrap,
374        ScrollCursorBottom,
375        ScrollCursorCenter,
376        ScrollCursorCenterTopBottom,
377        ScrollCursorTop,
378        SelectAll,
379        SelectAllMatches,
380        SelectToStartOfExcerpt,
381        SelectToStartOfNextExcerpt,
382        SelectToEndOfExcerpt,
383        SelectToEndOfPreviousExcerpt,
384        SelectDown,
385        SelectEnclosingSymbol,
386        SelectLargerSyntaxNode,
387        SelectLeft,
388        SelectLine,
389        SelectPageDown,
390        SelectPageUp,
391        SelectRight,
392        SelectSmallerSyntaxNode,
393        SelectToBeginning,
394        SelectToEnd,
395        SelectToEndOfParagraph,
396        SelectToNextSubwordEnd,
397        SelectToNextWordEnd,
398        SelectToPreviousSubwordStart,
399        SelectToPreviousWordStart,
400        SelectToStartOfParagraph,
401        SelectUp,
402        ShowCharacterPalette,
403        ShowEditPrediction,
404        ShowSignatureHelp,
405        ShowWordCompletions,
406        ShuffleLines,
407        SortLinesCaseInsensitive,
408        SortLinesCaseSensitive,
409        SplitSelectionIntoLines,
410        StopLanguageServer,
411        SwitchSourceHeader,
412        Tab,
413        Backtab,
414        ToggleBreakpoint,
415        ToggleCase,
416        DisableBreakpoint,
417        EnableBreakpoint,
418        EditLogBreakpoint,
419        DebuggerRunToCursor,
420        DebuggerEvaluateSelectedText,
421        ToggleAutoSignatureHelp,
422        ToggleGitBlameInline,
423        OpenGitBlameCommit,
424        ToggleIndentGuides,
425        ToggleInlayHints,
426        ToggleInlineValues,
427        ToggleInlineDiagnostics,
428        ToggleEditPrediction,
429        ToggleLineNumbers,
430        SwapSelectionEnds,
431        SetMark,
432        ToggleRelativeLineNumbers,
433        ToggleSelectionMenu,
434        ToggleSoftWrap,
435        ToggleTabBar,
436        Transpose,
437        Undo,
438        UndoSelection,
439        UnfoldAll,
440        UnfoldLines,
441        UnfoldRecursive,
442        UniqueLinesCaseInsensitive,
443        UniqueLinesCaseSensitive,
444    ]
445);
446
447action_as!(go_to_line, ToggleGoToLine as Toggle);
448
449action_with_deprecated_aliases!(editor, OpenSelectedFilename, ["editor::OpenFile"]);
450action_with_deprecated_aliases!(editor, ToggleSelectedDiffHunks, ["editor::ToggleHunkDiff"]);
451action_with_deprecated_aliases!(editor, ExpandAllDiffHunks, ["editor::ExpandAllHunkDiffs"]);