]> granicus.if.org Git - vim/commitdiff
patch 8.2.3223: Vim: using {} block in autoloade omnifunc fails v8.2.3223
authorBram Moolenaar <Bram@vim.org>
Sun, 25 Jul 2021 18:27:06 +0000 (20:27 +0200)
committerBram Moolenaar <Bram@vim.org>
Sun, 25 Jul 2021 18:27:06 +0000 (20:27 +0200)
Problem:    Vim: using {} block in autoloade omnifunc fails.
Solution:   Allow using {} block when text is locked. (closes #8631)

src/ex_cmds.h
src/testdir/test_ins_complete.vim
src/version.c

index ef3fa669c50f8846b4c6f07f1129e204bd63c7db..8596b24b4b4995a377b7ba44b7f5aff0980fec86 100644 (file)
@@ -1853,7 +1853,7 @@ EXCMD(CMD_at,             "@",            ex_at,
        EX_RANGE|EX_WHOLEFOLD|EX_EXTRA|EX_TRLBAR|EX_CMDWIN|EX_LOCK_OK|EX_NONWHITE_OK,
        ADDR_LINES),
 EXCMD(CMD_block,       "{",            ex_block,  // not found normally
-       EX_TRLBAR,
+       EX_TRLBAR|EX_LOCK_OK,
        ADDR_NONE),
 EXCMD(CMD_endblock,    "}",            ex_endblock,
        EX_TRLBAR|EX_CMDWIN|EX_LOCK_OK,
index 613e9520d9dc2a45905689e31e63a3ef7c7e0874..1f2c7fe31b24848a8ec8f065f555b2c402aa8280 100644 (file)
@@ -121,6 +121,37 @@ func Test_omni_dash()
   set omnifunc=
 endfunc
 
+func Test_omni_autoload()
+  let save_rtp = &rtp
+  set rtp=Xruntime/some
+  let dir = 'Xruntime/some/autoload'
+  call mkdir(dir, 'p')
+
+  let lines =<< trim END
+      vim9script
+      def omni#func(findstart: bool, base: string): any
+          if findstart
+              return 1
+          else
+              return ['match']
+          endif
+      enddef
+      {
+          eval 1 + 2
+      }
+  END
+  call writefile(lines, dir .. '/omni.vim')
+
+  new
+  setlocal omnifunc=omni#func
+  call feedkeys("i\<C-X>\<C-O>\<Esc>", 'xt')
+
+  bwipe!
+  call delete('Xruntime', 'rf')
+  set omnifunc=
+  let &rtp = save_rtp
+endfunc
+
 func Test_completefunc_args()
   let s:args = []
   func! CompleteFunc(findstart, base)
index f8a3ee47862f8a289d2be6f3928d1cde85535419..0f181efdf4c34ee41548a29bf81f7acea8d26619 100644 (file)
@@ -755,6 +755,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    3223,
 /**/
     3222,
 /**/