Problem: Vim9: the "autoload" argument of ":vim9script" is not useful.
Solution: Remove the argument. (closes #9555)
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
*:scr* *:scriptnames*
:scr[iptnames] List all sourced script names, in the order they were
- first sourced. The number is used for the script ID
- |<SID>|.
+ first encountered. The number is used for the script
+ ID |<SID>|.
For a script that was used with `import autoload` but
was not actually sourced yet an "A" is shown after the
script ID.
-*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
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.
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[]
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
exe 'set rtp^=' .. getcwd() .. '/Xdir'
var lines =<< trim END
- vim9script autoload
+ vim9script
export def RetArg(arg: string): string
return arg
exe 'set rtp^=' .. getcwd() .. '/Xdir'
var lines =<< trim END
- vim9script autoload
+ vim9script
g:loaded_postponed = 'true'
export var variable = 'bla'
test_override('autoload', 1)
var lines =<< trim END
- vim9script autoload
+ vim9script
g:loaded_override = 'true'
export var variable = 'bla'
exe 'set rtp^=' .. getcwd() .. '/Xdir'
var lines =<< trim END
- vim9script autoload
+ vim9script
g:toggle_loaded = 'yes'
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()
" 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
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 4136,
/**/
4135,
/**/
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))
}
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);