diff --git a/plugin/fzf.vim b/plugin/fzf.vim index 7781ae5fdfb93e268cad83300cc41f43597362b2..fb12d9b618b7f35dc6cece1d508679b74b521a47 100644 --- a/plugin/fzf.vim +++ b/plugin/fzf.vim @@ -49,18 +49,14 @@ if s:is_win " Use utf-8 for fzf.vim commands " Return array of shell commands for cmd.exe + let s:codepage = libcallnr('kernel32.dll', 'GetACP', 0) function! s:wrap_cmds(cmds) - let use_chcp = executable('sed') return map([ \ '@echo off', \ 'setlocal enabledelayedexpansion'] - \ + (use_chcp ? [ - \ 'for /f "usebackq" %%a in (`chcp ^| sed "s/[^0-9]//gp"`) do set origchcp=%%a', - \ 'chcp 65001 > nul'] : []) \ + (type(a:cmds) == type([]) ? a:cmds : [a:cmds]) - \ + (use_chcp ? ['chcp !origchcp! > nul'] : []) \ + ['endlocal'], - \ 'v:val."\r"') + \ printf('iconv(v:val."\r", "%s", "cp%d")', &encoding, s:codepage)) endfunction else let s:term_marker = ";#FZF"