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(super) 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}
84
85#[derive(PartialEq, Clone, Deserialize, Default)]
86pub struct FoldAt {
87 pub buffer_row: MultiBufferRow,
88}
89
90#[derive(PartialEq, Clone, Deserialize, Default)]
91pub struct UnfoldAt {
92 pub buffer_row: MultiBufferRow,
93}
94
95#[derive(PartialEq, Clone, Deserialize, Default)]
96pub struct MoveUpByLines {
97 #[serde(default)]
98 pub(super) lines: u32,
99}
100
101#[derive(PartialEq, Clone, Deserialize, Default)]
102pub struct MoveDownByLines {
103 #[serde(default)]
104 pub(super) lines: u32,
105}
106#[derive(PartialEq, Clone, Deserialize, Default)]
107pub struct SelectUpByLines {
108 #[serde(default)]
109 pub(super) lines: u32,
110}
111
112#[derive(PartialEq, Clone, Deserialize, Default)]
113pub struct SelectDownByLines {
114 #[serde(default)]
115 pub(super) lines: u32,
116}
117
118#[derive(PartialEq, Clone, Deserialize, Default)]
119pub struct ExpandExcerpts {
120 #[serde(default)]
121 pub(super) lines: u32,
122}
123
124#[derive(PartialEq, Clone, Deserialize, Default)]
125pub struct ExpandExcerptsUp {
126 #[serde(default)]
127 pub(super) lines: u32,
128}
129
130#[derive(PartialEq, Clone, Deserialize, Default)]
131pub struct ExpandExcerptsDown {
132 #[serde(default)]
133 pub(super) lines: u32,
134}
135#[derive(PartialEq, Clone, Deserialize, Default)]
136pub struct ShowCompletions {
137 #[serde(default)]
138 pub(super) trigger: Option<String>,
139}
140
141#[derive(PartialEq, Clone, Deserialize, Default)]
142pub struct HandleInput(pub String);
143
144#[derive(PartialEq, Clone, Deserialize, Default)]
145pub struct DeleteToNextWordEnd {
146 #[serde(default)]
147 pub ignore_newlines: bool,
148}
149
150#[derive(PartialEq, Clone, Deserialize, Default)]
151pub struct DeleteToPreviousWordStart {
152 #[serde(default)]
153 pub ignore_newlines: bool,
154}
155
156impl_actions!(
157 editor,
158 [
159 ComposeCompletion,
160 ConfirmCodeAction,
161 ConfirmCompletion,
162 DeleteToNextWordEnd,
163 DeleteToPreviousWordStart,
164 ExpandExcerpts,
165 ExpandExcerptsDown,
166 ExpandExcerptsUp,
167 FoldAt,
168 HandleInput,
169 MoveDownByLines,
170 MovePageDown,
171 MovePageUp,
172 MoveToBeginningOfLine,
173 MoveToEndOfLine,
174 MoveUpByLines,
175 SelectDownByLines,
176 SelectNext,
177 SelectPrevious,
178 SelectToBeginningOfLine,
179 SelectToEndOfLine,
180 SelectUpByLines,
181 ShowCompletions,
182 ToggleCodeActions,
183 ToggleComments,
184 UnfoldAt,
185 ]
186);
187
188gpui::actions!(
189 editor,
190 [
191 AcceptInlineCompletion,
192 AcceptPartialCopilotSuggestion,
193 AcceptPartialInlineCompletion,
194 AddSelectionAbove,
195 AddSelectionBelow,
196 ApplyDiffHunk,
197 Backspace,
198 Cancel,
199 CancelLanguageServerWork,
200 ConfirmRename,
201 ContextMenuFirst,
202 ContextMenuLast,
203 ContextMenuNext,
204 ContextMenuPrev,
205 ConvertToKebabCase,
206 ConvertToLowerCamelCase,
207 ConvertToLowerCase,
208 ConvertToOppositeCase,
209 ConvertToSnakeCase,
210 ConvertToTitleCase,
211 ConvertToUpperCamelCase,
212 ConvertToUpperCase,
213 Copy,
214 CopyFileLocation,
215 CopyHighlightJson,
216 CopyPath,
217 CopyPermalinkToLine,
218 CopyRelativePath,
219 Cut,
220 CutToEndOfLine,
221 Delete,
222 DeleteLine,
223 DeleteToBeginningOfLine,
224 DeleteToEndOfLine,
225 DeleteToNextSubwordEnd,
226 DeleteToPreviousSubwordStart,
227 DisplayCursorNames,
228 DuplicateLineDown,
229 DuplicateLineUp,
230 ExpandAllHunkDiffs,
231 ExpandMacroRecursively,
232 FindAllReferences,
233 Fold,
234 FoldAll,
235 FoldRecursive,
236 FoldSelectedRanges,
237 ToggleFold,
238 ToggleFoldRecursive,
239 Format,
240 GoToDeclaration,
241 GoToDeclarationSplit,
242 GoToDefinition,
243 GoToDefinitionSplit,
244 GoToDiagnostic,
245 GoToHunk,
246 GoToImplementation,
247 GoToImplementationSplit,
248 GoToPrevDiagnostic,
249 GoToPrevHunk,
250 GoToTypeDefinition,
251 GoToTypeDefinitionSplit,
252 HalfPageDown,
253 HalfPageUp,
254 Hover,
255 Indent,
256 JoinLines,
257 LineDown,
258 LineUp,
259 MoveDown,
260 MoveLeft,
261 MoveLineDown,
262 MoveLineUp,
263 MoveRight,
264 MoveToBeginning,
265 MoveToEnclosingBracket,
266 MoveToEnd,
267 MoveToEndOfParagraph,
268 MoveToNextSubwordEnd,
269 MoveToNextWordEnd,
270 MoveToPreviousSubwordStart,
271 MoveToPreviousWordStart,
272 MoveToStartOfParagraph,
273 MoveUp,
274 Newline,
275 NewlineAbove,
276 NewlineBelow,
277 NextInlineCompletion,
278 NextScreen,
279 OpenExcerpts,
280 OpenExcerptsSplit,
281 OpenProposedChangesEditor,
282 OpenFile,
283 OpenPermalinkToLine,
284 OpenUrl,
285 Outdent,
286 PageDown,
287 PageUp,
288 Paste,
289 PreviousInlineCompletion,
290 Redo,
291 RedoSelection,
292 Rename,
293 RestartLanguageServer,
294 RevealInFileManager,
295 ReverseLines,
296 RevertFile,
297 ReloadFile,
298 RevertSelectedHunks,
299 Rewrap,
300 ScrollCursorBottom,
301 ScrollCursorCenter,
302 ScrollCursorCenterTopBottom,
303 ScrollCursorTop,
304 SelectAll,
305 SelectAllMatches,
306 SelectDown,
307 SelectEnclosingSymbol,
308 SelectLargerSyntaxNode,
309 SelectLeft,
310 SelectLine,
311 SelectPageDown,
312 SelectPageUp,
313 SelectRight,
314 SelectSmallerSyntaxNode,
315 SelectToBeginning,
316 SelectToEnd,
317 SelectToEndOfParagraph,
318 SelectToNextSubwordEnd,
319 SelectToNextWordEnd,
320 SelectToPreviousSubwordStart,
321 SelectToPreviousWordStart,
322 SelectToStartOfParagraph,
323 SelectUp,
324 ShowCharacterPalette,
325 ShowInlineCompletion,
326 ShowSignatureHelp,
327 ShuffleLines,
328 SortLinesCaseInsensitive,
329 SortLinesCaseSensitive,
330 SplitSelectionIntoLines,
331 SwitchSourceHeader,
332 Tab,
333 TabPrev,
334 ToggleAutoSignatureHelp,
335 ToggleGitBlame,
336 ToggleGitBlameInline,
337 ToggleHunkDiff,
338 ToggleIndentGuides,
339 ToggleInlayHints,
340 ToggleInlineCompletions,
341 ToggleLineNumbers,
342 ToggleRelativeLineNumbers,
343 ToggleSelectionMenu,
344 ToggleSoftWrap,
345 ToggleTabBar,
346 Transpose,
347 Undo,
348 UndoSelection,
349 UnfoldAll,
350 UnfoldLines,
351 UnfoldRecursive,
352 UniqueLinesCaseInsensitive,
353 UniqueLinesCaseSensitive,
354 ]
355);
356
357action_as!(outline, ToggleOutline as Toggle);
358
359action_as!(go_to_line, ToggleGoToLine as Toggle);