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
175 SetBookmark(char),
177 JumpToBookmark(char),
178 ClearBookmark(char),
179 ListBookmarks,
180
181 ToggleSearchCaseSensitive,
183 ToggleSearchWholeWord,
184 ToggleSearchRegex,
185 ToggleSearchConfirmEach,
186
187 StartMacroRecording,
189 StopMacroRecording,
190 PlayMacro(char),
191 ToggleMacroRecording(char),
192 ShowMacro(char),
193 ListMacros,
194 PromptRecordMacro,
195 PromptPlayMacro,
196 PlayLastMacro,
197
198 PromptSetBookmark,
200 PromptJumpToBookmark,
201
202 Undo,
204 Redo,
205
206 ScrollUp,
208 ScrollDown,
209 ShowHelp,
210 ShowKeyboardShortcuts,
211 ShowWarnings,
212 ShowLspStatus,
213 ClearWarnings,
214 CommandPalette,
215 ToggleLineWrap,
216 ToggleReadOnly,
217 TogglePageView,
218 SetPageWidth,
219 InspectThemeAtCursor,
220 SelectTheme,
221 SelectKeybindingMap,
222 SelectCursorStyle,
223 SelectLocale,
224
225 NextBuffer,
227 PrevBuffer,
228 SwitchToPreviousTab,
229 SwitchToTabByName,
230
231 ScrollTabsLeft,
233 ScrollTabsRight,
234
235 NavigateBack,
237 NavigateForward,
238
239 SplitHorizontal,
241 SplitVertical,
242 CloseSplit,
243 NextSplit,
244 PrevSplit,
245 IncreaseSplitSize,
246 DecreaseSplitSize,
247 ToggleMaximizeSplit,
248
249 PromptConfirm,
251 PromptConfirmWithText(String),
253 PromptCancel,
254 PromptBackspace,
255 PromptDelete,
256 PromptMoveLeft,
257 PromptMoveRight,
258 PromptMoveStart,
259 PromptMoveEnd,
260 PromptSelectPrev,
261 PromptSelectNext,
262 PromptPageUp,
263 PromptPageDown,
264 PromptAcceptSuggestion,
265 PromptMoveWordLeft,
266 PromptMoveWordRight,
267 PromptDeleteWordForward,
269 PromptDeleteWordBackward,
270 PromptDeleteToLineEnd,
271 PromptCopy,
272 PromptCut,
273 PromptPaste,
274 PromptMoveLeftSelecting,
276 PromptMoveRightSelecting,
277 PromptMoveHomeSelecting,
278 PromptMoveEndSelecting,
279 PromptSelectWordLeft,
280 PromptSelectWordRight,
281 PromptSelectAll,
282
283 FileBrowserToggleHidden,
285
286 PopupSelectNext,
288 PopupSelectPrev,
289 PopupPageUp,
290 PopupPageDown,
291 PopupConfirm,
292 PopupCancel,
293
294 ToggleFileExplorer,
296 ToggleMenuBar,
298 ToggleTabBar,
300 FocusFileExplorer,
301 FocusEditor,
302 FileExplorerUp,
303 FileExplorerDown,
304 FileExplorerPageUp,
305 FileExplorerPageDown,
306 FileExplorerExpand,
307 FileExplorerCollapse,
308 FileExplorerOpen,
309 FileExplorerRefresh,
310 FileExplorerNewFile,
311 FileExplorerNewDirectory,
312 FileExplorerDelete,
313 FileExplorerRename,
314 FileExplorerToggleHidden,
315 FileExplorerToggleGitignored,
316
317 LspCompletion,
319 LspGotoDefinition,
320 LspReferences,
321 LspRename,
322 LspHover,
323 LspSignatureHelp,
324 LspCodeActions,
325 LspRestart,
326 LspStop,
327 ToggleInlayHints,
328 ToggleMouseHover,
329
330 ToggleLineNumbers,
332 ToggleScrollSync,
333 ToggleMouseCapture,
334 ToggleDebugHighlights, SetBackground,
336 SetBackgroundBlend,
337
338 SetTabSize,
340 SetLineEnding,
341 ToggleIndentationStyle,
342 ToggleTabIndicators,
343 ResetBufferSettings,
344
345 DumpConfig,
347
348 Search,
350 FindInSelection,
351 FindNext,
352 FindPrevious,
353 FindSelectionNext, FindSelectionPrevious, Replace,
356 QueryReplace, MenuActivate, MenuClose, MenuLeft, MenuRight, MenuUp, MenuDown, MenuExecute, MenuOpen(String), SwitchKeybindingMap(String), PluginAction(String),
373
374 LoadPluginFromBuffer,
376
377 OpenSettings, CloseSettings, SettingsSave, SettingsReset, SettingsToggleFocus, SettingsActivate, SettingsSearch, SettingsHelp, SettingsIncrement, SettingsDecrement, OpenTerminal, CloseTerminal, FocusTerminal, TerminalEscape, ToggleKeyboardCapture, TerminalPaste, ShellCommand, ShellCommandReplace, ToUpperCase, ToLowerCase, CalibrateInput, None,
410}