@@ -8,16 +8,259 @@ License: MIT License (See LICENSE)
8
8
CONTENTS *fall-contents*
9
9
10
10
INTRODUCTION | fall-introduction |
11
+ REQUIREMENTS | fall-requirements |
11
12
12
13
13
14
=============================================================================
14
15
INTRODUCTION *fall-introduction*
15
16
16
- Fall (*fall.vim*) is a yet another fuzzy finder for Vim/Neovim written
17
- in Denops.
17
+ Fall (*fall.vim*) is a yet another Fuzzy Finder for Vim/Neovim.
18
18
19
- Denops: https://github.com/vim-denops/denops.vim
19
+ It has the following distinct features
20
20
21
+ - Quick help with <F1> key
22
+ - Support multiple matchers, sorters, renderers, and previewers
23
+ - Submatch for fine-grained filtering
24
+ - Action selector to select an action to invoke
25
+ - Customizable with TypeScript
26
+
27
+ =============================================================================
28
+ REQUIREMENTS *fall-requirements*
29
+
30
+ Fall is written in denops so users need to install denops.vim
31
+
32
+ denops.vim~
33
+ An ecosystem for writing Vim/Neovim plugin in Deno.
34
+ https://github.com/vim-denops/denops.vim
35
+
36
+ Additionally, the "nerdfont" renderer is enabled by default so configure your
37
+ terminal to use a Nerd Font to display the icons correctly.
38
+
39
+ NerdFont~
40
+ A collection of over 10,000 icons that are compatible with popular
41
+ programming fonts.
42
+ https://www.nerdfonts.com/
43
+
44
+ Disable the "nerdfont" renderer by removing it from the "renderers" option in
45
+ the "custom.ts" file if you don't want to use the Nerd Font. See
46
+ | fall-customization | for more information about the customization.
47
+
48
+ =============================================================================
49
+ USAGE *fall-usage*
50
+
51
+ Fall provides a command | :Fall | which opens a floating window to filter the
52
+ specified source. For example, to filter the files in the current directory,
53
+ "file" source like this:
54
+ >
55
+ :Fall file
56
+ <
57
+ Then you can filter the files in the current directory with a picker window.
58
+ If you want to filter the files in the specified directory, you can pass the
59
+ directory path as an argument like this:
60
+ >
61
+ :Fall file /path/to/directory
62
+ <
63
+ Or if you want to filter the lines in the current buffer, you can use the
64
+ "line" source like this:
65
+ >
66
+ :Fall line
67
+
68
+ In the picker window, you can use the following key mappings. Note that the
69
+ actual key mappings may vary depending on the configuration and you can
70
+ confirm the key mappings by invoking the help with the <F1> key.
71
+
72
+ <CR> Invoke the default action on the current or selected item(s)
73
+ <Tab> Open an action selector and invoke the selected action
74
+ <C-,> Select or unselect the current item
75
+ <C-n> Move the cursor to the next item
76
+ <C-p> Move the cursor to the previous item
77
+ <Down> Move the cursor in preview window to the next line
78
+ <Up> Move the cursor in preview window to the previous line
79
+ <F1> Show help
80
+ <F2> Switch to the next matcher
81
+ <F3> Switch to the next sorter
82
+ <F4> Switch to the next renderer
83
+ <F5> Switch to the next previewer
84
+ <
85
+ See | fall-configuration-mappings | for more information about the mappings.
86
+
87
+
88
+ =============================================================================
89
+ CONFIGURATION *fall-configuration*
90
+
91
+ =============================================================================
92
+ CUSTOMIZATION *fall-customization*
93
+
94
+ >ts
95
+ import type { Entrypoint } from "jsr:@vim-fall/custom";
96
+ import * as builtin from "jsr:@vim-fall/std/builtin";
97
+
98
+ export const main: Entrypoint = ({
99
+ definePickerFromSource,
100
+ definePickerFromCurator,
101
+ }) => {
102
+ // Define "file" picker
103
+ definePickerFromSource("file", builtin.source.file, {
104
+ matchers: [builtin.matcher.fzf],
105
+ renderers: [
106
+ builtin.renderer.nerdfont,
107
+ builtin.renderer.noop,
108
+ ],
109
+ actions: {
110
+ ...builtin.action.defaultOpenActions,
111
+ ...builtin.action.defaultSystemopenActions,
112
+ ...builtin.action.defaultCdActions,
113
+ ...builtin.action.defaultEchoActions,
114
+ ...builtin.action.defaultYankActions,
115
+ },
116
+ defaultAction: "open",
117
+ });
118
+ // Define "git-grep" picker
119
+ definePickerFromCurator("git-grep", builtin.curator.gitGrep, {
120
+ renderers: [
121
+ builtin.renderer.nerdfont,
122
+ builtin.renderer.noop,
123
+ ],
124
+ actions: {
125
+ ...builtin.action.defaultOpenActions,
126
+ ...builtin.action.defaultSystemopenActions,
127
+ ...builtin.action.defaultCdActions,
128
+ ...builtin.action.defaultEchoActions,
129
+ ...builtin.action.defaultYankActions,
130
+ },
131
+ defaultAction: "open",
132
+ });
133
+ };
134
+ <
135
+ See "default.custom.ts" file in "denops/fall/_assets" directory for
136
+ the default configuration.
137
+
138
+
139
+ =============================================================================
140
+ INTERFACE *fall-interface*
141
+
142
+ -----------------------------------------------------------------------------
143
+ COMMAND *fall-command*
144
+
145
+ *:Fall*
146
+ :Fall {source} [{cmdarg} ]
147
+ Open a picker window to filter the specified {source} . The {source} is
148
+ a picker name defined in "custom.ts" file opened by the | :FallCustom |
149
+ command. The {cmdarg} is a command argument passed to the source.
150
+
151
+ *:FallCustom*
152
+ :FallCustom
153
+ Open a "custom.ts" file to customize the picker. The "custom.ts" file
154
+ is a TypeScript file which exports a function named "main" that
155
+ defines pickers. When user update the file, the picker is reloaded
156
+ automatically by the | :FallCustomReload | command.
157
+
158
+ See | g:fall_custom_path | for the path of the "custom.ts" file.
159
+
160
+ *:FallCustomReload*
161
+ :FallCustomReload
162
+ Reload the "custom.ts" file to apply the changes. Note that Deno
163
+ caches the module in memory so the changes may not be applied until
164
+ the Denops process is restarted.
165
+
166
+ See | :FallCustomRecache | for the command to recache the module cache.
167
+
168
+ *:FallCustomRecache*
169
+ :FallCustomRecache
170
+ Recache the Deno's local module cache. This command is useful when
171
+ you want to update the dependencies in the "custom.ts" file.
172
+
173
+ -----------------------------------------------------------------------------
174
+ AUTOCMD *fall-autocmd*
175
+
176
+ *FallPickerEnter*
177
+ FallPickerEnter:{name}
178
+ An | User | | autocmd | triggered when the picker window of the {name}
179
+ picker is entered.
180
+
181
+ Use this event to define custom key mappings like:
182
+ >vim
183
+ function! s:my_fall() abort
184
+ " Use <Up> and <Down> to navigate instead of <C-n> and <C-p>
185
+ cnoremap <nowait> <Up> <Plug> (fall-list-prev)
186
+ cnoremap <nowait> <Down> <Plug> (fall-list-next)
187
+ " Disable horizontal scroll
188
+ cnoremap <nowait> <Nop> <Plug> (fall-list-left)
189
+ cnoremap <nowait> <Nop> <Plug> (fall-list-right)
190
+ " Use <C-x> and <C-v> to open in split window
191
+ cnoremap <nowait> <C-x> <Cmd> call fall#action('open:split')<CR>
192
+ cnoremap <nowait> <C-v> <Cmd> call fall#action('open:vsplit')<CR>
193
+ endfunction
194
+
195
+ augroup my_fall
196
+ autocmd!
197
+ autocmd User FallPickerEnter:* call s:my_fall()
198
+ augroup END
199
+ <
200
+ Note that command mappings defined after this autocmd will be
201
+ discarded prior to | FallPickerLeave | event so you won't need to
202
+ invoke | :cunmap | command to remove the mappings.
203
+
204
+ See | FallPickerLeave | for the event triggered when the picker window
205
+ is leaved.
206
+
207
+ *FallPickerLeave*
208
+ FallPickerLeave:{name}
209
+ An | User | | autocmd | triggered when the picker window of the {name}
210
+ picker is leaved.
211
+
212
+ See | FallPickerEnter | for the event triggered when the picker window
213
+ is entered.
214
+
215
+ *FallCustomLoaded*
216
+ FallCustomLoaded
217
+ An | User | | autocmd | triggered when the "custom.ts" file is loaded.
218
+ See | :FallCustomReload | for the command to reload the "custom.ts"
219
+ file.
220
+
221
+ *FallCustomRecached*
222
+ FallCustomRecached
223
+ An | User | | autocmd | triggered when the Deno's local module cache of
224
+ dependencies in the "custom.ts" file is recached.
225
+ See | :FallCustomRecache | for the command to recache the module cache.
226
+
227
+ *FallPreviewRendered*
228
+ FallPreviewRendered:{filename}
229
+ An | User | | autocmd | triggered when the preview window of the picker
230
+ window is rendered. The {filename} is the name of the file rendered.
231
+
232
+ Use this event to configure the preview window like:
233
+ >vim
234
+ function! s:my_fall_preview() abort
235
+ " Enable line number on the preview window (Not available on Vim)
236
+ setlocal number
237
+ endfunction
238
+
239
+ augroup my_fall_preview
240
+ autocmd!
241
+ autocmd User FallPreviewRendered:* call s:my_fall_preview()
242
+ augroup END
243
+ <
244
+ -----------------------------------------------------------------------------
245
+ FILETYPE *fall-filetype*
246
+
247
+ Fall provides the following filetypes for the components of the picker window.
248
+
249
+ fall-input The filetype of the input component.
250
+ fall-list The filetype of the list component.
251
+ fall-help The filetype of the help component.
252
+
253
+ For example, to enable | list | option for the list component, you can use the
254
+ | FileType | | autocmd | like:
255
+ >vim
256
+ augroup my_fall_list
257
+ autocmd!
258
+ autocmd FileType fall-list setlocal list
259
+ augroup END
260
+ <
261
+ Note that the filetype of the preview component is determined by the previewer
262
+ used in the picker so you need to use | FallPreviewRendered | instead to
263
+ configure the preview window.
21
264
22
265
=============================================================================
23
266
vim:tw=78:fo=tcq2mM:ts=8:ft=help:norl
0 commit comments