1
0
forked from aniani/vim

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 #9555)
This commit is contained in:
Bram Moolenaar
2022-01-18 16:26:24 +00:00
parent 6079da7cfb
commit fd218c8a36
6 changed files with 28 additions and 36 deletions

View File

@@ -365,12 +365,11 @@ For writing a Vim script, see chapter 41 of the user manual |usr_41.txt|.
Vim version, or update Vim to a newer version. See Vim version, or update Vim to a newer version. See
|vimscript-version| for what changed between versions. |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| Marks a script file as containing |Vim9-script|
commands. Also see |vim9-namespace|. commands. Also see |vim9-namespace|.
Must be the first command in the file. Must be the first command in the file.
For [noclear] see |vim9-reload|. For [noclear] see |vim9-reload|.
For [autoload] see |vim9-autoload|.
Without the |+eval| feature this changes the syntax Without the |+eval| feature this changes the syntax
for some commands. for some commands.
See |:vim9cmd| for executing one command with Vim9 See |:vim9cmd| for executing one command with Vim9
@@ -378,8 +377,8 @@ For writing a Vim script, see chapter 41 of the user manual |usr_41.txt|.
*:scr* *:scriptnames* *:scr* *:scriptnames*
:scr[iptnames] List all sourced script names, in the order they were :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
|<SID>|. ID |<SID>|.
For a script that was used with `import autoload` but For a script that was used with `import autoload` but
was not actually sourced yet an "A" is shown after the was not actually sourced yet an "A" is shown after the
script ID. script ID.

View File

@@ -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 VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1523,17 +1523,18 @@ actually needed. Using the autoload mechanism is recommended:
directory. directory.
2. In the autoload script put the bulk of the code. > 2. In the autoload script put the bulk of the code. >
vim9script autoload vim9script
export def Stuff(arg: string) export def Stuff(arg: string)
... ...
< This goes in .../autoload/for/search.vim. < This goes in .../autoload/for/search.vim.
Adding "autoload" to `:vim9script` has the effect that "for#search#" will Putting the "search.vim" script under the "/autoload/for/" directory has
be prefixed to every exported item. The prefix is obtained from the file the effect that "for#search#" will be prefixed to every exported item. The
name, as you would to manually in a legacy autoload script. Thus the prefix is obtained from the file name, as you would to manually in a
exported function can be found with "for#search#Stuff", but you would legacy autoload script. Thus the exported function can be found with
normally use `import autoload` and not need to specify the prefix. "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 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. autoload script as you like. This way you can share code between plugins.

View File

@@ -3208,8 +3208,7 @@ EXTERN char e_cannot_import_dot_vim_without_using_as[]
INIT(= N_("E1261: Cannot import .vim without using \"as\"")); INIT(= N_("E1261: Cannot import .vim without using \"as\""));
EXTERN char e_cannot_import_same_script_twice_str[] EXTERN char e_cannot_import_same_script_twice_str[]
INIT(= N_("E1262: Cannot import the same script twice: %s")); INIT(= N_("E1262: Cannot import the same script twice: %s"));
EXTERN char e_using_autoload_in_script_not_under_autoload_directory[] // E1263 unused
INIT(= N_("E1263: Using autoload in a script not under an autoload directory"));
EXTERN char e_autoload_import_cannot_use_absolute_or_relative_path[] EXTERN char e_autoload_import_cannot_use_absolute_or_relative_path[]
INIT(= N_("E1264: Autoload import cannot use absolute or relative path: %s")); INIT(= N_("E1264: Autoload import cannot use absolute or relative path: %s"));
EXTERN char e_cannot_use_partial_here[] EXTERN char e_cannot_use_partial_here[]

View File

@@ -1196,9 +1196,9 @@ def Test_vim9script_autoload()
var save_rtp = &rtp var save_rtp = &rtp
exe 'set rtp^=' .. getcwd() .. '/Xdir' 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 var lines =<< trim END
vim9script autoload vim9script
g:prefixed_loaded += 1 g:prefixed_loaded += 1
export def Gettest(): string export def Gettest(): string
@@ -1262,7 +1262,7 @@ def Test_vim9script_autoload_call()
exe 'set rtp^=' .. getcwd() .. '/Xdir' exe 'set rtp^=' .. getcwd() .. '/Xdir'
var lines =<< trim END var lines =<< trim END
vim9script autoload vim9script
export def RetArg(arg: string): string export def RetArg(arg: string): string
return arg return arg
@@ -1300,7 +1300,7 @@ def Test_import_autoload_postponed()
exe 'set rtp^=' .. getcwd() .. '/Xdir' exe 'set rtp^=' .. getcwd() .. '/Xdir'
var lines =<< trim END var lines =<< trim END
vim9script autoload vim9script
g:loaded_postponed = 'true' g:loaded_postponed = 'true'
export var variable = 'bla' export var variable = 'bla'
@@ -1337,7 +1337,7 @@ def Test_import_autoload_override()
test_override('autoload', 1) test_override('autoload', 1)
var lines =<< trim END var lines =<< trim END
vim9script autoload vim9script
g:loaded_override = 'true' g:loaded_override = 'true'
export var variable = 'bla' export var variable = 'bla'
@@ -1372,7 +1372,7 @@ def Test_autoload_mapping()
exe 'set rtp^=' .. getcwd() .. '/Xdir' exe 'set rtp^=' .. getcwd() .. '/Xdir'
var lines =<< trim END var lines =<< trim END
vim9script autoload vim9script
g:toggle_loaded = 'yes' g:toggle_loaded = 'yes'
@@ -1423,7 +1423,13 @@ def Test_vim9script_autoload_fails()
vim9script autoload vim9script autoload
var n = 0 var n = 0
END 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 enddef
def Test_import_autoload_fails() def Test_import_autoload_fails()
@@ -1516,7 +1522,7 @@ enddef
" test using a autoloaded file that is case sensitive " test using a autoloaded file that is case sensitive
def Test_vim9_autoload_case_sensitive() def Test_vim9_autoload_case_sensitive()
var lines =<< trim END var lines =<< trim END
vim9script autoload vim9script
export def CaseSensitive(): string export def CaseSensitive(): string
return 'done' return 'done'
enddef enddef

View File

@@ -750,6 +750,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
4136,
/**/ /**/
4135, 4135,
/**/ /**/

View File

@@ -69,7 +69,6 @@ ex_vim9script(exarg_T *eap UNUSED)
int sid = current_sctx.sc_sid; int sid = current_sctx.sc_sid;
scriptitem_T *si; scriptitem_T *si;
int found_noclear = FALSE; int found_noclear = FALSE;
int found_autoload = FALSE;
char_u *p; char_u *p;
if (!getline_equal(eap->getline, eap->cookie, getsourceline)) if (!getline_equal(eap->getline, eap->cookie, getsourceline))
@@ -96,20 +95,6 @@ ex_vim9script(exarg_T *eap UNUSED)
} }
found_noclear = TRUE; 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 else
{ {
semsg(_(e_invalid_argument_str), eap->arg); semsg(_(e_invalid_argument_str), eap->arg);