# HG changeset patch # User Bram Moolenaar # Date 1642523405 -3600 # Node ID 5b54f413d1324984011bf81fc8d90cb636c3eca5 # Parent c2954285f4312a183bfaac036b744990d929eda1 patch 8.2.4136: Vim9: the "autoload" argument of ":vim9script" is not useful Commit: https://github.com/vim/vim/commit/fd218c8a36e7ed33f7a205163690c5b7d2f31f8a Author: Bram Moolenaar Date: Tue Jan 18 16:26:24 2022 +0000 patch 8.2.4136: Vim9: the "autoload" argument of ":vim9script" is not useful Problem: Vim9: the "autoload" argument of ":vim9script" is not useful. Solution: Remove the argument. (closes https://github.com/vim/vim/issues/9555) diff --git a/runtime/doc/repeat.txt b/runtime/doc/repeat.txt --- a/runtime/doc/repeat.txt +++ b/runtime/doc/repeat.txt @@ -365,12 +365,11 @@ For writing a Vim script, see chapter 41 Vim version, or update Vim to a newer version. See |vimscript-version| for what changed between versions. -:vim9s[cript] [noclear] [autoload] *:vim9s* *:vim9script* +:vim9s[cript] [noclear] *:vim9s* *:vim9script* Marks a script file as containing |Vim9-script| commands. Also see |vim9-namespace|. Must be the first command in the file. For [noclear] see |vim9-reload|. - For [autoload] see |vim9-autoload|. Without the |+eval| feature this changes the syntax for some commands. See |:vim9cmd| for executing one command with Vim9 @@ -378,8 +377,8 @@ For writing a Vim script, see chapter 41 *:scr* *:scriptnames* :scr[iptnames] List all sourced script names, in the order they were - first sourced. The number is used for the script ID - ||. + first encountered. The number is used for the script + ID ||. For a script that was used with `import autoload` but was not actually sourced yet an "A" is shown after the script ID. diff --git a/runtime/doc/vim9.txt b/runtime/doc/vim9.txt --- a/runtime/doc/vim9.txt +++ b/runtime/doc/vim9.txt @@ -1,4 +1,4 @@ -*vim9.txt* For Vim version 8.2. Last change: 2022 Jan 15 +*vim9.txt* For Vim version 8.2. Last change: 2022 Jan 18 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1523,17 +1523,18 @@ 1. In the plugin define user commands, f directory. 2. In the autoload script put the bulk of the code. > - vim9script autoload + vim9script export def Stuff(arg: string) ... < This goes in .../autoload/for/search.vim. - Adding "autoload" to `:vim9script` has the effect that "for#search#" will - be prefixed to every exported item. The prefix is obtained from the file - name, as you would to manually in a legacy autoload script. Thus the - exported function can be found with "for#search#Stuff", but you would - normally use `import autoload` and not need to specify the prefix. + Putting the "search.vim" script under the "/autoload/for/" directory has + the effect that "for#search#" will be prefixed to every exported item. The + prefix is obtained from the file name, as you would to manually in a + legacy autoload script. Thus the exported function can be found with + "for#search#Stuff", but you would normally use `import autoload` and not + use the prefix. You can split up the functionality and import other scripts from the autoload script as you like. This way you can share code between plugins. diff --git a/src/errors.h b/src/errors.h --- a/src/errors.h +++ b/src/errors.h @@ -3208,8 +3208,7 @@ EXTERN char e_cannot_import_dot_vim_with INIT(= N_("E1261: Cannot import .vim without using \"as\"")); EXTERN char e_cannot_import_same_script_twice_str[] INIT(= N_("E1262: Cannot import the same script twice: %s")); -EXTERN char e_using_autoload_in_script_not_under_autoload_directory[] - INIT(= N_("E1263: Using autoload in a script not under an autoload directory")); +// E1263 unused EXTERN char e_autoload_import_cannot_use_absolute_or_relative_path[] INIT(= N_("E1264: Autoload import cannot use absolute or relative path: %s")); EXTERN char e_cannot_use_partial_here[] diff --git a/src/testdir/test_vim9_import.vim b/src/testdir/test_vim9_import.vim --- a/src/testdir/test_vim9_import.vim +++ b/src/testdir/test_vim9_import.vim @@ -1196,9 +1196,9 @@ def Test_vim9script_autoload() var save_rtp = &rtp exe 'set rtp^=' .. getcwd() .. '/Xdir' - # when using "vim9script autoload" prefix is not needed + # when the path has "/autoload/" prefix is not needed var lines =<< trim END - vim9script autoload + vim9script g:prefixed_loaded += 1 export def Gettest(): string @@ -1262,7 +1262,7 @@ def Test_vim9script_autoload_call() exe 'set rtp^=' .. getcwd() .. '/Xdir' var lines =<< trim END - vim9script autoload + vim9script export def RetArg(arg: string): string return arg @@ -1300,7 +1300,7 @@ def Test_import_autoload_postponed() exe 'set rtp^=' .. getcwd() .. '/Xdir' var lines =<< trim END - vim9script autoload + vim9script g:loaded_postponed = 'true' export var variable = 'bla' @@ -1337,7 +1337,7 @@ def Test_import_autoload_override() test_override('autoload', 1) var lines =<< trim END - vim9script autoload + vim9script g:loaded_override = 'true' export var variable = 'bla' @@ -1372,7 +1372,7 @@ def Test_autoload_mapping() exe 'set rtp^=' .. getcwd() .. '/Xdir' var lines =<< trim END - vim9script autoload + vim9script g:toggle_loaded = 'yes' @@ -1423,7 +1423,13 @@ def Test_vim9script_autoload_fails() vim9script autoload var n = 0 END - CheckScriptFailure(lines, 'E1263:') + CheckScriptFailure(lines, 'E475: Invalid argument: autoload') + + lines =<< trim END + vim9script noclear noclear + var n = 0 + END + CheckScriptFailure(lines, 'E983: Duplicate argument: noclear') enddef def Test_import_autoload_fails() @@ -1516,7 +1522,7 @@ enddef " test using a autoloaded file that is case sensitive def Test_vim9_autoload_case_sensitive() var lines =<< trim END - vim9script autoload + vim9script export def CaseSensitive(): string return 'done' enddef diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -751,6 +751,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 4136, +/**/ 4135, /**/ 4134, diff --git a/src/vim9script.c b/src/vim9script.c --- a/src/vim9script.c +++ b/src/vim9script.c @@ -69,7 +69,6 @@ ex_vim9script(exarg_T *eap UNUSED) int sid = current_sctx.sc_sid; scriptitem_T *si; int found_noclear = FALSE; - int found_autoload = FALSE; char_u *p; if (!getline_equal(eap->getline, eap->cookie, getsourceline)) @@ -96,20 +95,6 @@ ex_vim9script(exarg_T *eap UNUSED) } found_noclear = TRUE; } - else if (STRNCMP(p, "autoload", 8) == 0 && IS_WHITE_OR_NUL(p[8])) - { - if (found_autoload) - { - semsg(_(e_duplicate_argument_str), p); - return; - } - found_autoload = TRUE; - if (script_name_after_autoload(si) == NULL) - { - emsg(_(e_using_autoload_in_script_not_under_autoload_directory)); - return; - } - } else { semsg(_(e_invalid_argument_str), eap->arg);