diff --git a/src/ex_cmds.c b/src/ex_cmds.c
index 4910491..c8a93bc 100644
--- a/src/ex_cmds.c
+++ b/src/ex_cmds.c
@@ -5341,10 +5341,18 @@
 {
     char    *p1;
     char    *p2;
+    int	    cmp;
 
     p1 = *(char **)s1 + strlen(*(char **)s1) + 1;
     p2 = *(char **)s2 + strlen(*(char **)s2) + 1;
-    return strcmp(p1, p2);
+
+    // Compare by help heuristic number first.
+    cmp = strcmp(p1, p2);
+    if (cmp != 0)
+	return cmp;
+
+    // Compare by strings as tie-breaker when same heuristic number.
+    return strcmp(*(char **)s1, *(char **)s2);
 }
 
 /*
diff --git a/src/testdir/test_cd.vim b/src/testdir/test_cd.vim
index bdb26cd..05d3877 100644
--- a/src/testdir/test_cd.vim
+++ b/src/testdir/test_cd.vim
@@ -106,3 +106,18 @@
   call chdir(topdir)
   call delete('Xdir', 'rf')
 endfunc
+
+func Test_cd_completion()
+  call mkdir('XComplDir1', 'p')
+  call mkdir('XComplDir2', 'p')
+  call writefile([], 'XComplFile')
+
+  for cmd in ['cd', 'chdir', 'lcd', 'lchdir', 'tcd', 'tchdir']
+    call feedkeys(':' .. cmd .. " XCompl\<C-A>\<C-B>\"\<CR>", 'tx')
+    call assert_equal('"' .. cmd .. ' XComplDir1/ XComplDir2/', @:)
+  endfor
+
+  call delete('XComplDir1', 'd')
+  call delete('XComplDir2', 'd')
+  call delete('XComplFile')
+endfunc
diff --git a/src/testdir/test_cmdline.vim b/src/testdir/test_cmdline.vim
index 837ef63..38b5826 100644
--- a/src/testdir/test_cmdline.vim
+++ b/src/testdir/test_cmdline.vim
@@ -553,6 +553,14 @@
   endif
 endfunc
 
+func Test_cmdline_complete_bang()
+  if executable('whoami')
+    return
+  endif
+  call feedkeys(":!whoam\<C-A>\<C-B>\"\<CR>", 'tx')
+  call assert_match('^".*\<whoami\>', @:)
+endfunc
+
 funct Test_cmdline_complete_languages()
   let lang = substitute(execute('language messages'), '.*"\(.*\)"$', '\1', '')
 
@@ -575,6 +583,15 @@
   endif
 endfunc
 
+func Test_cmdline_complete_env_variable()
+  let $X_VIM_TEST_COMPLETE_ENV = 'foo'
+
+  call feedkeys(":edit $X_VIM_TEST_COMPLETE_E\<C-A>\<C-B>\"\<CR>", 'tx')
+  call assert_match('"edit $X_VIM_TEST_COMPLETE_ENV', @:)
+
+  unlet $X_VIM_TEST_COMPLETE_ENV
+endfunc
+
 func Test_cmdline_write_alternatefile()
   new
   call setline('.', ['one', 'two'])
diff --git a/src/testdir/test_help.vim b/src/testdir/test_help.vim
index 5dd937a..4f46a44 100644
--- a/src/testdir/test_help.vim
+++ b/src/testdir/test_help.vim
@@ -55,3 +55,8 @@
   call delete('Xruntime', 'rf')
   let &rtp = rtp_save
 endfunc
+
+func Test_help_completion()
+  call feedkeys(":help :undo\<C-A>\<C-B>\"\<CR>", 'tx')
+  call assert_equal('"help :undo :undoj :undol :undojoin :undolist', @:)
+endfunc
diff --git a/src/testdir/test_menu.vim b/src/testdir/test_menu.vim
index 0d6b78e..04d45d6 100644
--- a/src/testdir/test_menu.vim
+++ b/src/testdir/test_menu.vim
@@ -45,6 +45,10 @@
   imenu 2 Test.FooBar :let g:did_menu = 'insert'<CR>
   cmenu 2 Test.FooBar :let g:did_menu = 'cmdline'<CR>
   emenu n Test.FooBar
+
+  call feedkeys(":menu Test.FooB\<C-A>\<C-B>\"\<CR>", 'tx')
+  call assert_equal('"menu Test.FooBar', @:)
+
   call assert_equal('normal', g:did_menu)
   emenu v Test.FooBar
   call assert_equal('visual', g:did_menu)
diff --git a/src/testdir/test_options.vim b/src/testdir/test_options.vim
index 048356a..636a24d 100644
--- a/src/testdir/test_options.vim
+++ b/src/testdir/test_options.vim
@@ -201,6 +201,12 @@
   call feedkeys(":set di\<C-A>\<C-B>\"\<CR>", 'tx')
   call assert_equal('"set dictionary diff diffexpr diffopt digraph directory display', @:)
 
+  call feedkeys(":setlocal di\<C-A>\<C-B>\"\<CR>", 'tx')
+  call assert_equal('"setlocal dictionary diff diffexpr diffopt digraph directory display', @:)
+
+  call feedkeys(":setglobal di\<C-A>\<C-B>\"\<CR>", 'tx')
+  call assert_equal('"setglobal dictionary diff diffexpr diffopt digraph directory display', @:)
+
   " Expand boolan options. When doing :set no<Tab>
   " vim displays the options names without "no" but completion uses "no...".
   call feedkeys(":set nodi\<C-A>\<C-B>\"\<CR>", 'tx')
@@ -239,6 +245,7 @@
 
   call feedkeys(":set tags=./\\\\ dif\<C-A>\<C-B>\"\<CR>", 'tx')
   call assert_equal('"set tags=./\\ diff diffexpr diffopt', @:)
+
   set tags&
 endfunc
 
diff --git a/src/testdir/test_syntax.vim b/src/testdir/test_syntax.vim
index 21ee8dc..389294e 100644
--- a/src/testdir/test_syntax.vim
+++ b/src/testdir/test_syntax.vim
@@ -180,6 +180,11 @@
   call assert_match('^"syn match Boolean Character ', @:)
 endfunc
 
+func Test_echohl_completion()
+  call feedkeys(":echohl no\<C-A>\<C-B>\"\<CR>", 'tx')
+  call assert_equal('"echohl NonText Normal none', @:)
+endfunc
+
 func Test_syntax_arg_skipped()
   syn clear
   syntax case ignore
diff --git a/src/version.c b/src/version.c
index 0fc35dc..85c8462 100644
--- a/src/version.c
+++ b/src/version.c
@@ -743,6 +743,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    49,
+/**/
     48,
 /**/
     47,
