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 GoToPreviousChange,
312 GoToPreviousDiagnostic,
313 GoToTypeDefinition,
314 GoToTypeDefinitionSplit,
315 HalfPageDown,
316 HalfPageUp,
317 Hover,
318 Indent,
319 InsertUuidV4,
320 InsertUuidV7,
321 JoinLines,
322 KillRingCut,
323 KillRingYank,
324 LineDown,
325 LineUp,
326 MoveDown,
327 MoveLeft,
328 MoveLineDown,
329 MoveLineUp,
330 MoveRight,
331 MoveToBeginning,
332 MoveToEnclosingBracket,
333 MoveToEnd,
334 MoveToEndOfParagraph,
335 MoveToNextSubwordEnd,
336 MoveToNextWordEnd,
337 MoveToPreviousSubwordStart,
338 MoveToPreviousWordStart,
339 MoveToStartOfParagraph,
340 MoveToStartOfExcerpt,
341 MoveToStartOfNextExcerpt,
342 MoveToEndOfExcerpt,
343 MoveToEndOfPreviousExcerpt,
344 MoveUp,
345 Newline,
346 NewlineAbove,
347 NewlineBelow,
348 NextEditPrediction,
349 NextScreen,
350 OpenContextMenu,
351 OpenExcerpts,
352 OpenExcerptsSplit,
353 OpenProposedChangesEditor,
354 OpenDocs,
355 OpenPermalinkToLine,
356 OpenSelectionsInMultibuffer,
357 OpenUrl,
358 OrganizeImports,
359 Outdent,
360 AutoIndent,
361 PageDown,
362 PageUp,
363 Paste,
364 PreviousEditPrediction,
365 Redo,
366 RedoSelection,
367 Rename,
368 RestartLanguageServer,
369 RevealInFileManager,
370 ReverseLines,
371 RevertFile,
372 ReloadFile,
373 Rewrap,
374 ScrollCursorBottom,
375 ScrollCursorCenter,
376 ScrollCursorCenterTopBottom,
377 ScrollCursorTop,
378 SelectAll,
379 SelectAllMatches,
380 SelectToStartOfExcerpt,
381 SelectToStartOfNextExcerpt,
382 SelectToEndOfExcerpt,
383 SelectToEndOfPreviousExcerpt,
384 SelectDown,
385 SelectEnclosingSymbol,
386 SelectLargerSyntaxNode,
387 SelectLeft,
388 SelectLine,
389 SelectPageDown,
390 SelectPageUp,
391 SelectRight,
392 SelectSmallerSyntaxNode,
393 SelectToBeginning,
394 SelectToEnd,
395 SelectToEndOfParagraph,
396 SelectToNextSubwordEnd,
397 SelectToNextWordEnd,
398 SelectToPreviousSubwordStart,
399 SelectToPreviousWordStart,
400 SelectToStartOfParagraph,
401 SelectUp,
402 ShowCharacterPalette,
403 ShowEditPrediction,
404 ShowSignatureHelp,
405 ShowWordCompletions,
406 ShuffleLines,
407 SortLinesCaseInsensitive,
408 SortLinesCaseSensitive,
409 SplitSelectionIntoLines,
410 StopLanguageServer,
411 SwitchSourceHeader,
412 Tab,
413 Backtab,
414 ToggleBreakpoint,
415 ToggleCase,
416 DisableBreakpoint,
417 EnableBreakpoint,
418 EditLogBreakpoint,
419 DebuggerRunToCursor,
420 DebuggerEvaluateSelectedText,
421 ToggleAutoSignatureHelp,
422 ToggleGitBlameInline,
423 OpenGitBlameCommit,
424 ToggleIndentGuides,
425 ToggleInlayHints,
426 ToggleInlineValues,
427 ToggleInlineDiagnostics,
428 ToggleEditPrediction,
429 ToggleLineNumbers,
430 SwapSelectionEnds,
431 SetMark,
432 ToggleRelativeLineNumbers,
433 ToggleSelectionMenu,
434 ToggleSoftWrap,
435 ToggleTabBar,
436 Transpose,
437 Undo,
438 UndoSelection,
439 UnfoldAll,
440 UnfoldLines,
441 UnfoldRecursive,
442 UniqueLinesCaseInsensitive,
443 UniqueLinesCaseSensitive,
444 ]
445);
446
447action_as!(go_to_line, ToggleGoToLine as Toggle);
448
449action_with_deprecated_aliases!(editor, OpenSelectedFilename, ["editor::OpenFile"]);
450action_with_deprecated_aliases!(editor, ToggleSelectedDiffHunks, ["editor::ToggleHunkDiff"]);
451action_with_deprecated_aliases!(editor, ExpandAllDiffHunks, ["editor::ExpandAllHunkDiffs"]);