fixup(runtime): Fix lua runtime files not listed

lua runtime files weren't listed in :scriptname & profiler.
This fixes that.

* Add tests

* Small doc tweeks
This commit is contained in:
shadmansaleh 2021-06-12 12:10:05 +06:00
parent d3bdde0bad
commit 1f280b582f
3 changed files with 26 additions and 12 deletions

View File

@ -831,16 +831,16 @@ ShellFilterPost After executing a shell command with
":{range}!cmd", ":w !cmd" or ":r !cmd". ":{range}!cmd", ":w !cmd" or ":r !cmd".
Can be used to check for any changed files. Can be used to check for any changed files.
*SourcePre* *SourcePre*
SourcePre Before sourcing a Vim script. |:source| SourcePre Before sourcing a vim/lua file. |:source|
<afile> is the name of the file being sourced. <afile> is the name of the file being sourced.
*SourcePost* *SourcePost*
SourcePost After sourcing a Vim script. |:source| SourcePost After sourcing a vim/lua file. |:source|
<afile> is the name of the file being sourced. <afile> is the name of the file being sourced.
Not triggered when sourcing was interrupted. Not triggered when sourcing was interrupted.
Also triggered after a SourceCmd autocommand Also triggered after a SourceCmd autocommand
was triggered. was triggered.
*SourceCmd* *SourceCmd*
SourceCmd When sourcing a Vim script. |:source| SourceCmd When sourcing a vim/lua file. |:source|
<afile> is the name of the file being sourced. <afile> is the name of the file being sourced.
The autocommand must source this file. The autocommand must source this file.
|Cmd-event| |Cmd-event|

View File

@ -2809,10 +2809,6 @@ int do_source(char_u *fname, int check_other, int is_vimrc)
proftime_T wait_start; proftime_T wait_start;
bool trigger_source_post = false; bool trigger_source_post = false;
if (path_with_extension((const char *)fname, "lua")) {
return (int)nlua_exec_file((const char *)fname);
}
p = expand_env_save(fname); p = expand_env_save(fname);
if (p == NULL) { if (p == NULL) {
return retval; return retval;
@ -3005,10 +3001,15 @@ int do_source(char_u *fname, int check_other, int is_vimrc)
firstline = p; firstline = p;
} }
// Call do_cmdline, which will call getsourceline() to get the lines. if (path_with_extension((const char *)fname, "lua")) {
do_cmdline(firstline, getsourceline, (void *)&cookie, // Source the file as lua
DOCMD_VERBOSE|DOCMD_NOWAIT|DOCMD_REPEAT); retval = (int)nlua_exec_file((const char *)fname);
retval = OK; } else {
// Call do_cmdline, which will call getsourceline() to get the lines.
do_cmdline(firstline, getsourceline, (void *)&cookie,
DOCMD_VERBOSE|DOCMD_NOWAIT|DOCMD_REPEAT);
retval = OK;
}
if (l_do_profiling == PROF_YES) { if (l_do_profiling == PROF_YES) {
// Get "si" again, "script_items" may have been reallocated. // Get "si" again, "script_items" may have been reallocated.

View File

@ -526,12 +526,25 @@ describe('runtime:', function()
local plugin_folder_path = table.concat({plugin_path, 'plugin'}, pathsep) local plugin_folder_path = table.concat({plugin_path, 'plugin'}, pathsep)
local plugin_file_path = table.concat({plugin_folder_path, 'plugin.lua'}, local plugin_file_path = table.concat({plugin_folder_path, 'plugin.lua'},
pathsep) pathsep)
local profiler_file = 'test_startuptime.log'
mkdir_p(plugin_folder_path) mkdir_p(plugin_folder_path)
write_file(plugin_file_path, [[vim.g.lua_plugin = 2]]) write_file(plugin_file_path, [[vim.g.lua_plugin = 2]])
clear{ args_rm={'-u'}, env={ XDG_CONFIG_HOME=xconfig }} clear{ args_rm={'-u'}, args={'--startuptime', profiler_file}, env={ XDG_CONFIG_HOME=xconfig }}
eq(2, eval('g:lua_plugin')) eq(2, eval('g:lua_plugin'))
-- Check if plugin_file_path is listed in :scriptname
local scripts = meths.exec(':scriptnames', true)
assert.Truthy(scripts:find(plugin_file_path))
-- Check if plugin_file_path is listed in startup profile
local profile_reader = io.open(profiler_file, 'r')
local profile_log = profile_reader:read('*a')
profile_reader:close()
assert.Truthy(profile_log :find(plugin_file_path))
os.remove(profiler_file)
rmdir(plugin_path) rmdir(plugin_path)
end) end)