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#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema, Action)]
232#[action(namespace = editor)]
233#[serde(deny_unknown_fields)]
234pub struct DeleteToNextWordEnd {
235    #[serde(default)]
236    pub ignore_newlines: bool,
237}
238
239/// Deletes from the cursor to the start of the previous word.
240#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema, Action)]
241#[action(namespace = editor)]
242#[serde(deny_unknown_fields)]
243pub struct DeleteToPreviousWordStart {
244    #[serde(default)]
245    pub ignore_newlines: bool,
246}
247
248/// Folds all code blocks at the specified indentation level.
249#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema, Action)]
250#[action(namespace = editor)]
251pub struct FoldAtLevel(pub u32);
252
253/// Spawns the nearest available task from the current cursor position.
254#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema, Action)]
255#[action(namespace = editor)]
256#[serde(deny_unknown_fields)]
257pub struct SpawnNearestTask {
258    #[serde(default)]
259    pub reveal: task::RevealStrategy,
260}
261
262#[derive(Clone, PartialEq, Action)]
263#[action(no_json, no_register)]
264pub struct DiffClipboardWithSelectionData {
265    pub clipboard_text: String,
266    pub editor: Entity<Editor>,
267}
268
269#[derive(Debug, PartialEq, Eq, Clone, Copy, Deserialize, Default)]
270pub enum UuidVersion {
271    #[default]
272    V4,
273    V7,
274}
275
276/// Goes to the next diagnostic in the file.
277#[derive(PartialEq, Clone, Default, Debug, Deserialize, JsonSchema, Action)]
278#[action(namespace = editor)]
279#[serde(deny_unknown_fields)]
280pub struct GoToDiagnostic {
281    #[serde(default)]
282    pub severity: GoToDiagnosticSeverityFilter,
283}
284
285/// Goes to the previous diagnostic in the file.
286#[derive(PartialEq, Clone, Default, Debug, Deserialize, JsonSchema, Action)]
287#[action(namespace = editor)]
288#[serde(deny_unknown_fields)]
289pub struct GoToPreviousDiagnostic {
290    #[serde(default)]
291    pub severity: GoToDiagnosticSeverityFilter,
292}
293
294actions!(
295    debugger,
296    [
297        /// Runs program execution to the current cursor position.
298        RunToCursor,
299        /// Evaluates the selected text in the debugger context.
300        EvaluateSelectedText
301    ]
302);
303
304actions!(
305    go_to_line,
306    [
307        /// Toggles the go to line dialog.
308        #[action(name = "Toggle")]
309        ToggleGoToLine
310    ]
311);
312
313actions!(
314    editor,
315    [
316        /// Accepts the full edit prediction.
317        AcceptEditPrediction,
318        /// Accepts a partial Copilot suggestion.
319        AcceptPartialCopilotSuggestion,
320        /// Accepts a partial edit prediction.
321        AcceptPartialEditPrediction,
322        /// Adds a cursor above the current selection.
323        AddSelectionAbove,
324        /// Adds a cursor below the current selection.
325        AddSelectionBelow,
326        /// Applies all diff hunks in the editor.
327        ApplyAllDiffHunks,
328        /// Applies the diff hunk at the current position.
329        ApplyDiffHunk,
330        /// Deletes the character before the cursor.
331        Backspace,
332        /// Shows git blame information for the current line.
333        BlameHover,
334        /// Cancels the current operation.
335        Cancel,
336        /// Cancels the running flycheck operation.
337        CancelFlycheck,
338        /// Cancels pending language server work.
339        CancelLanguageServerWork,
340        /// Clears flycheck results.
341        ClearFlycheck,
342        /// Confirms the rename operation.
343        ConfirmRename,
344        /// Confirms completion by inserting at cursor.
345        ConfirmCompletionInsert,
346        /// Confirms completion by replacing existing text.
347        ConfirmCompletionReplace,
348        /// Navigates to the first item in the context menu.
349        ContextMenuFirst,
350        /// Navigates to the last item in the context menu.
351        ContextMenuLast,
352        /// Navigates to the next item in the context menu.
353        ContextMenuNext,
354        /// Navigates to the previous item in the context menu.
355        ContextMenuPrevious,
356        /// Converts indentation from tabs to spaces.
357        ConvertIndentationToSpaces,
358        /// Converts indentation from spaces to tabs.
359        ConvertIndentationToTabs,
360        /// Converts selected text to kebab-case.
361        ConvertToKebabCase,
362        /// Converts selected text to lowerCamelCase.
363        ConvertToLowerCamelCase,
364        /// Converts selected text to lowercase.
365        ConvertToLowerCase,
366        /// Toggles the case of selected text.
367        ConvertToOppositeCase,
368        /// Converts selected text to sentence case.
369        ConvertToSentenceCase,
370        /// Converts selected text to snake_case.
371        ConvertToSnakeCase,
372        /// Converts selected text to Title Case.
373        ConvertToTitleCase,
374        /// Converts selected text to UpperCamelCase.
375        ConvertToUpperCamelCase,
376        /// Converts selected text to UPPERCASE.
377        ConvertToUpperCase,
378        /// Applies ROT13 cipher to selected text.
379        ConvertToRot13,
380        /// Applies ROT47 cipher to selected text.
381        ConvertToRot47,
382        /// Copies selected text to the clipboard.
383        Copy,
384        /// Copies selected text to the clipboard with leading/trailing whitespace trimmed.
385        CopyAndTrim,
386        /// Copies the current file location to the clipboard.
387        CopyFileLocation,
388        /// Copies the highlighted text as JSON.
389        CopyHighlightJson,
390        /// Copies the current file name to the clipboard.
391        CopyFileName,
392        /// Copies the file name without extension to the clipboard.
393        CopyFileNameWithoutExtension,
394        /// Copies a permalink to the current line.
395        CopyPermalinkToLine,
396        /// Cuts selected text to the clipboard.
397        Cut,
398        /// Cuts from cursor to end of line.
399        CutToEndOfLine,
400        /// Deletes the character after the cursor.
401        Delete,
402        /// Deletes the current line.
403        DeleteLine,
404        /// Deletes from cursor to end of line.
405        DeleteToEndOfLine,
406        /// Deletes to the end of the next subword.
407        DeleteToNextSubwordEnd,
408        /// Deletes to the start of the previous subword.
409        DeleteToPreviousSubwordStart,
410        /// Diffs the text stored in the clipboard against the current selection.
411        DiffClipboardWithSelection,
412        /// Displays names of all active cursors.
413        DisplayCursorNames,
414        /// Duplicates the current line below.
415        DuplicateLineDown,
416        /// Duplicates the current line above.
417        DuplicateLineUp,
418        /// Duplicates the current selection.
419        DuplicateSelection,
420        /// Expands all diff hunks in the editor.
421        #[action(deprecated_aliases = ["editor::ExpandAllHunkDiffs"])]
422        ExpandAllDiffHunks,
423        /// Expands macros recursively at cursor position.
424        ExpandMacroRecursively,
425        /// Finds all references to the symbol at cursor.
426        FindAllReferences,
427        /// Finds the next match in the search.
428        FindNextMatch,
429        /// Finds the previous match in the search.
430        FindPreviousMatch,
431        /// Folds the current code block.
432        Fold,
433        /// Folds all foldable regions in the editor.
434        FoldAll,
435        /// Folds all function bodies in the editor.
436        FoldFunctionBodies,
437        /// Folds the current code block and all its children.
438        FoldRecursive,
439        /// Folds the selected ranges.
440        FoldSelectedRanges,
441        /// Toggles focus back to the last active buffer.
442        ToggleFocus,
443        /// Toggles folding at the current position.
444        ToggleFold,
445        /// Toggles recursive folding at the current position.
446        ToggleFoldRecursive,
447        /// Toggles all folds in a buffer or all excerpts in multibuffer.
448        ToggleFoldAll,
449        /// Formats the entire document.
450        Format,
451        /// Formats only the selected text.
452        FormatSelections,
453        /// Goes to the declaration of the symbol at cursor.
454        GoToDeclaration,
455        /// Goes to declaration in a split pane.
456        GoToDeclarationSplit,
457        /// Goes to the definition of the symbol at cursor.
458        GoToDefinition,
459        /// Goes to definition in a split pane.
460        GoToDefinitionSplit,
461        /// Goes to the next diff hunk.
462        GoToHunk,
463        /// Goes to the previous diff hunk.
464        GoToPreviousHunk,
465        /// Goes to the implementation of the symbol at cursor.
466        GoToImplementation,
467        /// Goes to implementation in a split pane.
468        GoToImplementationSplit,
469        /// Goes to the next change in the file.
470        GoToNextChange,
471        /// Goes to the parent module of the current file.
472        GoToParentModule,
473        /// Goes to the previous change in the file.
474        GoToPreviousChange,
475        /// Goes to the type definition of the symbol at cursor.
476        GoToTypeDefinition,
477        /// Goes to type definition in a split pane.
478        GoToTypeDefinitionSplit,
479        /// Scrolls down by half a page.
480        HalfPageDown,
481        /// Scrolls up by half a page.
482        HalfPageUp,
483        /// Shows hover information for the symbol at cursor.
484        Hover,
485        /// Increases indentation of selected lines.
486        Indent,
487        /// Inserts a UUID v4 at cursor position.
488        InsertUuidV4,
489        /// Inserts a UUID v7 at cursor position.
490        InsertUuidV7,
491        /// Joins the current line with the next line.
492        JoinLines,
493        /// Cuts to kill ring (Emacs-style).
494        KillRingCut,
495        /// Yanks from kill ring (Emacs-style).
496        KillRingYank,
497        /// Moves cursor down one line.
498        LineDown,
499        /// Moves cursor up one line.
500        LineUp,
501        /// Moves cursor down.
502        MoveDown,
503        /// Moves cursor left.
504        MoveLeft,
505        /// Moves the current line down.
506        MoveLineDown,
507        /// Moves the current line up.
508        MoveLineUp,
509        /// Moves cursor right.
510        MoveRight,
511        /// Moves cursor to the beginning of the document.
512        MoveToBeginning,
513        /// Moves cursor to the enclosing bracket.
514        MoveToEnclosingBracket,
515        /// Moves cursor to the end of the document.
516        MoveToEnd,
517        /// Moves cursor to the end of the paragraph.
518        MoveToEndOfParagraph,
519        /// Moves cursor to the end of the next subword.
520        MoveToNextSubwordEnd,
521        /// Moves cursor to the end of the next word.
522        MoveToNextWordEnd,
523        /// Moves cursor to the start of the previous subword.
524        MoveToPreviousSubwordStart,
525        /// Moves cursor to the start of the previous word.
526        MoveToPreviousWordStart,
527        /// Moves cursor to the start of the paragraph.
528        MoveToStartOfParagraph,
529        /// Moves cursor to the start of the current excerpt.
530        MoveToStartOfExcerpt,
531        /// Moves cursor to the start of the next excerpt.
532        MoveToStartOfNextExcerpt,
533        /// Moves cursor to the end of the current excerpt.
534        MoveToEndOfExcerpt,
535        /// Moves cursor to the end of the previous excerpt.
536        MoveToEndOfPreviousExcerpt,
537        /// Moves cursor up.
538        MoveUp,
539        /// Inserts a new line and moves cursor to it.
540        Newline,
541        /// Inserts a new line above the current line.
542        NewlineAbove,
543        /// Inserts a new line below the current line.
544        NewlineBelow,
545        /// Navigates to the next edit prediction.
546        NextEditPrediction,
547        /// Scrolls to the next screen.
548        NextScreen,
549        /// Opens the context menu at cursor position.
550        OpenContextMenu,
551        /// Opens excerpts from the current file.
552        OpenExcerpts,
553        /// Opens excerpts in a split pane.
554        OpenExcerptsSplit,
555        /// Opens the proposed changes editor.
556        OpenProposedChangesEditor,
557        /// Opens documentation for the symbol at cursor.
558        OpenDocs,
559        /// Opens a permalink to the current line.
560        OpenPermalinkToLine,
561        /// Opens the file whose name is selected in the editor.
562        #[action(deprecated_aliases = ["editor::OpenFile"])]
563        OpenSelectedFilename,
564        /// Opens all selections in a multibuffer.
565        OpenSelectionsInMultibuffer,
566        /// Opens the URL at cursor position.
567        OpenUrl,
568        /// Organizes import statements.
569        OrganizeImports,
570        /// Decreases indentation of selected lines.
571        Outdent,
572        /// Automatically adjusts indentation based on context.
573        AutoIndent,
574        /// Scrolls down by one page.
575        PageDown,
576        /// Scrolls up by one page.
577        PageUp,
578        /// Pastes from clipboard.
579        Paste,
580        /// Navigates to the previous edit prediction.
581        PreviousEditPrediction,
582        /// Redoes the last undone edit.
583        Redo,
584        /// Redoes the last selection change.
585        RedoSelection,
586        /// Renames the symbol at cursor.
587        Rename,
588        /// Restarts the language server for the current file.
589        RestartLanguageServer,
590        /// Reveals the current file in the system file manager.
591        RevealInFileManager,
592        /// Reverses the order of selected lines.
593        ReverseLines,
594        /// Reloads the file from disk.
595        ReloadFile,
596        /// Rewraps text to fit within the preferred line length.
597        Rewrap,
598        /// Runs flycheck diagnostics.
599        RunFlycheck,
600        /// Scrolls the cursor to the bottom of the viewport.
601        ScrollCursorBottom,
602        /// Scrolls the cursor to the center of the viewport.
603        ScrollCursorCenter,
604        /// Cycles cursor position between center, top, and bottom.
605        ScrollCursorCenterTopBottom,
606        /// Scrolls the cursor to the top of the viewport.
607        ScrollCursorTop,
608        /// Selects all text in the editor.
609        SelectAll,
610        /// Selects all matches of the current selection.
611        SelectAllMatches,
612        /// Selects to the start of the current excerpt.
613        SelectToStartOfExcerpt,
614        /// Selects to the start of the next excerpt.
615        SelectToStartOfNextExcerpt,
616        /// Selects to the end of the current excerpt.
617        SelectToEndOfExcerpt,
618        /// Selects to the end of the previous excerpt.
619        SelectToEndOfPreviousExcerpt,
620        /// Extends selection down.
621        SelectDown,
622        /// Selects the enclosing symbol.
623        SelectEnclosingSymbol,
624        /// Selects the next larger syntax node.
625        SelectLargerSyntaxNode,
626        /// Extends selection left.
627        SelectLeft,
628        /// Selects the current line.
629        SelectLine,
630        /// Extends selection down by one page.
631        SelectPageDown,
632        /// Extends selection up by one page.
633        SelectPageUp,
634        /// Extends selection right.
635        SelectRight,
636        /// Selects the next smaller syntax node.
637        SelectSmallerSyntaxNode,
638        /// Selects to the beginning of the document.
639        SelectToBeginning,
640        /// Selects to the end of the document.
641        SelectToEnd,
642        /// Selects to the end of the paragraph.
643        SelectToEndOfParagraph,
644        /// Selects to the end of the next subword.
645        SelectToNextSubwordEnd,
646        /// Selects to the end of the next word.
647        SelectToNextWordEnd,
648        /// Selects to the start of the previous subword.
649        SelectToPreviousSubwordStart,
650        /// Selects to the start of the previous word.
651        SelectToPreviousWordStart,
652        /// Selects to the start of the paragraph.
653        SelectToStartOfParagraph,
654        /// Extends selection up.
655        SelectUp,
656        /// Shows the system character palette.
657        ShowCharacterPalette,
658        /// Shows edit prediction at cursor.
659        ShowEditPrediction,
660        /// Shows signature help for the current function.
661        ShowSignatureHelp,
662        /// Shows word completions.
663        ShowWordCompletions,
664        /// Randomly shuffles selected lines.
665        ShuffleLines,
666        /// Navigates to the next signature in the signature help popup.
667        SignatureHelpNext,
668        /// Navigates to the previous signature in the signature help popup.
669        SignatureHelpPrevious,
670        /// Sorts selected lines by length.
671        SortLinesByLength,
672        /// Sorts selected lines case-insensitively.
673        SortLinesCaseInsensitive,
674        /// Sorts selected lines case-sensitively.
675        SortLinesCaseSensitive,
676        /// Splits selection into individual lines.
677        SplitSelectionIntoLines,
678        /// Stops the language server for the current file.
679        StopLanguageServer,
680        /// Switches between source and header files.
681        SwitchSourceHeader,
682        /// Inserts a tab character or indents.
683        Tab,
684        /// Removes a tab character or outdents.
685        Backtab,
686        /// Toggles a breakpoint at the current line.
687        ToggleBreakpoint,
688        /// Toggles the case of selected text.
689        ToggleCase,
690        /// Disables the breakpoint at the current line.
691        DisableBreakpoint,
692        /// Enables the breakpoint at the current line.
693        EnableBreakpoint,
694        /// Edits the log message for a breakpoint.
695        EditLogBreakpoint,
696        /// Toggles automatic signature help.
697        ToggleAutoSignatureHelp,
698        /// Toggles inline git blame display.
699        ToggleGitBlameInline,
700        /// Opens the git commit for the blame at cursor.
701        OpenGitBlameCommit,
702        /// Toggles the diagnostics panel.
703        ToggleDiagnostics,
704        /// Toggles indent guides display.
705        ToggleIndentGuides,
706        /// Toggles inlay hints display.
707        ToggleInlayHints,
708        /// Toggles inline values display.
709        ToggleInlineValues,
710        /// Toggles inline diagnostics display.
711        ToggleInlineDiagnostics,
712        /// Toggles edit prediction feature.
713        ToggleEditPrediction,
714        /// Toggles line numbers display.
715        ToggleLineNumbers,
716        /// Toggles the minimap display.
717        ToggleMinimap,
718        /// Swaps the start and end of the current selection.
719        SwapSelectionEnds,
720        /// Sets a mark at the current position.
721        SetMark,
722        /// Toggles relative line numbers display.
723        ToggleRelativeLineNumbers,
724        /// Toggles diff display for selected hunks.
725        #[action(deprecated_aliases = ["editor::ToggleHunkDiff"])]
726        ToggleSelectedDiffHunks,
727        /// Toggles the selection menu.
728        ToggleSelectionMenu,
729        /// Toggles soft wrap mode.
730        ToggleSoftWrap,
731        /// Toggles the tab bar display.
732        ToggleTabBar,
733        /// Transposes characters around cursor.
734        Transpose,
735        /// Undoes the last edit.
736        Undo,
737        /// Undoes the last selection change.
738        UndoSelection,
739        /// Unfolds all folded regions.
740        UnfoldAll,
741        /// Unfolds lines at cursor.
742        UnfoldLines,
743        /// Unfolds recursively at cursor.
744        UnfoldRecursive,
745        /// Removes duplicate lines (case-insensitive).
746        UniqueLinesCaseInsensitive,
747        /// Removes duplicate lines (case-sensitive).
748        UniqueLinesCaseSensitive,
749    ]
750);