From 3334d62749f8e39de857e0d1a4f12505e57d7204 Mon Sep 17 00:00:00 2001 From: Jan Edmund Lazo Date: Sun, 20 Aug 2017 21:21:32 -0400 Subject: [PATCH] [fzf#vim#with_preview] works with Ag in Windows - disabled on Files because the preview scripts cannot resolve the network drive - use 8.3 filepath for s:bin.preview to bypass escape issues in fzf binary --- autoload/fzf/vim.vim | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/autoload/fzf/vim.vim b/autoload/fzf/vim.vim index 468dc15..0e70c45 100644 --- a/autoload/fzf/vim.vim +++ b/autoload/fzf/vim.vim @@ -35,6 +35,15 @@ let s:bin = { \ 'preview': s:bin_dir.(executable('ruby') ? 'preview.rb' : 'preview.sh'), \ 'tags': s:bin_dir.'tags.pl' } let s:TYPE = {'dict': type({}), 'funcref': type(function('call')), 'string': type(''), 'list': type([])} +if s:is_win + if &shellslash + let s:bin.preview = fnamemodify(s:bin.preview, ':8') + else + set shellslash + let s:bin.preview = fnamemodify(s:bin.preview, ':8') + set noshellslash + endif +endif function! s:merge_opts(dict, eopts) if empty(a:eopts) @@ -64,9 +73,6 @@ function! fzf#vim#with_preview(...) let options = copy(args[0]) call remove(args, 0) endif - if s:is_win - return options - endif " Preview window if len(args) && type(args[0]) == s:TYPE.string @@ -199,6 +205,9 @@ function! s:fzf(name, opts, extra) let eopts = has_key(extra, 'options') ? remove(extra, 'options') : '' let merged = extend(copy(a:opts), extra) call s:merge_opts(merged, eopts) + if s:is_win && empty(get(merged, 'source', '')) && empty($FZF_DEFAULT_COMMAND) && get(merged, 'options', '') =~# s:bin.preview + return s:warn('preview script is incompatible with the default command in Windows') + endif return fzf#run(s:wrap(a:name, merged, bang)) endfunction