Skip to content
Permalink
Browse files
patch 8.0.1734: package directory not added to 'rtp' if prefix matches
Problem:    Package directory not added to 'rtp' if prefix matches.
Solution:   Check the match is a full match. (Ozaki Kiichi, closes #2817)
            Also handle different ways of spelling a path.
  • Loading branch information
brammool committed Apr 18, 2018
1 parent bad0ce7 commit f98a39ca57d001ba3e24831bae1e375790fb41f0
Showing with 34 additions and 3 deletions.
  1. +23 −3 src/ex_cmds2.c
  2. +9 −0 src/testdir/test_packadd.vim
  3. +2 −0 src/version.c
@@ -3821,10 +3821,30 @@ static int APP_BOTH;
static void
add_pack_plugin(char_u *fname, void *cookie)
{
if (cookie != &APP_LOAD && strstr((char *)p_rtp, (char *)fname) == NULL)
/* directory is not yet in 'runtimepath', add it */
if (add_pack_dir_to_rtp(fname) == FAIL)
if (cookie != &APP_LOAD)
{
char_u *buf = alloc(MAXPATHL);
char_u *p;
int found = FALSE;

if (buf == NULL)
return;
p = p_rtp;
while (*p != NUL)
{
copy_option_part(&p, buf, MAXPATHL, ",");
if (pathcmp((char *)buf, (char *)fname, -1) == 0)
{
found = TRUE;
break;
}
}
vim_free(buf);
if (!found)
/* directory is not yet in 'runtimepath', add it */
if (add_pack_dir_to_rtp(fname) == FAIL)
return;
}

if (cookie != &APP_ADD_DIR)
load_pack_plugin(fname);
@@ -40,6 +40,15 @@ func Test_packadd()
call assert_match('/testdir/Xdir/pack/mine/opt/mytest\($\|,\)', &rtp)
call assert_match('/testdir/Xdir/pack/mine/opt/mytest/after$', &rtp)

" NOTE: '/.../opt/myte' forwardly matches with '/.../opt/mytest'
call mkdir(fnamemodify(s:plugdir, ':h') . '/myte', 'p')
let rtp = &rtp
packadd myte

" Check the path of 'myte' is added
call assert_true(len(&rtp) > len(rtp))
call assert_match('/testdir/Xdir/pack/mine/opt/myte\($\|,\)', &rtp)

" Check exception
call assert_fails("packadd directorynotfound", 'E919:')
call assert_fails("packadd", 'E471:')
@@ -762,6 +762,8 @@ static char *(features[]) =

static int included_patches[] =
{ /* Add new patch number below this line */
/**/
1734,
/**/
1733,
/**/

0 comments on commit f98a39c

Please sign in to comment.