diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index c58c414..06bff80 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -3895,8 +3895,8 @@
     }
 
     rettv->vval.v_string = vim_strsave(IS_USER_CMDIDX(ea.cmdidx)
-				    ? get_user_commands(NULL, ea.useridx)
-				    : cmdnames[ea.cmdidx].cmd_name);
+				 ? get_user_command_name(ea.useridx, ea.cmdidx)
+				 : cmdnames[ea.cmdidx].cmd_name);
 }
 #endif
 
@@ -5519,7 +5519,7 @@
 get_command_name(expand_T *xp UNUSED, int idx)
 {
     if (idx >= (int)CMD_SIZE)
-	return get_user_command_name(idx);
+	return expand_user_command_name(idx);
     return cmdnames[idx].cmd_name;
 }
 
diff --git a/src/proto/usercmd.pro b/src/proto/usercmd.pro
index e9230d5..2016c6b 100644
--- a/src/proto/usercmd.pro
+++ b/src/proto/usercmd.pro
@@ -1,8 +1,9 @@
 /* usercmd.c */
 char_u *find_ucmd(exarg_T *eap, char_u *p, int *full, expand_T *xp, int *complp);
 char_u *set_context_in_user_cmd(expand_T *xp, char_u *arg_in);
-char_u *get_user_command_name(int idx);
+char_u *expand_user_command_name(int idx);
 char_u *get_user_commands(expand_T *xp, int idx);
+char_u *get_user_command_name(int idx, int cmdidx);
 char_u *get_user_cmd_addr_type(expand_T *xp, int idx);
 char_u *get_user_cmd_flags(expand_T *xp, int idx);
 char_u *get_user_cmd_nargs(expand_T *xp, int idx);
diff --git a/src/testdir/test_cmdline.vim b/src/testdir/test_cmdline.vim
index 7ed626d..15ec7d8 100644
--- a/src/testdir/test_cmdline.vim
+++ b/src/testdir/test_cmdline.vim
@@ -482,6 +482,13 @@
   call assert_equal('', fullcommand(test_null_string()))
 
   call assert_equal('syntax', 'syn'->fullcommand())
+
+  command -buffer BufferLocalCommand :
+  command GlobalCommand :
+  call assert_equal('GlobalCommand', fullcommand('GlobalCom'))
+  call assert_equal('BufferLocalCommand', fullcommand('BufferL'))
+  delcommand BufferLocalCommand
+  delcommand GlobalCommand
 endfunc
 
 func Test_shellcmd_completion()
diff --git a/src/usercmd.c b/src/usercmd.c
index bc0b870..e35f4a5 100644
--- a/src/usercmd.c
+++ b/src/usercmd.c
@@ -289,7 +289,7 @@
 }
 
     char_u *
-get_user_command_name(int idx)
+expand_user_command_name(int idx)
 {
     return get_user_commands(NULL, idx - (int)CMD_SIZE);
 }
@@ -316,6 +316,32 @@
 }
 
 /*
+ * Get the name of user command "idx".  "cmdidx" can be CMD_USER or
+ * CMD_USER_BUF.
+ * Returns NULL if the command is not found.
+ */
+    char_u *
+get_user_command_name(int idx, int cmdidx)
+{
+    if (cmdidx == CMD_USER && idx < ucmds.ga_len)
+	return USER_CMD(idx)->uc_name;
+    if (cmdidx == CMD_USER_BUF)
+    {
+	// In cmdwin, the alternative buffer should be used.
+	buf_T *buf =
+#ifdef FEAT_CMDWIN
+		    (cmdwin_type != 0 && get_cmdline_type() == NUL)
+							  ? prevwin->w_buffer :
+#endif
+	    curbuf;
+
+	if (idx < buf->b_ucmds.ga_len)
+	    return USER_CMD_GA(&buf->b_ucmds, idx)->uc_name;
+    }
+    return NULL;
+}
+
+/*
  * Function given to ExpandGeneric() to obtain the list of user address type
  * names.
  */
diff --git a/src/version.c b/src/version.c
index 7d810aa..a5a3097 100644
--- a/src/version.c
+++ b/src/version.c
@@ -756,6 +756,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    3414,
+/**/
     3413,
 /**/
     3412,
