diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 4aa7f5d..63e982e 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -4198,6 +4198,11 @@
 	    xp->xp_pattern = arg;
 	    break;
 
+	case CMD_packadd:
+	    xp->xp_context = EXPAND_PACKADD;
+	    xp->xp_pattern = arg;
+	    break;
+
 #if (defined(HAVE_LOCALE_H) || defined(X_LOCALE)) \
 	&& (defined(FEAT_GETTEXT) || defined(FEAT_MBYTE))
 	case CMD_language:
@@ -5846,6 +5851,7 @@
     {EXPAND_SYNTIME, "syntime"},
 #endif
     {EXPAND_SETTINGS, "option"},
+    {EXPAND_PACKADD, "packadd"},
     {EXPAND_SHELLCMD, "shellcmd"},
 #if defined(FEAT_SIGNS)
     {EXPAND_SIGN, "sign"},
diff --git a/src/ex_getln.c b/src/ex_getln.c
index 8db37d9..96c3a8c 100644
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -112,6 +112,7 @@
 #ifdef FEAT_CMDL_COMPL
 static int	expand_shellcmd(char_u *filepat, int *num_file, char_u ***file, int flagsarg);
 static int	ExpandRTDir(char_u *pat, int *num_file, char_u ***file, char *dirname[]);
+static int	ExpandPackAddDir(char_u *pat, int *num_file, char_u ***file);
 # ifdef FEAT_CMDHIST
 static char_u	*get_history_arg(expand_T *xp, int idx);
 # endif
@@ -4231,6 +4232,7 @@
 		|| context == EXPAND_COMPILER
 		|| context == EXPAND_OWNSYNTAX
 		|| context == EXPAND_FILETYPE
+		|| context == EXPAND_PACKADD
 		|| (context == EXPAND_TAGS && fname[0] == '/'))
 	    retval = vim_strnsave(fname, len);
 	else
@@ -4647,6 +4649,8 @@
     if (xp->xp_context == EXPAND_USER_LIST)
 	return ExpandUserList(xp, num_file, file);
 # endif
+    if (xp->xp_context == EXPAND_PACKADD)
+	return ExpandPackAddDir(pat, num_file, file);
 
     regmatch.regprog = vim_regcomp(pat, p_magic ? RE_MAGIC : 0);
     if (regmatch.regprog == NULL)
@@ -5180,6 +5184,58 @@
     return OK;
 }
 
+/*
+ * Expand loadplugin names:
+ * 'packpath'/pack/ * /opt/{pat}
+ */
+    static int
+ExpandPackAddDir(
+    char_u	*pat,
+    int		*num_file,
+    char_u	***file)
+{
+    char_u	*s;
+    char_u	*e;
+    char_u	*match;
+    garray_T	ga;
+    int		i;
+    int		pat_len;
+
+    *num_file = 0;
+    *file = NULL;
+    pat_len = (int)STRLEN(pat);
+    ga_init2(&ga, (int)sizeof(char *), 10);
+
+    s = alloc((unsigned)(pat_len + 26));
+    if (s == NULL)
+    {
+	ga_clear_strings(&ga);
+	return FAIL;
+    }
+    sprintf((char *)s, "pack/*/opt/%s*", pat);
+    globpath(p_pp, s, &ga, 0);
+    vim_free(s);
+
+    for (i = 0; i < ga.ga_len; ++i)
+    {
+	match = ((char_u **)ga.ga_data)[i];
+	s = gettail(match);
+	e = s + STRLEN(s);
+	mch_memmove(match, s, e - s + 1);
+    }
+
+    if (ga.ga_len == 0)
+	return FAIL;
+
+    /* Sort and remove duplicates which can happen when specifying multiple
+     * directories in dirnames. */
+    remove_duplicates(&ga);
+
+    *file = ga.ga_data;
+    *num_file = ga.ga_len;
+    return OK;
+}
+
 #endif
 
 #if defined(FEAT_CMDL_COMPL) || defined(FEAT_EVAL) || defined(PROTO)
diff --git a/src/testdir/test_packadd.vim b/src/testdir/test_packadd.vim
index aec80ef..091fec2 100644
--- a/src/testdir/test_packadd.vim
+++ b/src/testdir/test_packadd.vim
@@ -55,3 +55,24 @@
   packadd! mytest
   call assert_equal(new_rtp, &rtp)
 endfunc
+
+" Check command-line completion for 'packadd'
+func Test_packadd_completion()
+  let optdir1 = &packpath . '/pack/mine/opt'
+  let optdir2 = &packpath . '/pack/candidate/opt'
+
+  call mkdir(optdir1 . '/pluginA', 'p')
+  call mkdir(optdir1 . '/pluginC', 'p')
+  call mkdir(optdir2 . '/pluginB', 'p')
+  call mkdir(optdir2 . '/pluginC', 'p')
+
+  let li = []
+  call feedkeys(":packadd \<Tab>')\<C-B>call add(li, '\<CR>", 't')
+  call feedkeys(":packadd " . repeat("\<Tab>", 2) . "')\<C-B>call add(li, '\<CR>", 't')
+  call feedkeys(":packadd " . repeat("\<Tab>", 3) . "')\<C-B>call add(li, '\<CR>", 't')
+  call feedkeys(":packadd " . repeat("\<Tab>", 4) . "')\<C-B>call add(li, '\<CR>", 'tx')
+  call assert_equal("packadd pluginA", li[0])
+  call assert_equal("packadd pluginB", li[1])
+  call assert_equal("packadd pluginC", li[2])
+  call assert_equal("packadd ", li[3])
+endfunc
diff --git a/src/version.c b/src/version.c
index bc1b812..51c2b81 100644
--- a/src/version.c
+++ b/src/version.c
@@ -744,6 +744,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1492,
+/**/
     1491,
 /**/
     1490,
diff --git a/src/vim.h b/src/vim.h
index bf50dca..d0b979f 100644
--- a/src/vim.h
+++ b/src/vim.h
@@ -757,6 +757,7 @@
 #define EXPAND_USER		42
 #define EXPAND_SYNTIME		43
 #define EXPAND_USER_ADDR_TYPE	44
+#define EXPAND_PACKADD		45
 
 /* Values for exmode_active (0 is no exmode) */
 #define EXMODE_NORMAL		1
