actions.rs

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