diff --git a/src/cmdexpand.c b/src/cmdexpand.c
index 8ca5ecd..2366157 100644
--- a/src/cmdexpand.c
+++ b/src/cmdexpand.c
@@ -1363,11 +1363,11 @@
 	// For a tag pattern starting with "/" no translation is needed.
 	if (context == EXPAND_HELP
 		|| context == EXPAND_COLORS
-		|| context == EXPAND_RUNTIME
 		|| context == EXPAND_COMPILER
 		|| context == EXPAND_OWNSYNTAX
 		|| context == EXPAND_FILETYPE
 		|| context == EXPAND_PACKADD
+		|| context == EXPAND_RUNTIME
 		|| ((context == EXPAND_TAGS_LISTFILES
 			|| context == EXPAND_TAGS)
 		    && fname[0] == '/'))
@@ -2314,10 +2314,6 @@
 	    xp->xp_pattern = arg;
 	    break;
 
-	case CMD_runtime:
-	    set_context_in_runtime_cmd(xp, arg);
-	    break;
-
 	case CMD_compiler:
 	    xp->xp_context = EXPAND_COMPILER;
 	    xp->xp_pattern = arg;
@@ -2338,6 +2334,10 @@
 	    xp->xp_pattern = arg;
 	    break;
 
+	case CMD_runtime:
+	    set_context_in_runtime_cmd(xp, arg);
+	    break;
+
 #if defined(HAVE_LOCALE_H) || defined(X_LOCALE)
 	case CMD_language:
 	    return set_context_in_lang_cmd(xp, arg);
diff --git a/src/option.c b/src/option.c
index 386cf4d..528be65 100644
--- a/src/option.c
+++ b/src/option.c
@@ -6713,14 +6713,14 @@
 }
 
     int
-ExpandOldSetting(int *num_file, char_u ***file)
+ExpandOldSetting(int *numMatches, char_u ***matches)
 {
     char_u  *var = NULL;	// init for GCC
     char_u  *buf;
 
-    *num_file = 0;
-    *file = ALLOC_ONE(char_u *);
-    if (*file == NULL)
+    *numMatches = 0;
+    *matches = ALLOC_ONE(char_u *);
+    if (*matches == NULL)
 	return FAIL;
 
     /*
@@ -6748,7 +6748,7 @@
 
     if (buf == NULL)
     {
-	VIM_CLEAR(*file);
+	VIM_CLEAR(*matches);
 	return FAIL;
     }
 
@@ -6764,8 +6764,8 @@
 	    STRMOVE(var, var + 1);
 #endif
 
-    *file[0] = buf;
-    *num_file = 1;
+    *matches[0] = buf;
+    *numMatches = 1;
     return OK;
 }
 
diff --git a/src/proto/option.pro b/src/proto/option.pro
index ca150b6..b32b95e 100644
--- a/src/proto/option.pro
+++ b/src/proto/option.pro
@@ -66,7 +66,7 @@
 void set_imsearch_global(void);
 void set_context_in_set_cmd(expand_T *xp, char_u *arg, int opt_flags);
 int ExpandSettings(expand_T *xp, regmatch_T *regmatch, char_u *fuzzystr, int *numMatches, char_u ***matches, int can_fuzzy);
-int ExpandOldSetting(int *num_file, char_u ***file);
+int ExpandOldSetting(int *numMatches, char_u ***matches);
 int shortmess(int x);
 void vimrc_found(char_u *fname, char_u *envname);
 void change_compatible(int on);
diff --git a/src/testdir/test_packadd.vim b/src/testdir/test_packadd.vim
index 332f009..89b7817 100644
--- a/src/testdir/test_packadd.vim
+++ b/src/testdir/test_packadd.vim
@@ -27,7 +27,7 @@
 
   let rtp_entries = split(rtp, ',')
   for entry in rtp_entries
-    if entry =~? '\<after\>' 
+    if entry =~? '\<after\>'
       let first_after_entry = entry
       break
     endif
@@ -183,7 +183,7 @@
   exec "silent !rmdir" top2_dir
 endfunc
 
-" Check command-line completion for 'packadd'
+" Check command-line completion for :packadd
 func Test_packadd_completion()
   let optdir1 = &packpath . '/pack/mine/opt'
   let optdir2 = &packpath . '/pack/candidate/opt'
@@ -271,9 +271,9 @@
 
   helptags ALL
 
-  let tags1 = readfile(docdir1 . '/tags') 
+  let tags1 = readfile(docdir1 . '/tags')
   call assert_match('look-here', tags1[0])
-  let tags2 = readfile(docdir2 . '/tags') 
+  let tags2 = readfile(docdir2 . '/tags')
   call assert_match('look-away', tags2[0])
 
   call assert_fails('helptags abcxyz', 'E150:')
diff --git a/src/version.c b/src/version.c
index cfe6e6a..5c59444 100644
--- a/src/version.c
+++ b/src/version.c
@@ -696,6 +696,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1242,
+/**/
     1241,
 /**/
     1240,
