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.

Raspunde prin e-mail lui