summaryrefslogtreecommitdiffstats
path: root/src/ex_cmds2.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/ex_cmds2.c')
-rw-r--r--src/ex_cmds2.c26
1 files changed, 23 insertions, 3 deletions
diff --git a/src/ex_cmds2.c b/src/ex_cmds2.c
index 83f09661cc..3946627416 100644
--- a/src/ex_cmds2.c
+++ b/src/ex_cmds2.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);