mirror of
https://github.com/junegunn/fzf.vim.git
synced 2026-02-05 17:37:48 +08:00
Run preview script in batchfile for Windows
Bypasses the following issues in Windows: 1. Neovim does not support 8.3 filenames ie. fnamemodify(path, ':8') 2. fzf binary cannot parse output of fzf#shellescape It assumes that preview command is run in sh, not cmd.exe
This commit is contained in:
@@ -35,15 +35,6 @@ let s:bin = {
|
|||||||
\ 'preview': s:bin_dir.(executable('ruby') ? 'preview.rb' : 'preview.sh'),
|
\ 'preview': s:bin_dir.(executable('ruby') ? 'preview.rb' : 'preview.sh'),
|
||||||
\ 'tags': s:bin_dir.'tags.pl' }
|
\ 'tags': s:bin_dir.'tags.pl' }
|
||||||
let s:TYPE = {'dict': type({}), 'funcref': type(function('call')), 'string': type(''), 'list': type([])}
|
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)
|
function! s:merge_opts(dict, eopts)
|
||||||
if empty(a:eopts)
|
if empty(a:eopts)
|
||||||
@@ -83,7 +74,17 @@ function! fzf#vim#with_preview(...)
|
|||||||
call remove(args, 0)
|
call remove(args, 0)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let preview = ['--preview-window', window, '--preview', s:bin.preview.' '.(window =~ 'up\|down' ? '-v' : '').' {}']
|
if s:is_win
|
||||||
|
if exists('s:preview_script')
|
||||||
|
silent! call delete(s:preview_script)
|
||||||
|
endif
|
||||||
|
let s:preview_script = tempname().'.bat'
|
||||||
|
call writefile(['@echo off', fzf#shellescape(s:bin.preview).' %*'], s:preview_script)
|
||||||
|
let script = s:preview_script
|
||||||
|
else
|
||||||
|
let script = s:bin.preview
|
||||||
|
endif
|
||||||
|
let preview = ['--preview-window', window, '--preview', script.(window =~ 'up\|down' ? ' -v ' : ' ').'{}']
|
||||||
|
|
||||||
if len(args)
|
if len(args)
|
||||||
call extend(preview, ['--bind', join(map(args, 'v:val.":toggle-preview"'), ',')])
|
call extend(preview, ['--bind', join(map(args, 'v:val.":toggle-preview"'), ',')])
|
||||||
|
|||||||
Reference in New Issue
Block a user