diff --git a/autoload/fzf/vim.vim b/autoload/fzf/vim.vim index d78ff7b..fe997f5 100644 --- a/autoload/fzf/vim.vim +++ b/autoload/fzf/vim.vim @@ -32,7 +32,7 @@ let s:is_win = has('win32') || has('win64') let s:layout_keys = ['window', 'up', 'down', 'left', 'right'] let s:bin_dir = expand(':h:h:h').'/bin/' let s:bin = { -\ 'preview': s:bin_dir.(executable('ruby') ? 'preview.rb' : 'preview.sh'), +\ 'preview': s:bin_dir.(!s:is_win && 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 @@ -41,7 +41,7 @@ if s:is_win else let s:bin.preview = fnamemodify(s:bin.preview, ':8') endif - let s:bin.preview = escape(s:bin.preview, '\') + let s:bin.preview = 'bash '.escape(s:bin.preview, '\') endif function! s:merge_opts(dict, eopts) @@ -204,10 +204,6 @@ 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) - let mopts = get(merged, 'options', '') - if s:is_win && empty(get(merged, 'source', '')) && empty($FZF_DEFAULT_COMMAND) && (type(mopts) == s:TYPE.list ? join(mopts) : mopts) =~# 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 diff --git a/bin/preview.sh b/bin/preview.sh index 330517d..39d8d73 100755 --- a/bin/preview.sh +++ b/bin/preview.sh @@ -17,6 +17,11 @@ IFS=':' read -r -a INPUT <<< "$1" FILE=${INPUT[0]} CENTER=${INPUT[1]} +if [[ $1 =~ ^[A-Z]:\\ ]]; then + FILE=$FILE:${INPUT[1]} + CENTER=${INPUT[2]} +fi + if [ ! -r "$FILE" ]; then echo "File not found ${FILE}" exit 1