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        GoToParentModule,
312        GoToPreviousChange,
313        GoToPreviousDiagnostic,
314        GoToTypeDefinition,
315        GoToTypeDefinitionSplit,
316        HalfPageDown,
317        HalfPageUp,
318        Hover,
319        Indent,
320        InsertUuidV4,
321        InsertUuidV7,
322        JoinLines,
323        KillRingCut,
324        KillRingYank,
325        LineDown,
326        LineUp,
327        MoveDown,
328        MoveLeft,
329        MoveLineDown,
330        MoveLineUp,
331        MoveRight,
332        MoveToBeginning,
333        MoveToEnclosingBracket,
334        MoveToEnd,
335        MoveToEndOfParagraph,
336        MoveToNextSubwordEnd,
337        MoveToNextWordEnd,
338        MoveToPreviousSubwordStart,
339        MoveToPreviousWordStart,
340        MoveToStartOfParagraph,
341        MoveToStartOfExcerpt,
342        MoveToStartOfNextExcerpt,
343        MoveToEndOfExcerpt,
344        MoveToEndOfPreviousExcerpt,
345        MoveUp,
346        Newline,
347        NewlineAbove,
348        NewlineBelow,
349        NextEditPrediction,
350        NextScreen,
351        OpenContextMenu,
352        OpenExcerpts,
353        OpenExcerptsSplit,
354        OpenProposedChangesEditor,
355        OpenDocs,
356        OpenPermalinkToLine,
357        OpenSelectionsInMultibuffer,
358        OpenUrl,
359        OrganizeImports,
360        Outdent,
361        AutoIndent,
362        PageDown,
363        PageUp,
364        Paste,
365        PreviousEditPrediction,
366        Redo,
367        RedoSelection,
368        Rename,
369        RestartLanguageServer,
370        RevealInFileManager,
371        ReverseLines,
372        RevertFile,
373        ReloadFile,
374        Rewrap,
375        ScrollCursorBottom,
376        ScrollCursorCenter,
377        ScrollCursorCenterTopBottom,
378        ScrollCursorTop,
379        SelectAll,
380        SelectAllMatches,
381        SelectToStartOfExcerpt,
382        SelectToStartOfNextExcerpt,
383        SelectToEndOfExcerpt,
384        SelectToEndOfPreviousExcerpt,
385        SelectDown,
386        SelectEnclosingSymbol,
387        SelectLargerSyntaxNode,
388        SelectLeft,
389        SelectLine,
390        SelectPageDown,
391        SelectPageUp,
392        SelectRight,
393        SelectSmallerSyntaxNode,
394        SelectToBeginning,
395        SelectToEnd,
396        SelectToEndOfParagraph,
397        SelectToNextSubwordEnd,
398        SelectToNextWordEnd,
399        SelectToPreviousSubwordStart,
400        SelectToPreviousWordStart,
401        SelectToStartOfParagraph,
402        SelectUp,
403        ShowCharacterPalette,
404        ShowEditPrediction,
405        ShowSignatureHelp,
406        ShowWordCompletions,
407        ShuffleLines,
408        SortLinesCaseInsensitive,
409        SortLinesCaseSensitive,
410        SplitSelectionIntoLines,
411        StopLanguageServer,
412        SwitchSourceHeader,
413        Tab,
414        Backtab,
415        ToggleBreakpoint,
416        ToggleCase,
417        DisableBreakpoint,
418        EnableBreakpoint,
419        EditLogBreakpoint,
420        DebuggerRunToCursor,
421        DebuggerEvaluateSelectedText,
422        ToggleAutoSignatureHelp,
423        ToggleGitBlameInline,
424        OpenGitBlameCommit,
425        ToggleIndentGuides,
426        ToggleInlayHints,
427        ToggleInlineValues,
428        ToggleInlineDiagnostics,
429        ToggleEditPrediction,
430        ToggleLineNumbers,
431        SwapSelectionEnds,
432        SetMark,
433        ToggleRelativeLineNumbers,
434        ToggleSelectionMenu,
435        ToggleSoftWrap,
436        ToggleTabBar,
437        Transpose,
438        Undo,
439        UndoSelection,
440        UnfoldAll,
441        UnfoldLines,
442        UnfoldRecursive,
443        UniqueLinesCaseInsensitive,
444        UniqueLinesCaseSensitive,
445    ]
446);
447
448action_as!(go_to_line, ToggleGoToLine as Toggle);
449
450action_with_deprecated_aliases!(editor, OpenSelectedFilename, ["editor::OpenFile"]);
451action_with_deprecated_aliases!(editor, ToggleSelectedDiffHunks, ["editor::ToggleHunkDiff"]);
452action_with_deprecated_aliases!(editor, ExpandAllDiffHunks, ["editor::ExpandAllHunkDiffs"]);