Use iconv() only if +iconv is enabled. (#921)

TODO: Avoid iconv() for commands using ascii only.
This commit is contained in:
Jan Edmund Lazo 2019-12-27 22:35:49 -05:00 committed by GitHub
parent 359ce90b9b
commit b2aa5724c0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -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(<bang>0, [<f-args>])
command! -nargs=* -bar -bang -complete=customlist,s:names PlugUpdate call s:update(<bang>0, [<f-args>])
@ -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)