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 GoToMatchingBracket,
159 JumpToNextError,
160 JumpToPreviousError,
161
162 SmartHome,
164 DedentSelection,
165 ToggleComment,
166
167 SetBookmark(char),
169 JumpToBookmark(char),
170 ClearBookmark(char),
171 ListBookmarks,
172
173 ToggleSearchCaseSensitive,
175 ToggleSearchWholeWord,
176 ToggleSearchRegex,
177 ToggleSearchConfirmEach,
178
179 StartMacroRecording,
181 StopMacroRecording,
182 PlayMacro(char),
183 ToggleMacroRecording(char),
184 ShowMacro(char),
185 ListMacros,
186 PromptRecordMacro,
187 PromptPlayMacro,
188 PlayLastMacro,
189
190 PromptSetBookmark,
192 PromptJumpToBookmark,
193
194 Undo,
196 Redo,
197
198 ScrollUp,
200 ScrollDown,
201 ShowHelp,
202 ShowKeyboardShortcuts,
203 ShowWarnings,
204 ShowLspStatus,
205 ClearWarnings,
206 CommandPalette,
207 ToggleLineWrap,
208 ToggleComposeMode,
209 SetComposeWidth,
210 SelectTheme,
211 SelectKeybindingMap,
212 SelectCursorStyle,
213 SelectLocale,
214
215 NextBuffer,
217 PrevBuffer,
218 SwitchToPreviousTab,
219 SwitchToTabByName,
220
221 ScrollTabsLeft,
223 ScrollTabsRight,
224
225 NavigateBack,
227 NavigateForward,
228
229 SplitHorizontal,
231 SplitVertical,
232 CloseSplit,
233 NextSplit,
234 PrevSplit,
235 IncreaseSplitSize,
236 DecreaseSplitSize,
237 ToggleMaximizeSplit,
238
239 PromptConfirm,
241 PromptConfirmWithText(String),
243 PromptCancel,
244 PromptBackspace,
245 PromptDelete,
246 PromptMoveLeft,
247 PromptMoveRight,
248 PromptMoveStart,
249 PromptMoveEnd,
250 PromptSelectPrev,
251 PromptSelectNext,
252 PromptPageUp,
253 PromptPageDown,
254 PromptAcceptSuggestion,
255 PromptMoveWordLeft,
256 PromptMoveWordRight,
257 PromptDeleteWordForward,
259 PromptDeleteWordBackward,
260 PromptDeleteToLineEnd,
261 PromptCopy,
262 PromptCut,
263 PromptPaste,
264 PromptMoveLeftSelecting,
266 PromptMoveRightSelecting,
267 PromptMoveHomeSelecting,
268 PromptMoveEndSelecting,
269 PromptSelectWordLeft,
270 PromptSelectWordRight,
271 PromptSelectAll,
272
273 FileBrowserToggleHidden,
275
276 PopupSelectNext,
278 PopupSelectPrev,
279 PopupPageUp,
280 PopupPageDown,
281 PopupConfirm,
282 PopupCancel,
283
284 ToggleFileExplorer,
286 ToggleMenuBar,
288 ToggleTabBar,
290 FocusFileExplorer,
291 FocusEditor,
292 FileExplorerUp,
293 FileExplorerDown,
294 FileExplorerPageUp,
295 FileExplorerPageDown,
296 FileExplorerExpand,
297 FileExplorerCollapse,
298 FileExplorerOpen,
299 FileExplorerRefresh,
300 FileExplorerNewFile,
301 FileExplorerNewDirectory,
302 FileExplorerDelete,
303 FileExplorerRename,
304 FileExplorerToggleHidden,
305 FileExplorerToggleGitignored,
306
307 LspCompletion,
309 LspGotoDefinition,
310 LspReferences,
311 LspRename,
312 LspHover,
313 LspSignatureHelp,
314 LspCodeActions,
315 LspRestart,
316 LspStop,
317 ToggleInlayHints,
318 ToggleMouseHover,
319
320 ToggleLineNumbers,
322 ToggleMouseCapture,
323 ToggleDebugHighlights, SetBackground,
325 SetBackgroundBlend,
326
327 SetTabSize,
329 SetLineEnding,
330 ToggleIndentationStyle,
331 ToggleTabIndicators,
332 ResetBufferSettings,
333
334 DumpConfig,
336
337 Search,
339 FindInSelection,
340 FindNext,
341 FindPrevious,
342 FindSelectionNext, FindSelectionPrevious, Replace,
345 QueryReplace, MenuActivate, MenuClose, MenuLeft, MenuRight, MenuUp, MenuDown, MenuExecute, MenuOpen(String), SwitchKeybindingMap(String), PluginAction(String),
362
363 OpenSettings, CloseSettings, SettingsSave, SettingsReset, SettingsToggleFocus, SettingsActivate, SettingsSearch, SettingsHelp, SettingsIncrement, SettingsDecrement, OpenTerminal, CloseTerminal, FocusTerminal, TerminalEscape, ToggleKeyboardCapture, TerminalPaste, ShellCommand, ShellCommandReplace, ToUpperCase, ToLowerCase, CalibrateInput, None,
396}