]> granicus.if.org Git - vim/commitdiff
patch 8.0.0060 v8.0.0060
authorBram Moolenaar <Bram@vim.org>
Fri, 4 Nov 2016 20:22:37 +0000 (21:22 +0100)
committerBram Moolenaar <Bram@vim.org>
Fri, 4 Nov 2016 20:22:37 +0000 (21:22 +0100)
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)

src/normal.c
src/testdir/test_normal.vim
src/version.c

index 99ced410d0a81cd76e6707f8767daa819cb84c95..f5e5475f335a4eb3d218280beb4dd13c840a2fd5 100644 (file)
@@ -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)
        {
index f896046d4bb8f32a8af3d2abab94c07076360ce2..20cbaa00f020cc0124a0f3d1d1ce0770782d0a99 100644 (file)
@@ -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
index 97b7e30981016818c8a775d75afae50aba8554ba..b567665883469d31f039b5a029a8d47c8b1c419b 100644 (file)
@@ -764,6 +764,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    60,
 /**/
     59,
 /**/