1//! This module contains all actions supported by [`Editor`].
2use super::*;
3use gpui::action_as;
4use util::serde::default_true;
5
6#[derive(PartialEq, Clone, Deserialize, Default)]
7pub struct SelectNext {
8 #[serde(default)]
9 pub replace_newest: bool,
10}
11
12#[derive(PartialEq, Clone, Deserialize, Default)]
13pub struct SelectPrevious {
14 #[serde(default)]
15 pub replace_newest: bool,
16}
17
18#[derive(PartialEq, Clone, Deserialize, Default)]
19pub struct MoveToBeginningOfLine {
20 #[serde(default = "default_true")]
21 pub stop_at_soft_wraps: bool,
22}
23
24#[derive(PartialEq, Clone, Deserialize, Default)]
25pub struct SelectToBeginningOfLine {
26 #[serde(default)]
27 pub(super) stop_at_soft_wraps: bool,
28}
29
30#[derive(PartialEq, Clone, Deserialize, Default)]
31pub struct MovePageUp {
32 #[serde(default)]
33 pub(super) center_cursor: bool,
34}
35
36#[derive(PartialEq, Clone, Deserialize, Default)]
37pub struct MovePageDown {
38 #[serde(default)]
39 pub(super) center_cursor: bool,
40}
41
42#[derive(PartialEq, Clone, Deserialize, Default)]
43pub struct MoveToEndOfLine {
44 #[serde(default = "default_true")]
45 pub stop_at_soft_wraps: bool,
46}
47
48#[derive(PartialEq, Clone, Deserialize, Default)]
49pub struct SelectToEndOfLine {
50 #[serde(default)]
51 pub(super) stop_at_soft_wraps: bool,
52}
53
54#[derive(PartialEq, Clone, Deserialize, Default)]
55pub struct ToggleCodeActions {
56 // Display row from which the action was deployed.
57 #[serde(default)]
58 pub deployed_from_indicator: Option<DisplayRow>,
59}
60
61#[derive(PartialEq, Clone, Deserialize, Default)]
62pub struct ConfirmCompletion {
63 #[serde(default)]
64 pub item_ix: Option<usize>,
65}
66
67#[derive(PartialEq, Clone, Deserialize, Default)]
68pub struct ComposeCompletion {
69 #[serde(default)]
70 pub item_ix: Option<usize>,
71}
72
73#[derive(PartialEq, Clone, Deserialize, Default)]
74pub struct ConfirmCodeAction {
75 #[serde(default)]
76 pub item_ix: Option<usize>,
77}
78
79#[derive(PartialEq, Clone, Deserialize, Default)]
80pub struct ToggleComments {
81 #[serde(default)]
82 pub advance_downwards: bool,
83 #[serde(default)]
84 pub ignore_indent: bool,
85}
86
87#[derive(PartialEq, Clone, Deserialize, Default)]
88pub struct FoldAt {
89 pub buffer_row: MultiBufferRow,
90}
91
92#[derive(PartialEq, Clone, Deserialize, Default)]
93pub struct UnfoldAt {
94 pub buffer_row: MultiBufferRow,
95}
96
97#[derive(PartialEq, Clone, Deserialize, Default)]
98pub struct MoveUpByLines {
99 #[serde(default)]
100 pub(super) lines: u32,
101}
102
103#[derive(PartialEq, Clone, Deserialize, Default)]
104pub struct MoveDownByLines {
105 #[serde(default)]
106 pub(super) lines: u32,
107}
108#[derive(PartialEq, Clone, Deserialize, Default)]
109pub struct SelectUpByLines {
110 #[serde(default)]
111 pub(super) lines: u32,
112}
113
114#[derive(PartialEq, Clone, Deserialize, Default)]
115pub struct SelectDownByLines {
116 #[serde(default)]
117 pub(super) lines: u32,
118}
119
120#[derive(PartialEq, Clone, Deserialize, Default)]
121pub struct ExpandExcerpts {
122 #[serde(default)]
123 pub(super) lines: u32,
124}
125
126#[derive(PartialEq, Clone, Deserialize, Default)]
127pub struct ExpandExcerptsUp {
128 #[serde(default)]
129 pub(super) lines: u32,
130}
131
132#[derive(PartialEq, Clone, Deserialize, Default)]
133pub struct ExpandExcerptsDown {
134 #[serde(default)]
135 pub(super) lines: u32,
136}
137#[derive(PartialEq, Clone, Deserialize, Default)]
138pub struct ShowCompletions {
139 #[serde(default)]
140 pub(super) trigger: Option<String>,
141}
142
143#[derive(PartialEq, Clone, Deserialize, Default)]
144pub struct HandleInput(pub String);
145
146#[derive(PartialEq, Clone, Deserialize, Default)]
147pub struct DeleteToNextWordEnd {
148 #[serde(default)]
149 pub ignore_newlines: bool,
150}
151
152#[derive(PartialEq, Clone, Deserialize, Default)]
153pub struct DeleteToPreviousWordStart {
154 #[serde(default)]
155 pub ignore_newlines: bool,
156}
157
158#[derive(PartialEq, Clone, Deserialize, Default)]
159pub struct FoldAtLevel {
160 pub level: u32,
161}
162
163#[derive(PartialEq, Clone, Deserialize, Default)]
164pub struct SpawnNearestTask {
165 #[serde(default)]
166 pub reveal: task::RevealStrategy,
167}
168
169impl_actions!(
170 editor,
171 [
172 ComposeCompletion,
173 ConfirmCodeAction,
174 ConfirmCompletion,
175 DeleteToNextWordEnd,
176 DeleteToPreviousWordStart,
177 ExpandExcerpts,
178 ExpandExcerptsDown,
179 ExpandExcerptsUp,
180 FoldAt,
181 HandleInput,
182 MoveDownByLines,
183 MovePageDown,
184 MovePageUp,
185 MoveToBeginningOfLine,
186 MoveToEndOfLine,
187 MoveUpByLines,
188 SelectDownByLines,
189 SelectNext,
190 SelectPrevious,
191 SelectToBeginningOfLine,
192 SelectToEndOfLine,
193 SelectUpByLines,
194 SpawnNearestTask,
195 ShowCompletions,
196 ToggleCodeActions,
197 ToggleComments,
198 UnfoldAt,
199 FoldAtLevel
200 ]
201);
202
203gpui::actions!(
204 editor,
205 [
206 AcceptInlineCompletion,
207 AcceptPartialCopilotSuggestion,
208 AcceptPartialInlineCompletion,
209 AddSelectionAbove,
210 AddSelectionBelow,
211 ApplyAllDiffHunks,
212 ApplyDiffHunk,
213 Backspace,
214 Cancel,
215 CancelLanguageServerWork,
216 ConfirmRename,
217 ContextMenuFirst,
218 ContextMenuLast,
219 ContextMenuNext,
220 ContextMenuPrev,
221 ConvertToKebabCase,
222 ConvertToLowerCamelCase,
223 ConvertToLowerCase,
224 ConvertToOppositeCase,
225 ConvertToSnakeCase,
226 ConvertToTitleCase,
227 ConvertToUpperCamelCase,
228 ConvertToUpperCase,
229 Copy,
230 CopyFileLocation,
231 CopyHighlightJson,
232 CopyPath,
233 CopyPermalinkToLine,
234 CopyRelativePath,
235 Cut,
236 CutToEndOfLine,
237 Delete,
238 DeleteLine,
239 DeleteToBeginningOfLine,
240 DeleteToEndOfLine,
241 DeleteToNextSubwordEnd,
242 DeleteToPreviousSubwordStart,
243 DisplayCursorNames,
244 DuplicateLineDown,
245 DuplicateLineUp,
246 ExpandAllHunkDiffs,
247 ExpandMacroRecursively,
248 FindAllReferences,
249 Fold,
250 FoldAll,
251 FoldRecursive,
252 FoldSelectedRanges,
253 ToggleFold,
254 ToggleFoldRecursive,
255 Format,
256 FormatSelections,
257 GoToDeclaration,
258 GoToDeclarationSplit,
259 GoToDefinition,
260 GoToDefinitionSplit,
261 GoToDiagnostic,
262 GoToHunk,
263 GoToImplementation,
264 GoToImplementationSplit,
265 GoToPrevDiagnostic,
266 GoToPrevHunk,
267 GoToTypeDefinition,
268 GoToTypeDefinitionSplit,
269 HalfPageDown,
270 HalfPageUp,
271 Hover,
272 Indent,
273 JoinLines,
274 KillRingCut,
275 KillRingYank,
276 LineDown,
277 LineUp,
278 MoveDown,
279 MoveLeft,
280 MoveLineDown,
281 MoveLineUp,
282 MoveRight,
283 MoveToBeginning,
284 MoveToEnclosingBracket,
285 MoveToEnd,
286 MoveToEndOfParagraph,
287 MoveToNextSubwordEnd,
288 MoveToNextWordEnd,
289 MoveToPreviousSubwordStart,
290 MoveToPreviousWordStart,
291 MoveToStartOfParagraph,
292 MoveUp,
293 Newline,
294 NewlineAbove,
295 NewlineBelow,
296 NextInlineCompletion,
297 NextScreen,
298 OpenExcerpts,
299 OpenExcerptsSplit,
300 OpenProposedChangesEditor,
301 OpenFile,
302 OpenDocs,
303 OpenPermalinkToLine,
304 OpenUrl,
305 Outdent,
306 AutoIndent,
307 PageDown,
308 PageUp,
309 Paste,
310 PreviousInlineCompletion,
311 Redo,
312 RedoSelection,
313 Rename,
314 RestartLanguageServer,
315 RevealInFileManager,
316 ReverseLines,
317 RevertFile,
318 ReloadFile,
319 RevertSelectedHunks,
320 Rewrap,
321 ScrollCursorBottom,
322 ScrollCursorCenter,
323 ScrollCursorCenterTopBottom,
324 ScrollCursorTop,
325 SelectAll,
326 SelectAllMatches,
327 SelectDown,
328 SelectEnclosingSymbol,
329 SelectLargerSyntaxNode,
330 SelectLeft,
331 SelectLine,
332 SelectPageDown,
333 SelectPageUp,
334 SelectRight,
335 SelectSmallerSyntaxNode,
336 SelectToBeginning,
337 SelectToEnd,
338 SelectToEndOfParagraph,
339 SelectToNextSubwordEnd,
340 SelectToNextWordEnd,
341 SelectToPreviousSubwordStart,
342 SelectToPreviousWordStart,
343 SelectToStartOfParagraph,
344 SelectUp,
345 ShowCharacterPalette,
346 ShowInlineCompletion,
347 ShowSignatureHelp,
348 ShuffleLines,
349 SortLinesCaseInsensitive,
350 SortLinesCaseSensitive,
351 SplitSelectionIntoLines,
352 SwitchSourceHeader,
353 Tab,
354 TabPrev,
355 ToggleAutoSignatureHelp,
356 ToggleGitBlame,
357 ToggleGitBlameInline,
358 ToggleHunkDiff,
359 ToggleIndentGuides,
360 ToggleInlayHints,
361 ToggleInlineCompletions,
362 ToggleLineNumbers,
363 ToggleRelativeLineNumbers,
364 ToggleSelectionMenu,
365 ToggleSoftWrap,
366 ToggleTabBar,
367 Transpose,
368 Undo,
369 UndoSelection,
370 UnfoldAll,
371 UnfoldLines,
372 UnfoldRecursive,
373 UniqueLinesCaseInsensitive,
374 UniqueLinesCaseSensitive,
375 ]
376);
377
378action_as!(outline, ToggleOutline as Toggle);
379
380action_as!(go_to_line, ToggleGoToLine as Toggle);