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