mirror of
https://github.com/junegunn/fzf.vim.git
synced 2025-12-07 13:14:30 +08:00
[fzf#vim#with_preview] Support WSL bash (#1026)
* [fzf#vim#with_preview] support wsl bash Close https://github.com/junegunn/fzf.vim/issues/988 Close https://github.com/junegunn/fzf.vim/pull/1009 * [fzf#vim#with_preview] use abs path for bin/ WSL has issues with relative filepaths.
This commit is contained in:
@@ -30,7 +30,7 @@ set cpo&vim
|
||||
|
||||
let s:is_win = has('win32') || has('win64')
|
||||
let s:layout_keys = ['window', 'up', 'down', 'left', 'right']
|
||||
let s:bin_dir = expand('<sfile>:h:h:h').'/bin/'
|
||||
let s:bin_dir = expand('<sfile>:p:h:h:h').'/bin/'
|
||||
let s:bin = {
|
||||
\ 'preview': s:bin_dir.'preview.sh',
|
||||
\ 'tags': s:bin_dir.'tags.pl' }
|
||||
@@ -41,7 +41,6 @@ if s:is_win
|
||||
else
|
||||
let s:bin.preview = fnamemodify(s:bin.preview, ':8')
|
||||
endif
|
||||
let s:bin.preview = 'bash '.escape(s:bin.preview, '\')
|
||||
endif
|
||||
|
||||
let s:wide = 120
|
||||
@@ -76,6 +75,11 @@ endfunction
|
||||
|
||||
" [[options to wrap], [preview window expression], [toggle-preview keys...]]
|
||||
function! fzf#vim#with_preview(...)
|
||||
let bash_path = exepath('bash')
|
||||
if empty(bash_path)
|
||||
throw 'bash is not in PATH'
|
||||
endif
|
||||
let is_wsl_bash = bash_path =~? 'Windows[/\\]system32[/\\]bash.exe$'
|
||||
" Default options
|
||||
let options = {}
|
||||
let window = ''
|
||||
@@ -104,7 +108,14 @@ function! fzf#vim#with_preview(...)
|
||||
if len(window)
|
||||
let preview += ['--preview-window', window]
|
||||
endif
|
||||
let preview += ['--preview', (s:is_win ? s:bin.preview : fzf#shellescape(s:bin.preview)).' '.placeholder]
|
||||
if s:is_win
|
||||
let preview_cmd = 'bash '.(is_wsl_bash
|
||||
\ ? substitute(substitute(s:bin.preview, '^\([A-Z]\):', '/mnt/\L\1', ''), '\', '/', 'g')
|
||||
\ : escape(s:bin.preview, '\'))
|
||||
else
|
||||
let preview_cmd = fzf#shellescape(s:bin.preview)
|
||||
endif
|
||||
let preview += ['--preview', preview_cmd.' '.placeholder]
|
||||
|
||||
if len(args)
|
||||
call extend(preview, ['--bind', join(map(args, 'v:val.":toggle-preview"'), ',')])
|
||||
|
||||
Reference in New Issue
Block a user