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);