mirror of
https://github.com/vim/vim.git
synced 2025-09-06 21:53:38 -04:00
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.
This commit is contained in:
parent
bad0ce7b26
commit
f98a39ca57
@ -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,
|
||||
/**/
|
||||
|
Loading…
x
Reference in New Issue
Block a user