actions.rs

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