actions.rs

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