diff --git a/src/evalvars.c b/src/evalvars.c
index 6851eef..afbab79 100644
--- a/src/evalvars.c
+++ b/src/evalvars.c
@@ -2074,8 +2074,7 @@
     ht =
 #ifdef FEAT_CMDWIN
 	// In cmdwin, the alternative buffer should be used.
-	(cmdwin_type != 0 && get_cmdline_type() == NUL) ?
-	&prevwin->w_buffer->b_vars->dv_hashtab :
+	is_in_cmdwin() ? &prevwin->w_buffer->b_vars->dv_hashtab :
 #endif
 	&curbuf->b_vars->dv_hashtab;
     if (bdone < ht->ht_used)
@@ -2093,8 +2092,7 @@
     ht =
 #ifdef FEAT_CMDWIN
 	// In cmdwin, the alternative window should be used.
-	(cmdwin_type != 0 && get_cmdline_type() == NUL) ?
-	&prevwin->w_vars->dv_hashtab :
+	is_in_cmdwin() ? &prevwin->w_vars->dv_hashtab :
 #endif
 	&curwin->w_vars->dv_hashtab;
     if (wdone < ht->ht_used)
diff --git a/src/ex_getln.c b/src/ex_getln.c
index 258548e..2616afc 100644
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -4485,6 +4485,15 @@
 
     return cmdwin_result;
 }
+
+/*
+ * Return TRUE if in the cmdwin, not editing the command line.
+ */
+    int
+is_in_cmdwin(void)
+{
+    return cmdwin_type != 0 && get_cmdline_type() == NUL;
+}
 #endif // FEAT_CMDWIN
 
 /*
diff --git a/src/proto/ex_getln.pro b/src/proto/ex_getln.pro
index d047e39..d6f1911 100644
--- a/src/proto/ex_getln.pro
+++ b/src/proto/ex_getln.pro
@@ -38,6 +38,7 @@
 int get_cmdline_firstc(void);
 int get_list_range(char_u **str, int *num1, int *num2);
 char *check_cedit(void);
+int is_in_cmdwin(void);
 char_u *script_get(exarg_T *eap, char_u *cmd);
 void get_user_input(typval_T *argvars, typval_T *rettv, int inputdialog, int secret);
 /* vim: set ft=c : */
diff --git a/src/testdir/test_ins_complete.vim b/src/testdir/test_ins_complete.vim
index b0914d9..ee66418 100644
--- a/src/testdir/test_ins_complete.vim
+++ b/src/testdir/test_ins_complete.vim
@@ -373,6 +373,14 @@
   set completeopt&
 endfunc
 
+func s:ComplInCmdwin_GlobalCompletion(a, l, p)
+  return 'global'
+endfunc
+
+func s:ComplInCmdwin_LocalCompletion(a, l, p)
+  return 'local'
+endfunc
+
 func Test_compl_in_cmdwin()
   CheckFeature cmdwin
 
@@ -411,6 +419,47 @@
   call feedkeys("q::GetInput b:test_\<Tab>\<CR>:q\<CR>", 'tx!')
   call assert_equal('b:test_', input)
 
+
+  " Argument completion of buffer-local command
+  func s:ComplInCmdwin_GlobalCompletionList(a, l, p)
+    return ['global']
+  endfunc
+
+  func s:ComplInCmdwin_LocalCompletionList(a, l, p)
+    return ['local']
+  endfunc
+
+  func s:ComplInCmdwin_CheckCompletion(arg)
+    call assert_equal('local', a:arg)
+  endfunc
+
+  com! -nargs=1 -complete=custom,<SID>ComplInCmdwin_GlobalCompletion
+       \ TestCommand call s:ComplInCmdwin_CheckCompletion(<q-args>)
+  com! -buffer -nargs=1 -complete=custom,<SID>ComplInCmdwin_LocalCompletion
+       \ TestCommand call s:ComplInCmdwin_CheckCompletion(<q-args>)
+  call feedkeys("q:iTestCommand \<Tab>\<CR>", 'tx!')
+
+  com! -nargs=1 -complete=customlist,<SID>ComplInCmdwin_GlobalCompletionList
+       \ TestCommand call s:ComplInCmdwin_CheckCompletion(<q-args>)
+  com! -buffer -nargs=1 -complete=customlist,<SID>ComplInCmdwin_LocalCompletionList
+       \ TestCommand call s:ComplInCmdwin_CheckCompletion(<q-args>)
+
+  call feedkeys("q:iTestCommand \<Tab>\<CR>", 'tx!')
+
+  func! s:ComplInCmdwin_CheckCompletion(arg)
+    call assert_equal('global', a:arg)
+  endfunc
+  new
+  call feedkeys("q:iTestCommand \<Tab>\<CR>", 'tx!')
+  quit
+
+  delfunc s:ComplInCmdwin_GlobalCompletion
+  delfunc s:ComplInCmdwin_LocalCompletion
+  delfunc s:ComplInCmdwin_GlobalCompletionList
+  delfunc s:ComplInCmdwin_LocalCompletionList
+  delfunc s:ComplInCmdwin_CheckCompletion
+
+  delcom -buffer TestCommand
   delcom TestCommand
   delcom GetInput
   unlet w:test_winvar
diff --git a/src/usercmd.c b/src/usercmd.c
index 0050647..332f995 100644
--- a/src/usercmd.c
+++ b/src/usercmd.c
@@ -141,7 +141,11 @@
     /*
      * Look for buffer-local user commands first, then global ones.
      */
-    gap = &curbuf->b_ucmds;
+    gap =
+#ifdef FEAT_CMDWIN
+	is_in_cmdwin() ? &prevwin->w_buffer->b_ucmds :
+#endif
+	&curbuf->b_ucmds;
     for (;;)
     {
 	for (j = 0; j < gap->ga_len; ++j)
@@ -303,7 +307,7 @@
     // In cmdwin, the alternative buffer should be used.
     buf_T *buf =
 #ifdef FEAT_CMDWIN
-	(cmdwin_type != 0 && get_cmdline_type() == NUL) ? prevwin->w_buffer :
+	is_in_cmdwin() ? prevwin->w_buffer :
 #endif
 	curbuf;
 
@@ -330,10 +334,9 @@
 	// In cmdwin, the alternative buffer should be used.
 	buf_T *buf =
 #ifdef FEAT_CMDWIN
-		    (cmdwin_type != 0 && get_cmdline_type() == NUL)
-							  ? prevwin->w_buffer :
+		    is_in_cmdwin() ? prevwin->w_buffer :
 #endif
-	    curbuf;
+		    curbuf;
 
 	if (idx < buf->b_ucmds.ga_len)
 	    return USER_CMD_GA(&buf->b_ucmds, idx)->uc_name;
@@ -420,10 +423,9 @@
     // In cmdwin, the alternative buffer should be used.
     gap =
 #ifdef FEAT_CMDWIN
-	(cmdwin_type != 0 && get_cmdline_type() == NUL) ?
-	&prevwin->w_buffer->b_ucmds :
+	    is_in_cmdwin() ? &prevwin->w_buffer->b_ucmds :
 #endif
-	&curbuf->b_ucmds;
+	    &curbuf->b_ucmds;
     for (;;)
     {
 	for (i = 0; i < gap->ga_len; ++i)
diff --git a/src/version.c b/src/version.c
index fada362..b30979a 100644
--- a/src/version.c
+++ b/src/version.c
@@ -758,6 +758,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    3629,
+/**/
     3628,
 /**/
     3627,
