1
0
forked from aniani/vim

patch 8.2.4650: "import autoload" only works with using 'runtimepath'

Problem:    "import autoload" only works with using 'runtimepath'.
Solution:   Also support a relative and absolute file name.
This commit is contained in:
Bram Moolenaar
2022-03-30 21:12:27 +01:00
parent b4ad3b0dea
commit c0ceeeb839
15 changed files with 442 additions and 82 deletions

View File

@@ -251,7 +251,7 @@ source_callback(char_u *fname, void *cookie)
* Find an already loaded script "name".
* If found returns its script ID. If not found returns -1.
*/
static int
int
find_script_by_name(char_u *name)
{
int sid;
@@ -320,6 +320,21 @@ get_new_scriptitem(int *error)
return sid;
}
int
get_new_scriptitem_for_fname(int *error, char_u *fname)
{
int sid = get_new_scriptitem(error);
if (*error == OK)
{
scriptitem_T *si = SCRIPT_ITEM(sid);
si->sn_name = vim_strsave(fname);
si->sn_state = SN_STATE_NOT_LOADED;
}
return sid;
}
static void
find_script_callback(char_u *fname, void *cookie)
{
@@ -329,17 +344,8 @@ find_script_callback(char_u *fname, void *cookie)
sid = find_script_by_name(fname);
if (sid < 0)
{
// script does not exist yet, create a new scriptitem
sid = get_new_scriptitem(&error);
if (error == OK)
{
scriptitem_T *si = SCRIPT_ITEM(sid);
si->sn_name = vim_strsave(fname);
si->sn_state = SN_STATE_NOT_LOADED;
}
}
sid = get_new_scriptitem_for_fname(&error, fname);
*ret_sid = sid;
}
#endif