diff --git a/src/cmdexpand.c b/src/cmdexpand.c
index 7ab1bba..c408bd0 100644
--- a/src/cmdexpand.c
+++ b/src/cmdexpand.c
@@ -1606,7 +1606,8 @@
 static enum
 {
     EXP_BREAKPT_ADD,	// expand ":breakadd" sub-commands
-    EXP_BREAKPT_DEL	// expand ":breakdel" sub-commands
+    EXP_BREAKPT_DEL,	// expand ":breakdel" sub-commands
+    EXP_PROFDEL		// expand ":profdel" sub-commands
 } breakpt_expand_what;
 
 /*
@@ -1623,16 +1624,17 @@
 
     if (cmdidx == CMD_breakadd)
 	breakpt_expand_what = EXP_BREAKPT_ADD;
-    else
+    else if (cmdidx == CMD_breakdel)
 	breakpt_expand_what = EXP_BREAKPT_DEL;
+    else
+	breakpt_expand_what = EXP_PROFDEL;
 
     p = skipwhite(arg);
     if (*p == NUL)
 	return NULL;
     subcmd_start = p;
 
-    if (STRNCMP("file ", p, 5) == 0 ||
-	    STRNCMP("func ", p, 5) == 0)
+    if (STRNCMP("file ", p, 5) == 0 || STRNCMP("func ", p, 5) == 0)
     {
 	// :breakadd file [lnum] <filename>
 	// :breakadd func [lnum] <funcname>
@@ -2025,6 +2027,7 @@
 
 #ifdef FEAT_EVAL
 	case CMD_breakadd:
+	case CMD_profdel:
 	case CMD_breakdel:
 	    return set_context_in_breakadd_cmd(xp, arg, cmdidx);
 #endif
@@ -2432,11 +2435,19 @@
 
     if (idx >=0 && idx <= 3)
     {
+	// breakadd {expr, file, func, here}
 	if (breakpt_expand_what == EXP_BREAKPT_ADD)
 	    return (char_u *)opts[idx];
+	else if (breakpt_expand_what == EXP_BREAKPT_DEL)
+	{
+	    // breakdel {func, file, here}
+	    if (idx <= 2)
+		return (char_u *)opts[idx + 1];
+	}
 	else
 	{
-	    if (idx <= 2)
+	    // profdel {func, file}
+	    if (idx <= 1)
 		return (char_u *)opts[idx + 1];
 	}
     }
diff --git a/src/profiler.c b/src/profiler.c
index 00350ca..f1b9a40 100644
--- a/src/profiler.c
+++ b/src/profiler.c
@@ -376,7 +376,6 @@
     {
     case PEXP_SUBCMD:
 	return (char_u *)pexpand_cmds[idx];
-    // case PEXP_FUNC: TODO
     default:
 	return NULL;
     }
@@ -399,14 +398,20 @@
     if (*end_subcmd == NUL)
 	return;
 
-    if (end_subcmd - arg == 5 && STRNCMP(arg, "start", 5) == 0)
+    if ((end_subcmd - arg == 5 && STRNCMP(arg, "start", 5) == 0)
+	    || (end_subcmd - arg == 4 && STRNCMP(arg, "file", 4) == 0))
     {
 	xp->xp_context = EXPAND_FILES;
 	xp->xp_pattern = skipwhite(end_subcmd);
 	return;
     }
+    else if (end_subcmd - arg == 4 && STRNCMP(arg, "func", 4) == 0)
+    {
+	xp->xp_context = EXPAND_USER_FUNC;
+	xp->xp_pattern = skipwhite(end_subcmd);
+	return;
+    }
 
-    // TODO: expand function names after "func"
     xp->xp_context = EXPAND_NOTHING;
 }
 
diff --git a/src/testdir/test_cmdline.vim b/src/testdir/test_cmdline.vim
index 528668e..bdcecbf 100644
--- a/src/testdir/test_cmdline.vim
+++ b/src/testdir/test_cmdline.vim
@@ -3158,7 +3158,6 @@
   call assert_equal("\"breakdel   here   Xtest", @:)
   call feedkeys(":breakdel here \<Tab>\<C-B>\"\<CR>", 'tx')
   call assert_equal("\"breakdel here ", @:)
-
 endfunc
 
 " vim: shiftwidth=2 sts=2 expandtab
diff --git a/src/testdir/test_profile.vim b/src/testdir/test_profile.vim
index 1c7ef93..d95cbdd 100644
--- a/src/testdir/test_profile.vim
+++ b/src/testdir/test_profile.vim
@@ -434,6 +434,47 @@
 
   call feedkeys(":profile start test_prof\<C-A>\<C-B>\"\<CR>", 'tx')
   call assert_match('^"profile start.* test_profile\.vim', @:)
+
+  call feedkeys(":profile file test_prof\<Tab>\<C-B>\"\<CR>", 'tx')
+  call assert_match('"profile file test_profile\.vim', @:)
+  call feedkeys(":profile file  test_prof\<Tab>\<C-B>\"\<CR>", 'tx')
+  call assert_match('"profile file  test_profile\.vim', @:)
+  call feedkeys(":profile file test_prof \<Tab>\<C-B>\"\<CR>", 'tx')
+  call assert_match('"profile file test_prof ', @:)
+  call feedkeys(":profile file X1B2C3\<Tab>\<C-B>\"\<CR>", 'tx')
+  call assert_match('"profile file X1B2C3', @:)
+
+  func Xprof_test()
+  endfunc
+  call feedkeys(":profile func Xprof\<Tab>\<C-B>\"\<CR>", 'tx')
+  call assert_equal('"profile func Xprof_test', @:)
+  call feedkeys(":profile   func   Xprof\<Tab>\<C-B>\"\<CR>", 'tx')
+  call assert_equal('"profile   func   Xprof_test', @:)
+  call feedkeys(":profile func Xprof \<Tab>\<C-B>\"\<CR>", 'tx')
+  call assert_equal('"profile func Xprof ', @:)
+  call feedkeys(":profile func X1B2C3\<Tab>\<C-B>\"\<CR>", 'tx')
+  call assert_equal('"profile func X1B2C3', @:)
+
+  call feedkeys(":profdel \<C-A>\<C-B>\"\<CR>", 'tx')
+  call assert_equal('"profdel file func', @:)
+  call feedkeys(":profdel  fu\<Tab>\<C-B>\"\<CR>", 'tx')
+  call assert_equal('"profdel  func', @:)
+  call feedkeys(":profdel he\<Tab>\<C-B>\"\<CR>", 'tx')
+  call assert_equal('"profdel he', @:)
+  call feedkeys(":profdel here \<Tab>\<C-B>\"\<CR>", 'tx')
+  call assert_equal('"profdel here ', @:)
+  call feedkeys(":profdel file test_prof\<Tab>\<C-B>\"\<CR>", 'tx')
+  call assert_equal('"profdel file test_profile.vim', @:)
+  call feedkeys(":profdel file  X1B2C3\<Tab>\<C-B>\"\<CR>", 'tx')
+  call assert_equal('"profdel file  X1B2C3', @:)
+  call feedkeys(":profdel func Xprof\<Tab>\<C-B>\"\<CR>", 'tx')
+  call assert_equal('"profdel func Xprof_test', @:)
+  call feedkeys(":profdel func Xprof_test  \<Tab>\<C-B>\"\<CR>", 'tx')
+  call assert_equal('"profdel func Xprof_test  ', @:)
+  call feedkeys(":profdel func  X1B2C3\<Tab>\<C-B>\"\<CR>", 'tx')
+  call assert_equal('"profdel func  X1B2C3', @:)
+
+  delfunc Xprof_test
 endfunc
 
 func Test_profile_errors()
diff --git a/src/version.c b/src/version.c
index b634d8b..51b6370 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    4570,
+/**/
     4569,
 /**/
     4568,
