mirror of
https://github.com/vim/vim.git
synced 2025-09-24 03:44:06 -04:00
patch 7.4.1553
Problem: ":runtime" does not use 'packpath'. Solution: Add "what" argument.
This commit is contained in:
@@ -182,10 +182,12 @@ For writing a Vim script, see chapter 41 of the user manual |usr_41.txt|.
|
|||||||
{not in Vi}
|
{not in Vi}
|
||||||
|
|
||||||
*:ru* *:runtime*
|
*:ru* *:runtime*
|
||||||
:ru[ntime][!] {file} ..
|
:ru[ntime][!] [where] {file} ..
|
||||||
Read Ex commands from {file} in each directory given
|
Read Ex commands from {file} in each directory given
|
||||||
by 'runtimepath'. There is no error for non-existing
|
by 'runtimepath' and/or 'packpath'. There is no error
|
||||||
files. Example: >
|
for non-existing files.
|
||||||
|
|
||||||
|
Example: >
|
||||||
:runtime syntax/c.vim
|
:runtime syntax/c.vim
|
||||||
|
|
||||||
< There can be multiple {file} arguments, separated by
|
< There can be multiple {file} arguments, separated by
|
||||||
@@ -199,6 +201,15 @@ For writing a Vim script, see chapter 41 of the user manual |usr_41.txt|.
|
|||||||
When it is not included only the first found file is
|
When it is not included only the first found file is
|
||||||
sourced.
|
sourced.
|
||||||
|
|
||||||
|
When [where] is omitted only 'runtimepath' is used.
|
||||||
|
Other values:
|
||||||
|
START search under "start" in 'packpath'
|
||||||
|
OPT search under "opt" in 'packpath'
|
||||||
|
PACK search under "start" and "opt" in
|
||||||
|
'packpath'
|
||||||
|
ALL first use 'runtimepath', then search
|
||||||
|
under "start" and "opt" in 'packpath'
|
||||||
|
|
||||||
When {file} contains wildcards it is expanded to all
|
When {file} contains wildcards it is expanded to all
|
||||||
matching files. Example: >
|
matching files. Example: >
|
||||||
:runtime! plugin/*.vim
|
:runtime! plugin/*.vim
|
||||||
@@ -238,6 +249,16 @@ For writing a Vim script, see chapter 41 of the user manual |usr_41.txt|.
|
|||||||
|
|
||||||
Also see |pack-add|.
|
Also see |pack-add|.
|
||||||
|
|
||||||
|
:packloadall[!] Load all packages in the "start" directories under
|
||||||
|
'packpath'. The directories found are added to
|
||||||
|
'runtimepath'.
|
||||||
|
This normally done during startup, after loading your
|
||||||
|
.vimrc file. With this command it can be done
|
||||||
|
earlier.
|
||||||
|
Packages will be loaded only once. After this command
|
||||||
|
it won't happen again. When the optional ! is added
|
||||||
|
this command will load packages even when done before.
|
||||||
|
See |packages|.
|
||||||
|
|
||||||
:scripte[ncoding] [encoding] *:scripte* *:scriptencoding* *E167*
|
:scripte[ncoding] [encoding] *:scripte* *:scriptencoding* *E167*
|
||||||
Specify the character encoding used in the script.
|
Specify the character encoding used in the script.
|
||||||
@@ -461,8 +482,13 @@ Note that the files under "pack/foo/opt" or not loaded automatically, only the
|
|||||||
ones under "pack/foo/start". See |pack-add| below for how the "opt" directory
|
ones under "pack/foo/start". See |pack-add| below for how the "opt" directory
|
||||||
is used.
|
is used.
|
||||||
|
|
||||||
Loading packages will not happen if loading plugins is disabled, see
|
Loading packages automatically will not happen if loading plugins is disabled,
|
||||||
|load-plugins|.
|
see |load-plugins|.
|
||||||
|
|
||||||
|
To load packages earlier, so that 'runtimepath' gets updated: >
|
||||||
|
:packloadall
|
||||||
|
This also works when loading plugins is disabled. The automatic loading will
|
||||||
|
only happen once.
|
||||||
|
|
||||||
|
|
||||||
Using a single plugin and loading it automatically ~
|
Using a single plugin and loading it automatically ~
|
||||||
|
@@ -2901,12 +2901,38 @@ ex_compiler(exarg_T *eap)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ":runtime {name}"
|
* ":runtime [what] {name}"
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
ex_runtime(exarg_T *eap)
|
ex_runtime(exarg_T *eap)
|
||||||
{
|
{
|
||||||
source_runtime(eap->arg, eap->forceit ? DIP_ALL : 0);
|
char_u *arg = eap->arg;
|
||||||
|
char_u *p = skiptowhite(arg);
|
||||||
|
int len = (int)(p - arg);
|
||||||
|
int flags = eap->forceit ? DIP_ALL : 0;
|
||||||
|
|
||||||
|
if (STRNCMP(arg, "START", len) == 0)
|
||||||
|
{
|
||||||
|
flags += DIP_START + DIP_NORTP;
|
||||||
|
arg = skipwhite(arg + len);
|
||||||
|
}
|
||||||
|
else if (STRNCMP(arg, "OPT", len) == 0)
|
||||||
|
{
|
||||||
|
flags += DIP_OPT + DIP_NORTP;
|
||||||
|
arg = skipwhite(arg + len);
|
||||||
|
}
|
||||||
|
else if (STRNCMP(arg, "PACK", len) == 0)
|
||||||
|
{
|
||||||
|
flags += DIP_START + DIP_OPT + DIP_NORTP;
|
||||||
|
arg = skipwhite(arg + len);
|
||||||
|
}
|
||||||
|
else if (STRNCMP(arg, "ALL", len) == 0)
|
||||||
|
{
|
||||||
|
flags += DIP_START + DIP_OPT;
|
||||||
|
arg = skipwhite(arg + len);
|
||||||
|
}
|
||||||
|
|
||||||
|
source_runtime(arg, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -3067,15 +3093,16 @@ do_in_runtimepath(
|
|||||||
void (*callback)(char_u *fname, void *ck),
|
void (*callback)(char_u *fname, void *ck),
|
||||||
void *cookie)
|
void *cookie)
|
||||||
{
|
{
|
||||||
int done;
|
int done = FAIL;
|
||||||
char_u *s;
|
char_u *s;
|
||||||
int len;
|
int len;
|
||||||
char *start_dir = "pack/*/start/*/%s";
|
char *start_dir = "pack/*/start/*/%s";
|
||||||
char *opt_dir = "pack/*/opt/*/%s";
|
char *opt_dir = "pack/*/opt/*/%s";
|
||||||
|
|
||||||
|
if ((flags & DIP_NORTP) == 0)
|
||||||
done = do_in_path(p_rtp, name, flags, callback, cookie);
|
done = do_in_path(p_rtp, name, flags, callback, cookie);
|
||||||
|
|
||||||
if (done == FAIL && (flags & DIP_START))
|
if ((done == FAIL || (flags & DIP_ALL)) && (flags & DIP_START))
|
||||||
{
|
{
|
||||||
len = STRLEN(start_dir) + STRLEN(name);
|
len = STRLEN(start_dir) + STRLEN(name);
|
||||||
s = alloc(len);
|
s = alloc(len);
|
||||||
@@ -3086,7 +3113,7 @@ do_in_runtimepath(
|
|||||||
vim_free(s);
|
vim_free(s);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (done == FAIL && (flags & DIP_OPT))
|
if ((done == FAIL || (flags & DIP_ALL)) && (flags & DIP_OPT))
|
||||||
{
|
{
|
||||||
len = STRLEN(opt_dir) + STRLEN(name);
|
len = STRLEN(opt_dir) + STRLEN(name);
|
||||||
s = alloc(len);
|
s = alloc(len);
|
||||||
|
@@ -134,3 +134,50 @@ func Test_colorscheme()
|
|||||||
colorscheme three
|
colorscheme three
|
||||||
call assert_equal(1, g:found_three)
|
call assert_equal(1, g:found_three)
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
func Test_runtime()
|
||||||
|
let rundir = &packpath . '/runtime/extra'
|
||||||
|
let startdir = &packpath . '/pack/mine/start/foo/extra'
|
||||||
|
let optdir = &packpath . '/pack/mine/opt/bar/extra'
|
||||||
|
call mkdir(rundir, 'p')
|
||||||
|
call mkdir(startdir, 'p')
|
||||||
|
call mkdir(optdir, 'p')
|
||||||
|
call writefile(['let g:sequence .= "run"'], rundir . '/bar.vim')
|
||||||
|
call writefile(['let g:sequence .= "start"'], startdir . '/bar.vim')
|
||||||
|
call writefile(['let g:sequence .= "foostart"'], startdir . '/foo.vim')
|
||||||
|
call writefile(['let g:sequence .= "opt"'], optdir . '/bar.vim')
|
||||||
|
call writefile(['let g:sequence .= "xxxopt"'], optdir . '/xxx.vim')
|
||||||
|
exe 'set rtp=' . &packpath . '/runtime'
|
||||||
|
|
||||||
|
let g:sequence = ''
|
||||||
|
runtime extra/bar.vim
|
||||||
|
call assert_equal('run', g:sequence)
|
||||||
|
let g:sequence = ''
|
||||||
|
runtime START extra/bar.vim
|
||||||
|
call assert_equal('start', g:sequence)
|
||||||
|
let g:sequence = ''
|
||||||
|
runtime OPT extra/bar.vim
|
||||||
|
call assert_equal('opt', g:sequence)
|
||||||
|
let g:sequence = ''
|
||||||
|
runtime PACK extra/bar.vim
|
||||||
|
call assert_equal('start', g:sequence)
|
||||||
|
let g:sequence = ''
|
||||||
|
runtime! PACK extra/bar.vim
|
||||||
|
call assert_equal('startopt', g:sequence)
|
||||||
|
let g:sequence = ''
|
||||||
|
runtime PACK extra/xxx.vim
|
||||||
|
call assert_equal('xxxopt', g:sequence)
|
||||||
|
|
||||||
|
let g:sequence = ''
|
||||||
|
runtime ALL extra/bar.vim
|
||||||
|
call assert_equal('run', g:sequence)
|
||||||
|
let g:sequence = ''
|
||||||
|
runtime ALL extra/foo.vim
|
||||||
|
call assert_equal('foostart', g:sequence)
|
||||||
|
let g:sequence = ''
|
||||||
|
runtime! ALL extra/xxx.vim
|
||||||
|
call assert_equal('xxxopt', g:sequence)
|
||||||
|
let g:sequence = ''
|
||||||
|
runtime! ALL extra/bar.vim
|
||||||
|
call assert_equal('runstartopt', g:sequence)
|
||||||
|
endfunc
|
||||||
|
@@ -743,6 +743,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 */
|
||||||
|
/**/
|
||||||
|
1553,
|
||||||
/**/
|
/**/
|
||||||
1552,
|
1552,
|
||||||
/**/
|
/**/
|
||||||
|
@@ -2294,5 +2294,6 @@ int vim_main2(int argc, char **argv);
|
|||||||
#define DIP_ERR 0x04 /* give an error message when none found. */
|
#define DIP_ERR 0x04 /* give an error message when none found. */
|
||||||
#define DIP_START 0x08 /* also use "start" directory in 'packpath' */
|
#define DIP_START 0x08 /* also use "start" directory in 'packpath' */
|
||||||
#define DIP_OPT 0x10 /* also use "opt" directory in 'packpath' */
|
#define DIP_OPT 0x10 /* also use "opt" directory in 'packpath' */
|
||||||
|
#define DIP_NORTP 0x20 /* do not use 'runtimepath' */
|
||||||
|
|
||||||
#endif /* VIM__H */
|
#endif /* VIM__H */
|
||||||
|
Reference in New Issue
Block a user