reovim_plugin_explorer/
command.rs

1//! Explorer commands (unified command-event types)
2
3use reovim_core::{declare_counted_event_command, declare_event_command, event_bus::Event};
4
5// === Counted navigation commands ===
6
7declare_counted_event_command! {
8    ExplorerCursorUp,
9    id: "explorer_cursor_up",
10    description: "Move cursor up",
11}
12
13declare_counted_event_command! {
14    ExplorerCursorDown,
15    id: "explorer_cursor_down",
16    description: "Move cursor down",
17}
18
19// === Zero-sized navigation commands ===
20
21declare_event_command! {
22    ExplorerPageUp,
23    id: "explorer_page_up",
24    description: "Page up",
25}
26
27declare_event_command! {
28    ExplorerPageDown,
29    id: "explorer_page_down",
30    description: "Page down",
31}
32
33declare_event_command! {
34    ExplorerGotoFirst,
35    id: "explorer_goto_first",
36    description: "Go to first item",
37}
38
39declare_event_command! {
40    ExplorerGotoLast,
41    id: "explorer_goto_last",
42    description: "Go to last item",
43}
44
45// === Node operations ===
46
47declare_event_command! {
48    ExplorerToggleNode,
49    id: "explorer_toggle_node",
50    description: "Toggle expand/collapse on current node",
51}
52
53declare_event_command! {
54    ExplorerOpenNode,
55    id: "explorer_open_node",
56    description: "Open file or toggle directory",
57}
58
59declare_event_command! {
60    ExplorerCloseParent,
61    id: "explorer_close_parent",
62    description: "Close parent directory",
63}
64
65declare_event_command! {
66    ExplorerGoToParent,
67    id: "explorer_goto_parent",
68    description: "Go to parent directory",
69}
70
71// === Display & refresh ===
72
73declare_event_command! {
74    ExplorerRefresh,
75    id: "explorer_refresh",
76    description: "Refresh tree from filesystem",
77}
78
79declare_event_command! {
80    ExplorerToggleHidden,
81    id: "explorer_toggle_hidden",
82    description: "Toggle showing hidden files",
83}
84
85declare_event_command! {
86    ExplorerToggleSizes,
87    id: "explorer_toggle_sizes",
88    description: "Toggle showing file sizes",
89}
90
91// === Clipboard operations ===
92
93declare_event_command! {
94    ExplorerYank,
95    id: "explorer_yank",
96    description: "Yank (copy) current item to clipboard",
97}
98
99declare_event_command! {
100    ExplorerCut,
101    id: "explorer_cut",
102    description: "Cut current item to clipboard",
103}
104
105declare_event_command! {
106    ExplorerPaste,
107    id: "explorer_paste",
108    description: "Paste from clipboard",
109}
110
111// === Window management ===
112
113declare_event_command! {
114    ExplorerClose,
115    id: "explorer_close",
116    description: "Close explorer (switch to editor)",
117}
118
119declare_event_command! {
120    ExplorerFocusEditor,
121    id: "explorer_focus_editor",
122    description: "Focus editor window",
123}
124
125declare_event_command! {
126    ExplorerToggle,
127    id: "explorer_toggle",
128    description: "Toggle explorer visibility",
129}
130
131// === File operations ===
132
133declare_event_command! {
134    ExplorerCreateFile,
135    id: "explorer_create_file",
136    description: "Start creating a new file",
137}
138
139declare_event_command! {
140    ExplorerCreateDir,
141    id: "explorer_create_dir",
142    description: "Start creating a new directory",
143}
144
145declare_event_command! {
146    ExplorerRename,
147    id: "explorer_rename",
148    description: "Start renaming current item",
149}
150
151declare_event_command! {
152    ExplorerDelete,
153    id: "explorer_delete",
154    description: "Delete current item",
155}
156
157// === Filter & search ===
158
159declare_event_command! {
160    ExplorerStartFilter,
161    id: "explorer_start_filter",
162    description: "Start filtering by pattern",
163}
164
165declare_event_command! {
166    ExplorerClearFilter,
167    id: "explorer_clear_filter",
168    description: "Clear current filter",
169}
170
171declare_event_command! {
172    ExplorerToggleGitIgnore,
173    id: "explorer_toggle_gitignore",
174    description: "Toggle gitignore filtering",
175}
176
177// === Advanced operations ===
178
179declare_event_command! {
180    ExplorerRevealCurrentFile,
181    id: "explorer_reveal_current_file",
182    description: "Reveal current file in explorer",
183}
184
185declare_event_command! {
186    ExplorerCollapseAll,
187    id: "explorer_collapse_all",
188    description: "Collapse all directories",
189}
190
191declare_event_command! {
192    ExplorerExpandAll,
193    id: "explorer_expand_all",
194    description: "Expand all directories",
195}
196
197declare_event_command! {
198    ExplorerChangeRoot,
199    id: "explorer_change_root",
200    description: "Change root to selected directory",
201}
202
203declare_event_command! {
204    ExplorerOpenInSplit,
205    id: "explorer_open_in_split",
206    description: "Open file in split",
207}
208
209declare_event_command! {
210    ExplorerOpenInVSplit,
211    id: "explorer_open_in_vsplit",
212    description: "Open file in vertical split",
213}
214
215declare_event_command! {
216    ExplorerOpenExternal,
217    id: "explorer_open_external",
218    description: "Open with external program",
219}
220
221declare_event_command! {
222    ExplorerShowInfo,
223    id: "explorer_show_info",
224    description: "Show file/directory info",
225}
226
227declare_event_command! {
228    ExplorerClosePopup,
229    id: "explorer_close_popup",
230    description: "Close file details popup",
231}
232
233declare_event_command! {
234    ExplorerCopyPath,
235    id: "explorer_copy_path",
236    description: "Copy file path to clipboard",
237}
238
239// === Input mode commands ===
240
241declare_event_command! {
242    ExplorerConfirmInput,
243    id: "explorer_confirm_input",
244    description: "Confirm input operation",
245}
246
247declare_event_command! {
248    ExplorerCancelInput,
249    id: "explorer_cancel_input",
250    description: "Cancel input operation",
251}
252
253/// Insert character in input mode
254#[derive(Debug, Clone, Copy)]
255pub struct ExplorerInputChar {
256    pub c: char,
257}
258
259impl ExplorerInputChar {
260    #[must_use]
261    pub const fn new(c: char) -> Self {
262        Self { c }
263    }
264}
265
266impl Event for ExplorerInputChar {
267    fn priority(&self) -> u32 {
268        100
269    }
270}
271
272declare_event_command! {
273    ExplorerInputBackspace,
274    id: "explorer_input_backspace",
275    description: "Delete character in input",
276}
277
278// === Visual mode commands ===
279
280declare_event_command! {
281    ExplorerVisualMode,
282    id: "explorer_visual_mode",
283    description: "Enter visual selection mode",
284}
285
286declare_event_command! {
287    ExplorerToggleSelect,
288    id: "explorer_toggle_select",
289    description: "Toggle selection of current item",
290}
291
292declare_event_command! {
293    ExplorerSelectAll,
294    id: "explorer_select_all",
295    description: "Select all items",
296}
297
298declare_event_command! {
299    ExplorerExitVisual,
300    id: "explorer_exit_visual",
301    description: "Exit visual mode",
302}