1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize, ts_rs::TS)]
5#[ts(export)]
6pub enum KeyContext {
7 Global,
9 Normal,
11 Prompt,
13 Popup,
15 FileExplorer,
17 Menu,
19 Terminal,
21 Settings,
23}
24
25impl KeyContext {
26 pub fn allows_text_input(&self) -> bool {
28 matches!(self, Self::Normal | Self::Prompt)
29 }
30
31 pub fn from_when_clause(when: &str) -> Option<Self> {
33 Some(match when.trim() {
34 "global" => Self::Global,
35 "prompt" => Self::Prompt,
36 "popup" => Self::Popup,
37 "fileExplorer" | "file_explorer" => Self::FileExplorer,
38 "normal" => Self::Normal,
39 "menu" => Self::Menu,
40 "terminal" => Self::Terminal,
41 "settings" => Self::Settings,
42 _ => return None,
43 })
44 }
45
46 pub fn to_when_clause(self) -> &'static str {
48 match self {
49 Self::Global => "global",
50 Self::Normal => "normal",
51 Self::Prompt => "prompt",
52 Self::Popup => "popup",
53 Self::FileExplorer => "fileExplorer",
54 Self::Menu => "menu",
55 Self::Terminal => "terminal",
56 Self::Settings => "settings",
57 }
58 }
59}
60
61#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, ts_rs::TS)]
63#[ts(export)]
64pub enum Action {
65 InsertChar(char),
67 InsertNewline,
68 InsertTab,
69
70 MoveLeft,
72 MoveRight,
73 MoveUp,
74 MoveDown,
75 MoveWordLeft,
76 MoveWordRight,
77 MoveLineStart,
78 MoveLineEnd,
79 MovePageUp,
80 MovePageDown,
81 MoveDocumentStart,
82 MoveDocumentEnd,
83
84 SelectLeft,
86 SelectRight,
87 SelectUp,
88 SelectDown,
89 SelectWordLeft,
90 SelectWordRight,
91 SelectLineStart,
92 SelectLineEnd,
93 SelectDocumentStart,
94 SelectDocumentEnd,
95 SelectPageUp,
96 SelectPageDown,
97 SelectAll,
98 SelectWord,
99 SelectLine,
100 ExpandSelection,
101
102 BlockSelectLeft,
104 BlockSelectRight,
105 BlockSelectUp,
106 BlockSelectDown,
107
108 DeleteBackward,
110 DeleteForward,
111 DeleteWordBackward,
112 DeleteWordForward,
113 DeleteLine,
114 DeleteToLineEnd,
115 DeleteToLineStart,
116 TransposeChars,
117 OpenLine,
118
119 Recenter,
121
122 SetMark,
124
125 Copy,
127 CopyWithTheme(String),
128 Cut,
129 Paste,
130
131 YankWordForward,
133 YankWordBackward,
134 YankToLineEnd,
135 YankToLineStart,
136
137 AddCursorAbove,
139 AddCursorBelow,
140 AddCursorNextMatch,
141 RemoveSecondaryCursors,
142
143 Save,
145 SaveAs,
146 Open,
147 SwitchProject,
148 New,
149 Close,
150 CloseTab,
151 Quit,
152 Revert,
153 ToggleAutoRevert,
154 FormatBuffer,
155
156 GotoLine,
158 ScanLineIndex,
159 GoToMatchingBracket,
160 JumpToNextError,
161 JumpToPreviousError,
162
163 SmartHome,
165 DedentSelection,
166 ToggleComment,
167
168 SetBookmark(char),
170 JumpToBookmark(char),
171 ClearBookmark(char),
172 ListBookmarks,
173
174 ToggleSearchCaseSensitive,
176 ToggleSearchWholeWord,
177 ToggleSearchRegex,
178 ToggleSearchConfirmEach,
179
180 StartMacroRecording,
182 StopMacroRecording,
183 PlayMacro(char),
184 ToggleMacroRecording(char),
185 ShowMacro(char),
186 ListMacros,
187 PromptRecordMacro,
188 PromptPlayMacro,
189 PlayLastMacro,
190
191 PromptSetBookmark,
193 PromptJumpToBookmark,
194
195 Undo,
197 Redo,
198
199 ScrollUp,
201 ScrollDown,
202 ShowHelp,
203 ShowKeyboardShortcuts,
204 ShowWarnings,
205 ShowLspStatus,
206 ClearWarnings,
207 CommandPalette,
208 ToggleLineWrap,
209 ToggleReadOnly,
210 ToggleComposeMode,
211 SetComposeWidth,
212 InspectThemeAtCursor,
213 SelectTheme,
214 SelectKeybindingMap,
215 SelectCursorStyle,
216 SelectLocale,
217
218 NextBuffer,
220 PrevBuffer,
221 SwitchToPreviousTab,
222 SwitchToTabByName,
223
224 ScrollTabsLeft,
226 ScrollTabsRight,
227
228 NavigateBack,
230 NavigateForward,
231
232 SplitHorizontal,
234 SplitVertical,
235 CloseSplit,
236 NextSplit,
237 PrevSplit,
238 IncreaseSplitSize,
239 DecreaseSplitSize,
240 ToggleMaximizeSplit,
241
242 PromptConfirm,
244 PromptConfirmWithText(String),
246 PromptCancel,
247 PromptBackspace,
248 PromptDelete,
249 PromptMoveLeft,
250 PromptMoveRight,
251 PromptMoveStart,
252 PromptMoveEnd,
253 PromptSelectPrev,
254 PromptSelectNext,
255 PromptPageUp,
256 PromptPageDown,
257 PromptAcceptSuggestion,
258 PromptMoveWordLeft,
259 PromptMoveWordRight,
260 PromptDeleteWordForward,
262 PromptDeleteWordBackward,
263 PromptDeleteToLineEnd,
264 PromptCopy,
265 PromptCut,
266 PromptPaste,
267 PromptMoveLeftSelecting,
269 PromptMoveRightSelecting,
270 PromptMoveHomeSelecting,
271 PromptMoveEndSelecting,
272 PromptSelectWordLeft,
273 PromptSelectWordRight,
274 PromptSelectAll,
275
276 FileBrowserToggleHidden,
278
279 PopupSelectNext,
281 PopupSelectPrev,
282 PopupPageUp,
283 PopupPageDown,
284 PopupConfirm,
285 PopupCancel,
286
287 ToggleFileExplorer,
289 ToggleMenuBar,
291 ToggleTabBar,
293 FocusFileExplorer,
294 FocusEditor,
295 FileExplorerUp,
296 FileExplorerDown,
297 FileExplorerPageUp,
298 FileExplorerPageDown,
299 FileExplorerExpand,
300 FileExplorerCollapse,
301 FileExplorerOpen,
302 FileExplorerRefresh,
303 FileExplorerNewFile,
304 FileExplorerNewDirectory,
305 FileExplorerDelete,
306 FileExplorerRename,
307 FileExplorerToggleHidden,
308 FileExplorerToggleGitignored,
309
310 LspCompletion,
312 LspGotoDefinition,
313 LspReferences,
314 LspRename,
315 LspHover,
316 LspSignatureHelp,
317 LspCodeActions,
318 LspRestart,
319 LspStop,
320 ToggleInlayHints,
321 ToggleMouseHover,
322
323 ToggleLineNumbers,
325 ToggleScrollSync,
326 ToggleMouseCapture,
327 ToggleDebugHighlights, SetBackground,
329 SetBackgroundBlend,
330
331 SetTabSize,
333 SetLineEnding,
334 ToggleIndentationStyle,
335 ToggleTabIndicators,
336 ResetBufferSettings,
337
338 DumpConfig,
340
341 Search,
343 FindInSelection,
344 FindNext,
345 FindPrevious,
346 FindSelectionNext, FindSelectionPrevious, Replace,
349 QueryReplace, MenuActivate, MenuClose, MenuLeft, MenuRight, MenuUp, MenuDown, MenuExecute, MenuOpen(String), SwitchKeybindingMap(String), PluginAction(String),
366
367 LoadPluginFromBuffer,
369
370 OpenSettings, CloseSettings, SettingsSave, SettingsReset, SettingsToggleFocus, SettingsActivate, SettingsSearch, SettingsHelp, SettingsIncrement, SettingsDecrement, OpenTerminal, CloseTerminal, FocusTerminal, TerminalEscape, ToggleKeyboardCapture, TerminalPaste, ShellCommand, ShellCommandReplace, ToUpperCase, ToLowerCase, CalibrateInput, None,
403}