diff options
| author | Junegunn Choi <junegunn.c@gmail.com> | 2017-08-27 02:19:39 +0900 |
|---|---|---|
| committer | Junegunn Choi <junegunn.c@gmail.com> | 2017-08-27 02:19:56 +0900 |
| commit | fee404399adcebc0c6253e2ef4dc95871f81c806 (patch) | |
| tree | 4d7cbd14f0196c32167a5acefabe95056a853483 /src | |
| parent | 6b4805ca1a1b0758363d1bb8c4c996730e19dc5a (diff) | |
| download | fzf-fee404399adcebc0c6253e2ef4dc95871f81c806.tar.gz | |
Make --expect additive
Similarly to --bind or --color.
--expect used to replace the previously specified keys, and
fzf#wrap({'options': '--expect=f1'}) wouldn't work as expected. It
forced us to come up with some ugly hacks like the following:
https://github.com/junegunn/fzf.vim/blob/13b27c45c8bdf6c3a41376bb83e4895edadf8c7e/autoload/fzf/vim.vim#L1086
Diffstat (limited to 'src')
| -rw-r--r-- | src/options.go | 8 | ||||
| -rw-r--r-- | src/options_test.go | 7 |
2 files changed, 13 insertions, 2 deletions
diff --git a/src/options.go b/src/options.go index afd46b9e..e2f33f81 100644 --- a/src/options.go +++ b/src/options.go @@ -962,7 +962,9 @@ func parseOptions(opts *Options, allArgs []string) { case "--algo": opts.FuzzyAlgo = parseAlgo(nextString(allArgs, &i, "algorithm required (v1|v2)")) case "--expect": - opts.Expect = parseKeyChords(nextString(allArgs, &i, "key names required"), "key names required") + for k, v := range parseKeyChords(nextString(allArgs, &i, "key names required"), "key names required") { + opts.Expect[k] = v + } case "--no-expect": opts.Expect = make(map[int]string) case "--tiebreak": @@ -1140,7 +1142,9 @@ func parseOptions(opts *Options, allArgs []string) { } else if match, value := optString(arg, "--toggle-sort="); match { parseToggleSort(opts.Keymap, value) } else if match, value := optString(arg, "--expect="); match { - opts.Expect = parseKeyChords(value, "key names required") + for k, v := range parseKeyChords(value, "key names required") { + opts.Expect[k] = v + } } else if match, value := optString(arg, "--tiebreak="); match { opts.Criteria = parseTiebreak(value) } else if match, value := optString(arg, "--color="); match { diff --git a/src/options_test.go b/src/options_test.go index d3c93450..22f4e4ee 100644 --- a/src/options_test.go +++ b/src/options_test.go @@ -414,3 +414,10 @@ func TestPreviewOpts(t *testing.T) { t.Error(opts.Preview) } } + +func TestAdditiveExpect(t *testing.T) { + opts := optsFor("--expect=a", "--expect", "b", "--expect=c") + if len(opts.Expect) != 3 { + t.Error(opts.Expect) + } +} |
