actions.rs

  1//! This module contains all actions supported by [`Editor`].
  2use super::*;
  3use gpui::{Action, actions};
  4use project::project_settings::GoToDiagnosticSeverityFilter;
  5use schemars::JsonSchema;
  6use util::serde::default_true;
  7
  8/// Selects the next occurrence of the current selection.
  9#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema, Action)]
 10#[action(namespace = editor)]
 11#[serde(deny_unknown_fields)]
 12pub struct SelectNext {
 13    #[serde(default)]
 14    pub replace_newest: bool,
 15}
 16
 17/// Selects the previous occurrence of the current selection.
 18#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema, Action)]
 19#[action(namespace = editor)]
 20#[serde(deny_unknown_fields)]
 21pub struct SelectPrevious {
 22    #[serde(default)]
 23    pub replace_newest: bool,
 24}
 25
 26/// Moves the cursor to the beginning of the current line.
 27#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema, Action)]
 28#[action(namespace = editor)]
 29#[serde(deny_unknown_fields)]
 30pub struct MoveToBeginningOfLine {
 31    #[serde(default = "default_true")]
 32    pub stop_at_soft_wraps: bool,
 33    #[serde(default)]
 34    pub stop_at_indent: bool,
 35}
 36
 37/// Selects from the cursor to the beginning of the current line.
 38#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema, Action)]
 39#[action(namespace = editor)]
 40#[serde(deny_unknown_fields)]
 41pub struct SelectToBeginningOfLine {
 42    #[serde(default)]
 43    pub(super) stop_at_soft_wraps: bool,
 44    #[serde(default)]
 45    pub stop_at_indent: bool,
 46}
 47
 48/// Deletes from the cursor to the beginning of the current line.
 49#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema, Action)]
 50#[action(namespace = editor)]
 51#[serde(deny_unknown_fields)]
 52pub struct DeleteToBeginningOfLine {
 53    #[serde(default)]
 54    pub(super) stop_at_indent: bool,
 55}
 56
 57/// Moves the cursor up by one page.
 58#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema, Action)]
 59#[action(namespace = editor)]
 60#[serde(deny_unknown_fields)]
 61pub struct MovePageUp {
 62    #[serde(default)]
 63    pub(super) center_cursor: bool,
 64}
 65
 66/// Moves the cursor down by one page.
 67#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema, Action)]
 68#[action(namespace = editor)]
 69#[serde(deny_unknown_fields)]
 70pub struct MovePageDown {
 71    #[serde(default)]
 72    pub(super) center_cursor: bool,
 73}
 74
 75/// Moves the cursor to the end of the current line.
 76#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema, Action)]
 77#[action(namespace = editor)]
 78#[serde(deny_unknown_fields)]
 79pub struct MoveToEndOfLine {
 80    #[serde(default = "default_true")]
 81    pub stop_at_soft_wraps: bool,
 82}
 83
 84/// Selects from the cursor to the end of the current line.
 85#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema, Action)]
 86#[action(namespace = editor)]
 87#[serde(deny_unknown_fields)]
 88pub struct SelectToEndOfLine {
 89    #[serde(default)]
 90    pub(super) stop_at_soft_wraps: bool,
 91}
 92
 93/// Toggles the display of available code actions at the cursor position.
 94#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema, Action)]
 95#[action(namespace = editor)]
 96#[serde(deny_unknown_fields)]
 97pub struct ToggleCodeActions {
 98    // Source from which the action was deployed.
 99    #[serde(default)]
100    #[serde(skip)]
101    pub deployed_from: Option<CodeActionSource>,
102    // Run first available task if there is only one.
103    #[serde(default)]
104    #[serde(skip)]
105    pub quick_launch: bool,
106}
107
108#[derive(PartialEq, Clone, Debug)]
109pub enum CodeActionSource {
110    Indicator(DisplayRow),
111    RunMenu(DisplayRow),
112    QuickActionBar,
113}
114
115/// Confirms and accepts the currently selected completion suggestion.
116#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema, Action)]
117#[action(namespace = editor)]
118#[serde(deny_unknown_fields)]
119pub struct ConfirmCompletion {
120    #[serde(default)]
121    pub item_ix: Option<usize>,
122}
123
124/// Composes multiple completion suggestions into a single completion.
125#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema, Action)]
126#[action(namespace = editor)]
127#[serde(deny_unknown_fields)]
128pub struct ComposeCompletion {
129    #[serde(default)]
130    pub item_ix: Option<usize>,
131}
132
133/// Confirms and applies the currently selected code action.
134#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema, Action)]
135#[action(namespace = editor)]
136#[serde(deny_unknown_fields)]
137pub struct ConfirmCodeAction {
138    #[serde(default)]
139    pub item_ix: Option<usize>,
140}
141
142/// Toggles comment markers for the selected lines.
143#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema, Action)]
144#[action(namespace = editor)]
145#[serde(deny_unknown_fields)]
146pub struct ToggleComments {
147    #[serde(default)]
148    pub advance_downwards: bool,
149    #[serde(default)]
150    pub ignore_indent: bool,
151}
152
153/// Moves the cursor up by a specified number of lines.
154#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema, Action)]
155#[action(namespace = editor)]
156#[serde(deny_unknown_fields)]
157pub struct MoveUpByLines {
158    #[serde(default)]
159    pub(super) lines: u32,
160}
161
162/// Moves the cursor down by a specified number of lines.
163#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema, Action)]
164#[action(namespace = editor)]
165#[serde(deny_unknown_fields)]
166pub struct MoveDownByLines {
167    #[serde(default)]
168    pub(super) lines: u32,
169}
170
171/// Extends selection up by a specified number of lines.
172#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema, Action)]
173#[action(namespace = editor)]
174#[serde(deny_unknown_fields)]
175pub struct SelectUpByLines {
176    #[serde(default)]
177    pub(super) lines: u32,
178}
179
180/// Extends selection down by a specified number of lines.
181#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema, Action)]
182#[action(namespace = editor)]
183#[serde(deny_unknown_fields)]
184pub struct SelectDownByLines {
185    #[serde(default)]
186    pub(super) lines: u32,
187}
188
189/// Expands all excerpts in the editor.
190#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema, Action)]
191#[action(namespace = editor)]
192#[serde(deny_unknown_fields)]
193pub struct ExpandExcerpts {
194    #[serde(default)]
195    pub(super) lines: u32,
196}
197
198/// Expands excerpts above the current position.
199#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema, Action)]
200#[action(namespace = editor)]
201#[serde(deny_unknown_fields)]
202pub struct ExpandExcerptsUp {
203    #[serde(default)]
204    pub(super) lines: u32,
205}
206
207/// Expands excerpts below the current position.
208#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema, Action)]
209#[action(namespace = editor)]
210#[serde(deny_unknown_fields)]
211pub struct ExpandExcerptsDown {
212    #[serde(default)]
213    pub(super) lines: u32,
214}
215
216/// Shows code completion suggestions at the cursor position.
217#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema, Action)]
218#[action(namespace = editor)]
219#[serde(deny_unknown_fields)]
220pub struct ShowCompletions {
221    #[serde(default)]
222    pub(super) trigger: Option<String>,
223}
224
225/// Handles text input in the editor.
226#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema, Action)]
227#[action(namespace = editor)]
228pub struct HandleInput(pub String);
229
230/// Deletes from the cursor to the end of the next word.
231/// Stops before the end of the next word, if whitespace sequences of length >= 2 are encountered.
232#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema, Action)]
233#[action(namespace = editor)]
234#[serde(deny_unknown_fields)]
235pub struct DeleteToNextWordEnd {
236    #[serde(default)]
237    pub ignore_newlines: bool,
238    // Whether to stop before the end of the next word, if language-defined bracket is encountered.
239    #[serde(default)]
240    pub ignore_brackets: bool,
241}
242
243/// Deletes from the cursor to the start of the previous word.
244/// Stops before the start of the previous word, if whitespace sequences of length >= 2 are encountered.
245#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema, Action)]
246#[action(namespace = editor)]
247#[serde(deny_unknown_fields)]
248pub struct DeleteToPreviousWordStart {
249    #[serde(default)]
250    pub ignore_newlines: bool,
251    // Whether to stop before the start of the previous word, if language-defined bracket is encountered.
252    #[serde(default)]
253    pub ignore_brackets: bool,
254}
255
256/// Folds all code blocks at the specified indentation level.
257#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema, Action)]
258#[action(namespace = editor)]
259pub struct FoldAtLevel(pub u32);
260
261/// Spawns the nearest available task from the current cursor position.
262#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema, Action)]
263#[action(namespace = editor)]
264#[serde(deny_unknown_fields)]
265pub struct SpawnNearestTask {
266    #[serde(default)]
267    pub reveal: task::RevealStrategy,
268}
269
270#[derive(Clone, PartialEq, Action)]
271#[action(no_json, no_register)]
272pub struct DiffClipboardWithSelectionData {
273    pub clipboard_text: String,
274    pub editor: Entity<Editor>,
275}
276
277#[derive(Debug, PartialEq, Eq, Clone, Copy, Deserialize, Default)]
278pub enum UuidVersion {
279    #[default]
280    V4,
281    V7,
282}
283
284/// Splits selection into individual lines.
285#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema, Action)]
286#[action(namespace = editor)]
287#[serde(deny_unknown_fields)]
288pub struct SplitSelectionIntoLines {
289    /// Keep the text selected after splitting instead of collapsing to cursors.
290    #[serde(default)]
291    pub keep_selections: bool,
292}
293
294/// Goes to the next diagnostic in the file.
295#[derive(PartialEq, Clone, Default, Debug, Deserialize, JsonSchema, Action)]
296#[action(namespace = editor)]
297#[serde(deny_unknown_fields)]
298pub struct GoToDiagnostic {
299    #[serde(default)]
300    pub severity: GoToDiagnosticSeverityFilter,
301}
302
303/// Goes to the previous diagnostic in the file.
304#[derive(PartialEq, Clone, Default, Debug, Deserialize, JsonSchema, Action)]
305#[action(namespace = editor)]
306#[serde(deny_unknown_fields)]
307pub struct GoToPreviousDiagnostic {
308    #[serde(default)]
309    pub severity: GoToDiagnosticSeverityFilter,
310}
311
312actions!(
313    debugger,
314    [
315        /// Runs program execution to the current cursor position.
316        RunToCursor,
317        /// Evaluates the selected text in the debugger context.
318        EvaluateSelectedText
319    ]
320);
321
322actions!(
323    go_to_line,
324    [
325        /// Toggles the go to line dialog.
326        #[action(name = "Toggle")]
327        ToggleGoToLine
328    ]
329);
330
331actions!(
332    editor,
333    [
334        /// Accepts the full edit prediction.
335        AcceptEditPrediction,
336        /// Accepts a partial edit prediction.
337        #[action(deprecated_aliases = ["editor::AcceptPartialCopilotSuggestion"])]
338        AcceptPartialEditPrediction,
339        /// Adds a cursor above the current selection.
340        AddSelectionAbove,
341        /// Adds a cursor below the current selection.
342        AddSelectionBelow,
343        /// Applies all diff hunks in the editor.
344        ApplyAllDiffHunks,
345        /// Applies the diff hunk at the current position.
346        ApplyDiffHunk,
347        /// Deletes the character before the cursor.
348        Backspace,
349        /// Shows git blame information for the current line.
350        BlameHover,
351        /// Cancels the current operation.
352        Cancel,
353        /// Cancels the running flycheck operation.
354        CancelFlycheck,
355        /// Cancels pending language server work.
356        CancelLanguageServerWork,
357        /// Clears flycheck results.
358        ClearFlycheck,
359        /// Confirms the rename operation.
360        ConfirmRename,
361        /// Confirms completion by inserting at cursor.
362        ConfirmCompletionInsert,
363        /// Confirms completion by replacing existing text.
364        ConfirmCompletionReplace,
365        /// Navigates to the first item in the context menu.
366        ContextMenuFirst,
367        /// Navigates to the last item in the context menu.
368        ContextMenuLast,
369        /// Navigates to the next item in the context menu.
370        ContextMenuNext,
371        /// Navigates to the previous item in the context menu.
372        ContextMenuPrevious,
373        /// Converts indentation from tabs to spaces.
374        ConvertIndentationToSpaces,
375        /// Converts indentation from spaces to tabs.
376        ConvertIndentationToTabs,
377        /// Converts selected text to kebab-case.
378        ConvertToKebabCase,
379        /// Converts selected text to lowerCamelCase.
380        ConvertToLowerCamelCase,
381        /// Converts selected text to lowercase.
382        ConvertToLowerCase,
383        /// Toggles the case of selected text.
384        ConvertToOppositeCase,
385        /// Converts selected text to sentence case.
386        ConvertToSentenceCase,
387        /// Converts selected text to snake_case.
388        ConvertToSnakeCase,
389        /// Converts selected text to Title Case.
390        ConvertToTitleCase,
391        /// Converts selected text to UpperCamelCase.
392        ConvertToUpperCamelCase,
393        /// Converts selected text to UPPERCASE.
394        ConvertToUpperCase,
395        /// Applies ROT13 cipher to selected text.
396        ConvertToRot13,
397        /// Applies ROT47 cipher to selected text.
398        ConvertToRot47,
399        /// Copies selected text to the clipboard.
400        Copy,
401        /// Copies selected text to the clipboard with leading/trailing whitespace trimmed.
402        CopyAndTrim,
403        /// Copies the current file location to the clipboard.
404        CopyFileLocation,
405        /// Copies the highlighted text as JSON.
406        CopyHighlightJson,
407        /// Copies the current file name to the clipboard.
408        CopyFileName,
409        /// Copies the file name without extension to the clipboard.
410        CopyFileNameWithoutExtension,
411        /// Copies a permalink to the current line.
412        CopyPermalinkToLine,
413        /// Cuts selected text to the clipboard.
414        Cut,
415        /// Cuts from cursor to end of line.
416        CutToEndOfLine,
417        /// Deletes the character after the cursor.
418        Delete,
419        /// Deletes the current line.
420        DeleteLine,
421        /// Deletes from cursor to end of line.
422        DeleteToEndOfLine,
423        /// Deletes to the end of the next subword.
424        DeleteToNextSubwordEnd,
425        /// Deletes to the start of the previous subword.
426        DeleteToPreviousSubwordStart,
427        /// Diffs the text stored in the clipboard against the current selection.
428        DiffClipboardWithSelection,
429        /// Displays names of all active cursors.
430        DisplayCursorNames,
431        /// Duplicates the current line below.
432        DuplicateLineDown,
433        /// Duplicates the current line above.
434        DuplicateLineUp,
435        /// Duplicates the current selection.
436        DuplicateSelection,
437        /// Expands all diff hunks in the editor.
438        #[action(deprecated_aliases = ["editor::ExpandAllHunkDiffs"])]
439        ExpandAllDiffHunks,
440        /// Expands macros recursively at cursor position.
441        ExpandMacroRecursively,
442        /// Finds all references to the symbol at cursor.
443        FindAllReferences,
444        /// Finds the next match in the search.
445        FindNextMatch,
446        /// Finds the previous match in the search.
447        FindPreviousMatch,
448        /// Folds the current code block.
449        Fold,
450        /// Folds all foldable regions in the editor.
451        FoldAll,
452        /// Folds all function bodies in the editor.
453        FoldFunctionBodies,
454        /// Folds the current code block and all its children.
455        FoldRecursive,
456        /// Folds the selected ranges.
457        FoldSelectedRanges,
458        /// Toggles focus back to the last active buffer.
459        ToggleFocus,
460        /// Toggles folding at the current position.
461        ToggleFold,
462        /// Toggles recursive folding at the current position.
463        ToggleFoldRecursive,
464        /// Toggles all folds in a buffer or all excerpts in multibuffer.
465        ToggleFoldAll,
466        /// Formats the entire document.
467        Format,
468        /// Formats only the selected text.
469        FormatSelections,
470        /// Goes to the declaration of the symbol at cursor.
471        GoToDeclaration,
472        /// Goes to declaration in a split pane.
473        GoToDeclarationSplit,
474        /// Goes to the definition of the symbol at cursor.
475        GoToDefinition,
476        /// Goes to definition in a split pane.
477        GoToDefinitionSplit,
478        /// Goes to the next diff hunk.
479        GoToHunk,
480        /// Goes to the previous diff hunk.
481        GoToPreviousHunk,
482        /// Goes to the implementation of the symbol at cursor.
483        GoToImplementation,
484        /// Goes to implementation in a split pane.
485        GoToImplementationSplit,
486        /// Goes to the next change in the file.
487        GoToNextChange,
488        /// Goes to the parent module of the current file.
489        GoToParentModule,
490        /// Goes to the previous change in the file.
491        GoToPreviousChange,
492        /// Goes to the type definition of the symbol at cursor.
493        GoToTypeDefinition,
494        /// Goes to type definition in a split pane.
495        GoToTypeDefinitionSplit,
496        /// Goes to the next document highlight.
497        GoToNextDocumentHighlight,
498        /// Goes to the previous document highlight.
499        GoToPreviousDocumentHighlight,
500        /// Scrolls down by half a page.
501        HalfPageDown,
502        /// Scrolls up by half a page.
503        HalfPageUp,
504        /// Shows hover information for the symbol at cursor.
505        Hover,
506        /// Increases indentation of selected lines.
507        Indent,
508        /// Inserts a UUID v4 at cursor position.
509        InsertUuidV4,
510        /// Inserts a UUID v7 at cursor position.
511        InsertUuidV7,
512        /// Joins the current line with the next line.
513        JoinLines,
514        /// Cuts to kill ring (Emacs-style).
515        KillRingCut,
516        /// Yanks from kill ring (Emacs-style).
517        KillRingYank,
518        /// Moves cursor down one line.
519        LineDown,
520        /// Moves cursor up one line.
521        LineUp,
522        /// Moves cursor down.
523        MoveDown,
524        /// Moves cursor left.
525        MoveLeft,
526        /// Moves the current line down.
527        MoveLineDown,
528        /// Moves the current line up.
529        MoveLineUp,
530        /// Moves cursor right.
531        MoveRight,
532        /// Moves cursor to the beginning of the document.
533        MoveToBeginning,
534        /// Moves cursor to the enclosing bracket.
535        MoveToEnclosingBracket,
536        /// Moves cursor to the end of the document.
537        MoveToEnd,
538        /// Moves cursor to the end of the paragraph.
539        MoveToEndOfParagraph,
540        /// Moves cursor to the end of the next subword.
541        MoveToNextSubwordEnd,
542        /// Moves cursor to the end of the next word.
543        MoveToNextWordEnd,
544        /// Moves cursor to the start of the previous subword.
545        MoveToPreviousSubwordStart,
546        /// Moves cursor to the start of the previous word.
547        MoveToPreviousWordStart,
548        /// Moves cursor to the start of the paragraph.
549        MoveToStartOfParagraph,
550        /// Moves cursor to the start of the current excerpt.
551        MoveToStartOfExcerpt,
552        /// Moves cursor to the start of the next excerpt.
553        MoveToStartOfNextExcerpt,
554        /// Moves cursor to the end of the current excerpt.
555        MoveToEndOfExcerpt,
556        /// Moves cursor to the end of the previous excerpt.
557        MoveToEndOfPreviousExcerpt,
558        /// Moves cursor up.
559        MoveUp,
560        /// Inserts a new line and moves cursor to it.
561        Newline,
562        /// Inserts a new line above the current line.
563        NewlineAbove,
564        /// Inserts a new line below the current line.
565        NewlineBelow,
566        /// Navigates to the next edit prediction.
567        NextEditPrediction,
568        /// Scrolls to the next screen.
569        NextScreen,
570        /// Opens the context menu at cursor position.
571        OpenContextMenu,
572        /// Opens excerpts from the current file.
573        OpenExcerpts,
574        /// Opens excerpts in a split pane.
575        OpenExcerptsSplit,
576        /// Opens the proposed changes editor.
577        OpenProposedChangesEditor,
578        /// Opens documentation for the symbol at cursor.
579        OpenDocs,
580        /// Opens a permalink to the current line.
581        OpenPermalinkToLine,
582        /// Opens the file whose name is selected in the editor.
583        #[action(deprecated_aliases = ["editor::OpenFile"])]
584        OpenSelectedFilename,
585        /// Opens all selections in a multibuffer.
586        OpenSelectionsInMultibuffer,
587        /// Opens the URL at cursor position.
588        OpenUrl,
589        /// Organizes import statements.
590        OrganizeImports,
591        /// Decreases indentation of selected lines.
592        Outdent,
593        /// Automatically adjusts indentation based on context.
594        AutoIndent,
595        /// Scrolls down by one page.
596        PageDown,
597        /// Scrolls up by one page.
598        PageUp,
599        /// Pastes from clipboard.
600        Paste,
601        /// Navigates to the previous edit prediction.
602        PreviousEditPrediction,
603        /// Redoes the last undone edit.
604        Redo,
605        /// Redoes the last selection change.
606        RedoSelection,
607        /// Renames the symbol at cursor.
608        Rename,
609        /// Restarts the language server for the current file.
610        RestartLanguageServer,
611        /// Reveals the current file in the system file manager.
612        RevealInFileManager,
613        /// Reverses the order of selected lines.
614        ReverseLines,
615        /// Reloads the file from disk.
616        ReloadFile,
617        /// Rewraps text to fit within the preferred line length.
618        Rewrap,
619        /// Runs flycheck diagnostics.
620        RunFlycheck,
621        /// Scrolls the cursor to the bottom of the viewport.
622        ScrollCursorBottom,
623        /// Scrolls the cursor to the center of the viewport.
624        ScrollCursorCenter,
625        /// Cycles cursor position between center, top, and bottom.
626        ScrollCursorCenterTopBottom,
627        /// Scrolls the cursor to the top of the viewport.
628        ScrollCursorTop,
629        /// Selects all text in the editor.
630        SelectAll,
631        /// Selects all matches of the current selection.
632        SelectAllMatches,
633        /// Selects to the start of the current excerpt.
634        SelectToStartOfExcerpt,
635        /// Selects to the start of the next excerpt.
636        SelectToStartOfNextExcerpt,
637        /// Selects to the end of the current excerpt.
638        SelectToEndOfExcerpt,
639        /// Selects to the end of the previous excerpt.
640        SelectToEndOfPreviousExcerpt,
641        /// Extends selection down.
642        SelectDown,
643        /// Selects the enclosing symbol.
644        SelectEnclosingSymbol,
645        /// Selects the next larger syntax node.
646        SelectLargerSyntaxNode,
647        /// Selects the next syntax node sibling.
648        SelectNextSyntaxNode,
649        /// Selects the previous syntax node sibling.
650        SelectPreviousSyntaxNode,
651        /// Extends selection left.
652        SelectLeft,
653        /// Selects the current line.
654        SelectLine,
655        /// Extends selection down by one page.
656        SelectPageDown,
657        /// Extends selection up by one page.
658        SelectPageUp,
659        /// Extends selection right.
660        SelectRight,
661        /// Selects the next smaller syntax node.
662        SelectSmallerSyntaxNode,
663        /// Selects to the beginning of the document.
664        SelectToBeginning,
665        /// Selects to the end of the document.
666        SelectToEnd,
667        /// Selects to the end of the paragraph.
668        SelectToEndOfParagraph,
669        /// Selects to the end of the next subword.
670        SelectToNextSubwordEnd,
671        /// Selects to the end of the next word.
672        SelectToNextWordEnd,
673        /// Selects to the start of the previous subword.
674        SelectToPreviousSubwordStart,
675        /// Selects to the start of the previous word.
676        SelectToPreviousWordStart,
677        /// Selects to the start of the paragraph.
678        SelectToStartOfParagraph,
679        /// Extends selection up.
680        SelectUp,
681        /// Shows the system character palette.
682        ShowCharacterPalette,
683        /// Shows edit prediction at cursor.
684        ShowEditPrediction,
685        /// Shows signature help for the current function.
686        ShowSignatureHelp,
687        /// Shows word completions.
688        ShowWordCompletions,
689        /// Randomly shuffles selected lines.
690        ShuffleLines,
691        /// Navigates to the next signature in the signature help popup.
692        SignatureHelpNext,
693        /// Navigates to the previous signature in the signature help popup.
694        SignatureHelpPrevious,
695        /// Sorts selected lines by length.
696        SortLinesByLength,
697        /// Sorts selected lines case-insensitively.
698        SortLinesCaseInsensitive,
699        /// Sorts selected lines case-sensitively.
700        SortLinesCaseSensitive,
701        /// Stops the language server for the current file.
702        StopLanguageServer,
703        /// Switches between source and header files.
704        SwitchSourceHeader,
705        /// Inserts a tab character or indents.
706        Tab,
707        /// Removes a tab character or outdents.
708        Backtab,
709        /// Toggles a breakpoint at the current line.
710        ToggleBreakpoint,
711        /// Toggles the case of selected text.
712        ToggleCase,
713        /// Disables the breakpoint at the current line.
714        DisableBreakpoint,
715        /// Enables the breakpoint at the current line.
716        EnableBreakpoint,
717        /// Edits the log message for a breakpoint.
718        EditLogBreakpoint,
719        /// Toggles automatic signature help.
720        ToggleAutoSignatureHelp,
721        /// Toggles inline git blame display.
722        ToggleGitBlameInline,
723        /// Opens the git commit for the blame at cursor.
724        OpenGitBlameCommit,
725        /// Toggles the diagnostics panel.
726        ToggleDiagnostics,
727        /// Toggles indent guides display.
728        ToggleIndentGuides,
729        /// Toggles inlay hints display.
730        ToggleInlayHints,
731        /// Toggles inline values display.
732        ToggleInlineValues,
733        /// Toggles inline diagnostics display.
734        ToggleInlineDiagnostics,
735        /// Toggles edit prediction feature.
736        ToggleEditPrediction,
737        /// Toggles line numbers display.
738        ToggleLineNumbers,
739        /// Toggles the minimap display.
740        ToggleMinimap,
741        /// Swaps the start and end of the current selection.
742        SwapSelectionEnds,
743        /// Sets a mark at the current position.
744        SetMark,
745        /// Toggles relative line numbers display.
746        ToggleRelativeLineNumbers,
747        /// Toggles diff display for selected hunks.
748        #[action(deprecated_aliases = ["editor::ToggleHunkDiff"])]
749        ToggleSelectedDiffHunks,
750        /// Toggles the selection menu.
751        ToggleSelectionMenu,
752        /// Toggles soft wrap mode.
753        ToggleSoftWrap,
754        /// Toggles the tab bar display.
755        ToggleTabBar,
756        /// Transposes characters around cursor.
757        Transpose,
758        /// Undoes the last edit.
759        Undo,
760        /// Undoes the last selection change.
761        UndoSelection,
762        /// Unfolds all folded regions.
763        UnfoldAll,
764        /// Unfolds lines at cursor.
765        UnfoldLines,
766        /// Unfolds recursively at cursor.
767        UnfoldRecursive,
768        /// Removes duplicate lines (case-insensitive).
769        UniqueLinesCaseInsensitive,
770        /// Removes duplicate lines (case-sensitive).
771        UniqueLinesCaseSensitive,
772        UnwrapSyntaxNode,
773        /// Wraps selections in tag specified by language.
774        WrapSelectionsInTag
775    ]
776);