changeset 25372:c63a2d24b7e2 v8.2.3223

patch 8.2.3223: Vim: using {} block in autoloade omnifunc fails Commit: https://github.com/vim/vim/commit/ff34bee3a2d22f2ff7abd4519270b5518082c33d Author: Bram Moolenaar <Bram@vim.org> Date: Sun Jul 25 20:27:06 2021 +0200 patch 8.2.3223: Vim: using {} block in autoloade omnifunc fails Problem: Vim: using {} block in autoloade omnifunc fails. Solution: Allow using {} block when text is locked. (closes https://github.com/vim/vim/issues/8631)
author Bram Moolenaar <Bram@vim.org>
date Sun, 25 Jul 2021 20:30:04 +0200
parents e14bafcbce5c
children d5b80262eac9
files src/ex_cmds.h src/testdir/test_ins_complete.vim src/version.c
diffstat 3 files changed, 34 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/ex_cmds.h
+++ b/src/ex_cmds.h
@@ -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,
--- a/src/testdir/test_ins_complete.vim
+++ b/src/testdir/test_ins_complete.vim
@@ -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)
--- a/src/version.c
+++ b/src/version.c
@@ -756,6 +756,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    3223,
+/**/
     3222,
 /**/
     3221,