summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJunegunn Choi <junegunn.c@gmail.com>2021-06-04 22:04:20 +0900
committerJunegunn Choi <junegunn.c@gmail.com>2021-06-04 22:07:29 +0900
commita74731d7f5abe874fb14766249a039408f2137b5 (patch)
tree04087eed5504dbb25789c0164610d28ba4da4ebd
parente086f0b3fe1cb56df1335037cfd3d612defce082 (diff)
[vim] Add 'sinklist' as a synonym to 'sink*'
So that it's easier to add a sinklist function to a spec dictionary. let spec = { 'source': source, 'options': ['--preview', preview] } function spec.sinklist(matches) echom string(a:matches) endfunction call fzf#run(fzf#wrap(spec))
-rw-r--r--README-VIM.md4
-rw-r--r--doc/fzf.txt2
-rw-r--r--plugin/fzf.vim8
3 files changed, 8 insertions, 6 deletions
diff --git a/README-VIM.md b/README-VIM.md
index 3704f14c..425bf672 100644
--- a/README-VIM.md
+++ b/README-VIM.md
@@ -283,7 +283,7 @@ The following table summarizes the available options.
| `source` | list | Vim list as input to fzf |
| `sink` | string | Vim command to handle the selected item (e.g. `e`, `tabe`) |
| `sink` | funcref | Reference to function to process each selected item |
-| `sink*` | funcref | Similar to `sink`, but takes the list of output lines at once |
+| `sinklist` (or `sink*`) | funcref | Similar to `sink`, but takes the list of output lines at once |
| `options` | string/list | Options to fzf |
| `dir` | string | Working directory |
| `up`/`down`/`left`/`right` | number/string | (Layout) Window position and size (e.g. `20`, `50%`) |
@@ -387,7 +387,7 @@ command! -bang -complete=dir -nargs=? LS
- `g:fzf_layout`
- `g:fzf_action`
- - **Works only when no custom `sink` (or `sink*`) is provided**
+ - **Works only when no custom `sink` (or `sinklist`) is provided**
- Having custom sink usually means that each entry is not an ordinary
file path (e.g. name of color scheme), so we can't blindly apply the
same strategy (i.e. `tabedit some-color-scheme` doesn't make sense)
diff --git a/doc/fzf.txt b/doc/fzf.txt
index e5197dd6..94857232 100644
--- a/doc/fzf.txt
+++ b/doc/fzf.txt
@@ -300,7 +300,7 @@ The following table summarizes the available options.
`source` | list | Vim list as input to fzf
`sink` | string | Vim command to handle the selected item (e.g. `e` , `tabe` )
`sink` | funcref | Reference to function to process each selected item
- `sink*` | funcref | Similar to `sink` , but takes the list of output lines at once
+ `sinklist` (or `sink*` ) | funcref | Similar to `sink` , but takes the list of output lines at once
`options` | string/list | Options to fzf
`dir` | string | Working directory
`up` / `down` / `left` / `right` | number/string | (Layout) Window position and size (e.g. `20` , `50%` )
diff --git a/plugin/fzf.vim b/plugin/fzf.vim
index 04f96435..d8295df2 100644
--- a/plugin/fzf.vim
+++ b/plugin/fzf.vim
@@ -419,13 +419,13 @@ function! fzf#wrap(...)
endif
" Action: g:fzf_action
- if !s:has_any(opts, ['sink', 'sink*'])
+ if !s:has_any(opts, ['sink', 'sinklist', 'sink*'])
let opts._action = get(g:, 'fzf_action', s:default_action)
let opts.options .= ' --expect='.join(keys(opts._action), ',')
- function! opts.sink(lines) abort
+ function! opts.sinklist(lines) abort
return s:common_sink(self._action, a:lines)
endfunction
- let opts['sink*'] = remove(opts, 'sink')
+ let opts['sink*'] = opts.sinklist " For backward compatibility
endif
return opts
@@ -943,6 +943,8 @@ function! s:callback(dict, lines) abort
endif
if has_key(a:dict, 'sink*')
call a:dict['sink*'](a:lines)
+ elseif has_key(a:dict, 'sinklist')
+ call a:dict['sinklist'](a:lines)
endif
catch
if stridx(v:exception, ':E325:') < 0