diff --git a/src/help.c b/src/help.c
index 4d1efe8..c33985e 100644
--- a/src/help.c
+++ b/src/help.c
@@ -1312,7 +1312,7 @@
 
     if (STRCMP(eap->arg, "ALL") == 0)
     {
-	do_in_path(p_rtp, (char_u *)"doc", DIP_ALL + DIP_DIR,
+	do_in_path(p_rtp, "", (char_u *)"doc", DIP_ALL + DIP_DIR,
 						 helptags_cb, &add_help_tags);
     }
     else
diff --git a/src/proto/scriptfile.pro b/src/proto/scriptfile.pro
index 24e5389..dbcc849 100644
--- a/src/proto/scriptfile.pro
+++ b/src/proto/scriptfile.pro
@@ -9,7 +9,7 @@
 void set_context_in_runtime_cmd(expand_T *xp, char_u *arg);
 int find_script_by_name(char_u *name);
 int get_new_scriptitem_for_fname(int *error, char_u *fname);
-int do_in_path(char_u *path, char_u *name, int flags, void (*callback)(char_u *fname, void *ck), void *cookie);
+int do_in_path(char_u *path, char *prefix, char_u *name, int flags, void (*callback)(char_u *fname, void *ck), void *cookie);
 int do_in_runtimepath(char_u *name, int flags, void (*callback)(char_u *fname, void *ck), void *cookie);
 int source_runtime(char_u *name, int flags);
 int source_in_path(char_u *path, char_u *name, int flags, int *ret_sid);
diff --git a/src/scriptfile.c b/src/scriptfile.c
index 8a42db9..37d57e5 100644
--- a/src/scriptfile.c
+++ b/src/scriptfile.c
@@ -404,18 +404,19 @@
 #endif
 
 /*
- * Find the file "name" in all directories in "path" and invoke
+ * Find the patterns in "name" in all directories in "path" and invoke
  * "callback(fname, cookie)".
- * "name" can contain wildcards.
+ * "prefix" is prepended to each pattern in "name".
  * When "flags" has DIP_ALL: source all files, otherwise only the first one.
  * When "flags" has DIP_DIR: find directories instead of files.
  * When "flags" has DIP_ERR: give an error message if there is no match.
  *
- * return FAIL when no file could be sourced, OK otherwise.
+ * Return FAIL when no file could be sourced, OK otherwise.
  */
     int
 do_in_path(
     char_u	*path,
+    char	*prefix,
     char_u	*name,
     int		flags,
     void	(*callback)(char_u *fname, void *ck),
@@ -447,8 +448,12 @@
 	if (p_verbose > 10 && name != NULL)
 	{
 	    verbose_enter();
-	    smsg(_("Searching for \"%s\" in \"%s\""),
-						 (char *)name, (char *)path);
+	    if (*prefix != NUL)
+		smsg(_("Searching for \"%s\" under \"%s\" in \"%s\""),
+					   (char *)name, prefix, (char *)path);
+	    else
+		smsg(_("Searching for \"%s\" in \"%s\""),
+						   (char *)name, (char *)path);
 	    verbose_leave();
 	}
 
@@ -479,9 +484,10 @@
 		if (!did_one)
 		    did_one = (cookie == NULL);
 	    }
-	    else if (buflen + STRLEN(name) + 2 < MAXPATHL)
+	    else if (buflen + 2 + STRLEN(prefix) + STRLEN(name) < MAXPATHL)
 	    {
 		add_pathsep(buf);
+		STRCAT(buf, prefix);
 		tail = buf + STRLEN(buf);
 
 		// Loop over all patterns in "name"
@@ -559,35 +565,17 @@
     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(path, name, flags, callback, cookie);
+	done = do_in_path(path, "", name, flags, callback, cookie);
 
     if ((done == FAIL || (flags & DIP_ALL)) && (flags & DIP_START))
-    {
-	len = (int)(STRLEN(start_dir) + STRLEN(name));
-	s = alloc(len);
-	if (s == NULL)
-	    return FAIL;
-	vim_snprintf((char *)s, len, start_dir, name);
-	done = do_in_path(p_pp, s, flags, callback, cookie);
-	vim_free(s);
-    }
+	done = do_in_path(p_pp, "pack/*/start/*/", name, flags, callback,
+								       cookie);
 
     if ((done == FAIL || (flags & DIP_ALL)) && (flags & DIP_OPT))
-    {
-	len = (int)(STRLEN(opt_dir) + STRLEN(name));
-	s = alloc(len);
-	if (s == NULL)
-	    return FAIL;
-	vim_snprintf((char *)s, len, opt_dir, name);
-	done = do_in_path(p_pp, s, flags, callback, cookie);
-	vim_free(s);
-    }
+	done = do_in_path(p_pp, "pack/*/opt/*/", name, flags, callback,
+								       cookie);
 
     return done;
 }
@@ -899,7 +887,7 @@
     void
 add_pack_start_dirs(void)
 {
-    do_in_path(p_pp, (char_u *)"pack/*/start/*", DIP_ALL + DIP_DIR,
+    do_in_path(p_pp, "", (char_u *)"pack/*/start/*", DIP_ALL + DIP_DIR,
 					       add_pack_plugin, &APP_ADD_DIR);
 }
 
@@ -910,7 +898,7 @@
 load_start_packages(void)
 {
     did_source_packages = TRUE;
-    do_in_path(p_pp, (char_u *)"pack/*/start/*", DIP_ALL + DIP_DIR,
+    do_in_path(p_pp, "", (char_u *)"pack/*/start/*", DIP_ALL + DIP_DIR,
 						  add_pack_plugin, &APP_LOAD);
 }
 
@@ -957,7 +945,7 @@
 	vim_snprintf(pat, len, plugpat, round == 1 ? "start" : "opt", eap->arg);
 	// The first round don't give a "not found" error, in the second round
 	// only when nothing was found in the first round.
-	res = do_in_path(p_pp, (char_u *)pat,
+	res = do_in_path(p_pp, "", (char_u *)pat,
 		DIP_ALL + DIP_DIR + (round == 2 && res == FAIL ? DIP_ERR : 0),
 		add_pack_plugin, eap->forceit ? &APP_ADD_DIR : &APP_BOTH);
 	vim_free(pat);
diff --git a/src/testdir/test_packadd.vim b/src/testdir/test_packadd.vim
index b44494a..33dcfe0 100644
--- a/src/testdir/test_packadd.vim
+++ b/src/testdir/test_packadd.vim
@@ -347,12 +347,36 @@
   runtime extra/bar.vim
   call assert_equal('run', g:sequence)
   let g:sequence = ''
+  runtime NoSuchFile 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 START NoSuchFile extra/bar.vim extra/foo.vim
+  call assert_equal('start', g:sequence)
+  let g:sequence = ''
+  runtime START NoSuchFile extra/foo.vim extra/bar.vim
+  call assert_equal('foostart', g:sequence)
+  let g:sequence = ''
+  runtime! START NoSuchFile extra/bar.vim extra/foo.vim
+  call assert_equal('startfoostart', g:sequence)
+
+  let g:sequence = ''
   runtime OPT extra/bar.vim
   call assert_equal('opt', g:sequence)
   let g:sequence = ''
+  runtime OPT NoSuchFile extra/bar.vim extra/xxx.vim
+  call assert_equal('opt', g:sequence)
+  let g:sequence = ''
+  runtime OPT NoSuchFile extra/xxx.vim extra/bar.vim
+  call assert_equal('xxxopt', g:sequence)
+  let g:sequence = ''
+  runtime! OPT NoSuchFile extra/bar.vim extra/xxx.vim
+  call assert_equal('optxxxopt', g:sequence)
+
+  let g:sequence = ''
   runtime PACK extra/bar.vim
   call assert_equal('start', g:sequence)
   let g:sequence = ''
@@ -361,6 +385,12 @@
   let g:sequence = ''
   runtime PACK extra/xxx.vim
   call assert_equal('xxxopt', g:sequence)
+  let g:sequence = ''
+  runtime PACK extra/xxx.vim extra/foo.vim extra/bar.vim
+  call assert_equal('foostart', g:sequence)
+  let g:sequence = ''
+  runtime! PACK extra/bar.vim extra/xxx.vim extra/foo.vim
+  call assert_equal('startfoostartoptxxxopt', g:sequence)
 
   let g:sequence = ''
   runtime ALL extra/bar.vim
@@ -374,6 +404,12 @@
   let g:sequence = ''
   runtime! ALL extra/bar.vim
   call assert_equal('runstartopt', g:sequence)
+  let g:sequence = ''
+  runtime ALL extra/xxx.vim extra/foo.vim extra/bar.vim
+  call assert_equal('run', g:sequence)
+  let g:sequence = ''
+  runtime! ALL extra/bar.vim extra/xxx.vim extra/foo.vim
+  call assert_equal('runstartfoostartoptxxxopt', g:sequence)
 endfunc
 
 func Test_runtime_completion()
diff --git a/src/version.c b/src/version.c
index 64fcfca..9a1709a 100644
--- a/src/version.c
+++ b/src/version.c
@@ -696,6 +696,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1730,
+/**/
     1729,
 /**/
     1728,
