Patch 7.4.1553
Problem: ":runtime" does not use 'packpath'.
Solution: Add "what" argument.
Files: src/ex_cmds2.c, src/vim.h, runtime/doc/repeat.txt,
src/testdir/test_packadd.vim
*** ../vim-7.4.1552/src/ex_cmds2.c 2016-03-12 22:11:34.239300280 +0100
--- src/ex_cmds2.c 2016-03-12 22:42:18.755994876 +0100
***************
*** 2901,2912 ****
#endif
/*
! * ":runtime {name}"
*/
void
ex_runtime(exarg_T *eap)
{
! source_runtime(eap->arg, eap->forceit ? DIP_ALL : 0);
}
static void
--- 2901,2938 ----
#endif
/*
! * ":runtime [what] {name}"
*/
void
ex_runtime(exarg_T *eap)
{
! 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
***************
*** 3067,3081 ****
void (*callback)(char_u *fname, void *ck),
void *cookie)
{
! int done;
char_u *s;
int len;
char *start_dir = "pack/*/start/*/%s";
char *opt_dir = "pack/*/opt/*/%s";
! done = do_in_path(p_rtp, name, flags, callback, cookie);
! if (done == FAIL && (flags & DIP_START))
{
len = STRLEN(start_dir) + STRLEN(name);
s = alloc(len);
--- 3093,3108 ----
void (*callback)(char_u *fname, void *ck),
void *cookie)
{
! int done = FAIL;
char_u *s;
int len;
char *start_dir = "pack/*/start/*/%s";
char *opt_dir = "pack/*/opt/*/%s";
! if ((flags & DIP_NORTP) == 0)
! done = do_in_path(p_rtp, name, flags, callback, cookie);
! if ((done == FAIL || (flags & DIP_ALL)) && (flags & DIP_START))
{
len = STRLEN(start_dir) + STRLEN(name);
s = alloc(len);
***************
*** 3086,3092 ****
vim_free(s);
}
! if (done == FAIL && (flags & DIP_OPT))
{
len = STRLEN(opt_dir) + STRLEN(name);
s = alloc(len);
--- 3113,3119 ----
vim_free(s);
}
! if ((done == FAIL || (flags & DIP_ALL)) && (flags & DIP_OPT))
{
len = STRLEN(opt_dir) + STRLEN(name);
s = alloc(len);
*** ../vim-7.4.1552/src/vim.h 2016-03-12 22:11:34.247300195 +0100
--- src/vim.h 2016-03-12 22:27:03.381577532 +0100
***************
*** 2294,2298 ****
--- 2294,2299 ----
#define DIP_ERR 0x04 /* give an error message when none
found. */
#define DIP_START 0x08 /* also use "start" directory in 'packpath' */
#define DIP_OPT 0x10 /* also use "opt" directory in
'packpath' */
+ #define DIP_NORTP 0x20 /* do not use 'runtimepath' */
#endif /* VIM__H */
*** ../vim-7.4.1552/runtime/doc/repeat.txt 2016-03-09 22:18:52.166442971
+0100
--- runtime/doc/repeat.txt 2016-03-12 22:20:49.305494588 +0100
***************
*** 175,184 ****
{not in Vi}
*:ru* *:runtime*
! :ru[ntime][!] {file} ..
Read Ex commands from {file} in each directory given
! by 'runtimepath'. There is no error for non-existing
! files. Example: >
:runtime syntax/c.vim
< There can be multiple {file} arguments, separated by
--- 182,193 ----
{not in Vi}
*:ru* *:runtime*
! :ru[ntime][!] [where] {file} ..
Read Ex commands from {file} in each directory given
! by 'runtimepath' and/or 'packpath'. There is no error
! for non-existing files.
!
! Example: >
:runtime syntax/c.vim
< There can be multiple {file} arguments, separated by
***************
*** 192,197 ****
--- 201,215 ----
When it is not included only the first found file is
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
matching files. Example: >
:runtime! plugin/*.vim
***************
*** 231,236 ****
--- 249,264 ----
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*
Specify the character encoding used in the script.
***************
*** 454,461 ****
ones under "pack/foo/start". See |pack-add| below for how the "opt" directory
is used.
! Loading packages will not happen if loading plugins is disabled, see
! |load-plugins|.
Using a single plugin and loading it automatically ~
--- 482,494 ----
ones under "pack/foo/start". See |pack-add| below for how the "opt" directory
is used.
! Loading packages automatically will not happen if loading plugins is disabled,
! 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 ~
*** ../vim-7.4.1552/src/testdir/test_packadd.vim 2016-03-12
22:11:34.255300112 +0100
--- src/testdir/test_packadd.vim 2016-03-12 22:43:11.211445839 +0100
***************
*** 134,136 ****
--- 134,183 ----
colorscheme three
call assert_equal(1, g:found_three)
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
*** ../vim-7.4.1552/src/version.c 2016-03-12 22:11:34.255300112 +0100
--- src/version.c 2016-03-12 22:46:04.005634676 +0100
***************
*** 745,746 ****
--- 745,748 ----
{ /* Add new patch number below this line */
+ /**/
+ 1553,
/**/
--
The only backup you need is the one that you didn't have time for.
(Murphy)
/// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.