mirror of
https://github.com/junegunn/fzf.vim.git
synced 2025-12-06 04:34:26 +08:00
[GFiles?] Fix preview on windows (wsl bash + git_install_folder/usr/bash) (#1360)
* Fix preview on GFiles? on Windows+WSL * Fix preview on GFiles? on Windows using gitInstallFolder\usr/bin\bash.exe Co-authored-by: Minh-Tam TRAN <c_mtran@capsuletech.com> Co-authored-by: Minh-Tam TRAN <minh-tam.tran@younited-credit.fr>
This commit is contained in:
@@ -30,6 +30,7 @@ set cpo&vim
|
||||
|
||||
let s:min_version = '0.23.0'
|
||||
let s:is_win = has('win32') || has('win64')
|
||||
let s:is_wsl_bash = s:is_win && (exepath('bash') =~? 'Windows[/\\]system32[/\\]bash.exe$')
|
||||
let s:layout_keys = ['window', 'up', 'down', 'left', 'right']
|
||||
let s:bin_dir = expand('<sfile>:p:h:h:h').'/bin/'
|
||||
let s:bin = {
|
||||
@@ -40,7 +41,10 @@ if s:is_win
|
||||
if has('nvim')
|
||||
let s:bin.preview = split(system('for %A in ("'.s:bin.preview.'") do @echo %~sA'), "\n")[0]
|
||||
else
|
||||
let s:bin.preview = fnamemodify(s:bin.preview, ':8')
|
||||
let preview_path = s:is_wsl_bash
|
||||
\ ? substitute(s:bin.preview, '^\([A-Z]\):', '/mnt/\L\1', '')
|
||||
\ : fnamemodify(s:bin.preview, ':8')
|
||||
let s:bin.preview = substitute(preview_path, '\', '/', 'g')
|
||||
endif
|
||||
endif
|
||||
|
||||
@@ -139,15 +143,14 @@ function! fzf#vim#with_preview(...)
|
||||
let preview += ['--preview-window', window]
|
||||
endif
|
||||
if s:is_win
|
||||
let is_wsl_bash = exepath('bash') =~? 'Windows[/\\]system32[/\\]bash.exe$'
|
||||
if empty($MSWINHOME)
|
||||
let $MSWINHOME = $HOME
|
||||
endif
|
||||
if is_wsl_bash && $WSLENV !~# '[:]\?MSWINHOME\(\/[^:]*\)\?\(:\|$\)'
|
||||
if s:is_wsl_bash && $WSLENV !~# '[:]\?MSWINHOME\(\/[^:]*\)\?\(:\|$\)'
|
||||
let $WSLENV = 'MSWINHOME/u:'.$WSLENV
|
||||
endif
|
||||
let preview_cmd = 'bash '.(is_wsl_bash
|
||||
\ ? substitute(substitute(s:bin.preview, '^\([A-Z]\):', '/mnt/\L\1', ''), '\', '/', 'g')
|
||||
let preview_cmd = 'bash '.(s:is_wsl_bash
|
||||
\ ? s:bin.preview
|
||||
\ : escape(s:bin.preview, '\'))
|
||||
else
|
||||
let preview_cmd = fzf#shellescape(s:bin.preview)
|
||||
@@ -621,11 +624,12 @@ function! fzf#vim#gitfiles(args, ...)
|
||||
" Here be dragons!
|
||||
" We're trying to access the common sink function that fzf#wrap injects to
|
||||
" the options dictionary.
|
||||
let bar = s:is_win ? '^|' : '|'
|
||||
let preview = printf(
|
||||
\ 'bash -c "if [[ {1} =~ M ]]; then %s; else %s {-1}; fi"',
|
||||
\ executable('delta')
|
||||
\ ? 'git diff -- {-1} | delta --width $FZF_PREVIEW_COLUMNS --file-style=omit | sed 1d'
|
||||
\ : 'git diff --color=always -- {-1} | sed 1,4d',
|
||||
\ ? 'git diff -- {-1} '.bar.' delta --width $FZF_PREVIEW_COLUMNS --file-style=omit '.bar.' sed 1d'
|
||||
\ : 'git diff --color=always -- {-1} '.bar.' sed 1,4d',
|
||||
\ s:bin.preview)
|
||||
let wrapped = fzf#wrap({
|
||||
\ 'source': 'git -c color.status=always status --short --untracked-files=all',
|
||||
|
||||
Reference in New Issue
Block a user