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