diff --git a/plug.vim b/plug.vim index 92fea62..91b4072 100644 --- a/plug.vim +++ b/plug.vim @@ -184,8 +184,8 @@ function! s:define_commands() endif if !has('nvim') \ && (has('win32') || has('win32unix')) - \ && (!has('multi_byte') || !has('iconv')) - return s:err('Vim needs +iconv, +multi_byte features on Windows to run shell commands.') + \ && !has('multi_byte') + return s:err('Vim needs +multi_byte feature on Windows to run shell commands. Enable +iconv for best results.') endif command! -nargs=* -bar -bang -complete=customlist,s:names PlugInstall call s:install(0, []) command! -nargs=* -bar -bang -complete=customlist,s:names PlugUpdate call s:update(0, []) @@ -400,14 +400,19 @@ if s:is_win endfunction " Copied from fzf - let s:codepage = libcallnr('kernel32.dll', 'GetACP', 0) function! s:wrap_cmds(cmds) - return map([ + let cmds = [ \ '@echo off', \ 'setlocal enabledelayedexpansion'] \ + (type(a:cmds) == type([]) ? a:cmds : [a:cmds]) - \ + ['endlocal'], - \ printf('iconv(v:val."\r", "%s", "cp%d")', &encoding, s:codepage)) + \ + ['endlocal'] + if has('iconv') + if !exists('s:codepage') + let s:codepage = libcallnr('kernel32.dll', 'GetACP', 0) + endif + return map(cmds, printf('iconv(v:val."\r", "%s", "cp%d")', &encoding, s:codepage)) + endif + return map(cmds, 'v:val."\r"') endfunction function! s:batchfile(cmd)