From c99252b814c19df1fb1c8ca1b7460e7ebf120dc4 Mon Sep 17 00:00:00 2001 From: Yasuhiro Matsumoto Date: Thu, 23 Dec 2021 18:00:05 +0900 Subject: [PATCH] Do not use shellescape for escaping strings in execute-commands. --- autoload/lsp_settings.vim | 4 ++-- autoload/lsp_settings/utils.vim | 5 +++++ settings/pyls-ms.vim | 2 +- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/autoload/lsp_settings.vim b/autoload/lsp_settings.vim index 0666295..b287aa9 100644 --- a/autoload/lsp_settings.vim +++ b/autoload/lsp_settings.vim @@ -400,10 +400,10 @@ function! s:vim_lsp_install_server(ft, command, bang) abort call lsp_settings#utils#msg('Installing ' . l:entry[0]) if has('nvim') split new - call termopen(shellescape(l:entry[1]), {'cwd': l:server_install_dir, 'on_exit': function('s:vim_lsp_install_server_post', [l:entry[0]])}) | startinsert + call termopen(lsp_settings#utils#shellescape(l:entry[1]), {'cwd': l:server_install_dir, 'on_exit': function('s:vim_lsp_install_server_post', [l:entry[0]])}) | startinsert else if has('win32') - let l:bufnr = term_start(shellescape(l:entry[1]), {'cwd': l:server_install_dir}) + let l:bufnr = term_start(lsp_settings#utils#shellescape(l:entry[1]), {'cwd': l:server_install_dir}) else let l:bufnr = term_start(l:entry[1], {'cwd': l:server_install_dir}) endif diff --git a/autoload/lsp_settings/utils.vim b/autoload/lsp_settings/utils.vim index 9b2a832..fb26160 100644 --- a/autoload/lsp_settings/utils.vim +++ b/autoload/lsp_settings/utils.vim @@ -154,3 +154,8 @@ endfunction function! lsp_settings#utils#extend(lhs, rhs) abort return s:extend(a:lhs, a:rhs) endfunction + +function! lsp_settings#utils#shellescape(path) abort + let l:quote = &shellxquote == '"' ? "'" : '"' + return l:quote .. a:path .. l:quote +endfunction diff --git a/settings/pyls-ms.vim b/settings/pyls-ms.vim index 615d11e..444f7e1 100644 --- a/settings/pyls-ms.vim +++ b/settings/pyls-ms.vim @@ -13,7 +13,7 @@ augroup vim_lsp_settings_pyls_ms \ 'InterpreterPath': lsp_settings#get('pyls-ms', 'python-path', {key, name->exepath('python')}), \ 'UseDefaultDatabase': v:true, \ 'Version': lsp_settings#get('pyls-ms', 'python-ver', {key, name->trim(matchstr(system( - \ shellescape(lsp_settings#get('pyls-ms', 'python-path', {key, name->exepath('python')})) . ' -V' + \ lsp_settings#utils#shellescape(lsp_settings#get('pyls-ms', 'python-path', {key, name->exepath('python')})) . ' -V' \ ), '\s\zs\S\+'))}), \ }, \ },