Ver código fonte

Fix chcp parsing for the current codepage (#888)

Relying on delimiters or token positions is fragile.
Last value of 'chcp' output is always a number.
Jan Edmund Lazo 6 anos atrás
pai
commit
849b76be90
1 arquivos alterados com 9 adições e 3 exclusões
  1. 9 3
      plug.vim

+ 9 - 3
plug.vim

@@ -353,9 +353,15 @@ if s:is_win
 
   " Copied from fzf
   function! s:wrap_cmds(cmds)
-    return map(['@echo off','setlocal enabledelayedexpansion','for /f "delims=: tokens=2" %%a in (''chcp'') do set origchcp=%%a','set origchcp=!origchcp: =!','chcp 65001 > nul'] +
-    \ (type(a:cmds) == type([]) ? a:cmds : [a:cmds]) +
-    \ ['chcp !origchcp! > nul','setlocal disabledelayedexpansion'],'v:val."\r"')
+    return map([
+      \ '@echo off',
+      \ 'setlocal enabledelayedexpansion',
+      \ 'for /f "tokens=*" %%a in (''chcp'') do for %%b in (%%a) do set origchcp=%%b',
+      \ 'chcp 65001 > nul'
+    \ ]
+    \ + (type(a:cmds) == type([]) ? a:cmds : [a:cmds])
+    \ + ['chcp !origchcp! > nul', 'endlocal'],
+    \ 'v:val."\r"')
   endfunction
 
   function! s:batchfile(cmd)