From: Bram Moolenaar Date: Fri, 4 Nov 2016 20:22:37 +0000 (+0100) Subject: patch 8.0.0060 X-Git-Tag: v8.0.0060 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=426f3754223c8ff8a1bc51d6ba1eba11e8982ebc;p=vim patch 8.0.0060 Problem: When using an Ex command for 'keywordprg' it is escaped as with a shell command. (Romain Lafourcade) Solution: Escape for an Ex command. (closes #1175) --- diff --git a/src/normal.c b/src/normal.c index 99ced410d..f5e5475f3 100644 --- a/src/normal.c +++ b/src/normal.c @@ -5713,9 +5713,13 @@ nv_ident(cmdarg_T *cap) */ if (cmdchar == 'K' && !kp_help) { - /* Escape the argument properly for a shell command */ ptr = vim_strnsave(ptr, n); - p = vim_strsave_shellescape(ptr, TRUE, TRUE); + if (kp_ex) + /* Escape the argument properly for an Ex command */ + p = vim_strsave_fnameescape(ptr, FALSE); + else + /* Escape the argument properly for a shell command */ + p = vim_strsave_shellescape(ptr, TRUE, TRUE); vim_free(ptr); if (p == NULL) { diff --git a/src/testdir/test_normal.vim b/src/testdir/test_normal.vim index f896046d4..20cbaa00f 100644 --- a/src/testdir/test_normal.vim +++ b/src/testdir/test_normal.vim @@ -1222,7 +1222,7 @@ endfunc func! Test_normal23_K() " Test for K command new - call append(0, ['version8.txt', 'man']) + call append(0, ['version8.txt', 'man', 'aa%bb', 'cc|dd']) let k = &keywordprg set keywordprg=:help 1 @@ -1237,6 +1237,24 @@ func! Test_normal23_K() call assert_match('\*version8\.0\*', getline('.')) helpclose + set keywordprg=:new + set iskeyword+=% + set iskeyword+=\| + 2 + norm! K + call assert_equal('man', fnamemodify(bufname('%'), ':t')) + bwipe! + 3 + norm! K + call assert_equal('aa%bb', fnamemodify(bufname('%'), ':t')) + bwipe! + 4 + norm! K + call assert_equal('cc|dd', fnamemodify(bufname('%'), ':t')) + bwipe! + set iskeyword-=% + set iskeyword-=\| + " Only expect "man" to work on Unix if !has("unix") let &keywordprg = k diff --git a/src/version.c b/src/version.c index 97b7e3098..b56766588 100644 --- a/src/version.c +++ b/src/version.c @@ -764,6 +764,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 60, /**/ 59, /**/