]> granicus.if.org Git - vim/commitdiff
patch 8.2.1376: Vim9: expression mapping causes error for using :import v8.2.1376
authorBram Moolenaar <Bram@vim.org>
Wed, 5 Aug 2020 14:20:03 +0000 (16:20 +0200)
committerBram Moolenaar <Bram@vim.org>
Wed, 5 Aug 2020 14:20:03 +0000 (16:20 +0200)
Problem:    Vim9: expression mapping causes error for using :import.
Solution:   Add EX_LOCK_OK to :import and :export. (closes 3606)

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

index 9ae85f0f31780c0b9fb5e803dbf461842b1e3214..c65b956ee45c1766862528ed9e25486a628cf93f 100644 (file)
@@ -572,7 +572,7 @@ EXCMD(CMD_exit,             "exit",         ex_exit,
        EX_RANGE|EX_WHOLEFOLD|EX_BANG|EX_FILE1|EX_ARGOPT|EX_DFLALL|EX_TRLBAR|EX_CMDWIN|EX_LOCK_OK,
        ADDR_LINES),
 EXCMD(CMD_export,      "export",       ex_export,
-       EX_EXTRA|EX_NOTRLCOM,
+       EX_EXTRA|EX_NOTRLCOM|EX_LOCK_OK,
        ADDR_NONE),
 EXCMD(CMD_exusage,     "exusage",      ex_exusage,
        EX_TRLBAR,
@@ -698,7 +698,7 @@ EXCMD(CMD_imenu,    "imenu",        ex_menu,
        EX_RANGE|EX_ZEROR|EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN|EX_LOCK_OK,
        ADDR_OTHER),
 EXCMD(CMD_import,      "import",       ex_import,
-       EX_EXTRA|EX_NOTRLCOM,
+       EX_EXTRA|EX_NOTRLCOM|EX_LOCK_OK,
        ADDR_NONE),
 EXCMD(CMD_inoremap,    "inoremap",     ex_map,
        EX_EXTRA|EX_TRLBAR|EX_NOTRLCOM|EX_CTRLV|EX_CMDWIN|EX_LOCK_OK,
index c50a0d337a78e8162c174f1c68e81d3e58bd8f9c..b05cd54ebbe166b079c9770101c977a394d92b8d 100644 (file)
@@ -1351,6 +1351,36 @@ def Test_vim9_import_export()
   delete('Xvim9_script')
 enddef
 
+func g:Trigger()
+  source Ximport.vim
+  return "echo 'yes'\<CR>"
+endfunc
+
+def Test_import_export_expr_map()
+  # check that :import and :export work when buffer is locked
+  let export_lines =<< trim END
+    vim9script
+    export def That(): string
+      return 'yes'
+    enddef
+  END
+  writefile(export_lines, 'Xexport_that.vim')
+
+  let import_lines =<< trim END
+    vim9script
+    import That from './Xexport_that.vim'
+    assert_equal('yes', That())
+  END
+  writefile(import_lines, 'Ximport.vim')
+
+  nnoremap <expr> trigger g:Trigger()
+  feedkeys('trigger', "xt")
+
+  delete('Xexport.vim')
+  delete('Ximport.vim')
+  nunmap trigger
+enddef
+
 def Test_vim9script_fails()
   CheckScriptFailure(['scriptversion 2', 'vim9script'], 'E1039:')
   CheckScriptFailure(['vim9script', 'scriptversion 2'], 'E1040:')
index 8bc928206d283fcd26bda54f96efadacbf58c57c..53e47bf7f7ef3adab0d23c751b83112c9608069d 100644 (file)
@@ -754,6 +754,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1376,
 /**/
     1375,
 /**/