diff --git a/src/ex_getln.c b/src/ex_getln.c
index 26fed59..ed9707a 100644
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -4519,25 +4519,32 @@
 	len = (int)STRLEN(file[i]) - 3;
 	if (len <= 0)
 	    continue;
-	if (STRCMP(file[i] + len, buf) == 0)
-	{
-	    /* remove the default language */
-	    file[i][len] = NUL;
-	}
-	else if (STRCMP(file[i] + len, "@en") == 0)
+	if (STRCMP(file[i] + len, "@en") == 0)
 	{
 	    /* Sorting on priority means the same item in another language may
 	     * be anywhere.  Search all items for a match up to the "@en". */
 	    for (j = 0; j < num_file; ++j)
-		if (j != i
-			&& (int)STRLEN(file[j]) == len + 3
-			&& STRNCMP(file[i], file[j], len + 1) == 0)
+		if (j != i && (int)STRLEN(file[j]) == len + 3
+			   && STRNCMP(file[i], file[j], len + 1) == 0)
 		    break;
 	    if (j == num_file)
 		/* item only exists with @en, remove it */
 		file[i][len] = NUL;
 	}
     }
+
+    if (*buf != NUL)
+	for (i = 0; i < num_file; ++i)
+	{
+	    len = (int)STRLEN(file[i]) - 3;
+	    if (len <= 0)
+		continue;
+	    if (STRCMP(file[i] + len, buf) == 0)
+	    {
+		/* remove the default language */
+		file[i][len] = NUL;
+	    }
+	}
 }
 #endif
 
diff --git a/src/testdir/test_help_tagjump.vim b/src/testdir/test_help_tagjump.vim
index f486583..c3249d8 100644
--- a/src/testdir/test_help_tagjump.vim
+++ b/src/testdir/test_help_tagjump.vim
@@ -26,3 +26,118 @@
   call assert_true(getline('.') =~ '\*arglistid()\*')
   helpclose
 endfunc
+
+let s:langs = ['en', 'ab', 'ja']
+
+func s:doc_config_setup()
+  let s:helpfile_save = &helpfile
+  let &helpfile="Xdir1/doc-en/doc/testdoc.txt"
+  let s:rtp_save = &rtp
+  let &rtp="Xdir1/doc-en"
+  if has('multi_lang')
+    let s:helplang_save=&helplang
+  endif
+
+  call delete('Xdir1', 'rf')
+
+  for lang in s:langs
+    if lang ==# 'en'
+      let tagfname = 'tags'
+      let docfname = 'testdoc.txt'
+    else
+      let tagfname = 'tags-' . lang
+      let docfname = 'testdoc.' . lang . 'x'
+    endif
+    let docdir = "Xdir1/doc-" . lang . "/doc"
+    call mkdir(docdir, "p")
+    call writefile(["\t*test-char*", "\t*test-col*"], docdir . '/' . docfname)
+    call writefile(["test-char\t" . docfname . "\t/*test-char*",
+          \         "test-col\t" . docfname . "\t/*test-col*"],
+          \         docdir . '/' . tagfname)
+  endfor
+endfunc
+
+func s:doc_config_teardown()
+  call delete('Xdir1', 'rf')
+
+  let &helpfile = s:helpfile_save
+  let &rtp = s:rtp_save
+  if has('multi_lang')
+    let &helplang = s:helplang_save
+  endif
+endfunc
+
+func s:get_cmd_compl_list(cmd)
+  let list = []
+  let str = ''
+  for cnt in range(1, 999)
+    call feedkeys(a:cmd . repeat("\<Tab>", cnt) . "'\<C-B>let str='\<CR>", 'tx')
+    if str ==# a:cmd[1:]
+      break
+    endif
+    call add(list, str)
+  endfor
+  return list
+endfunc
+
+func Test_help_complete()
+  try
+    let list = []
+    call s:doc_config_setup()
+
+    " 'helplang=' and help file lang is 'en'
+    if has('multi_lang')
+      set helplang=
+    endif
+    let list = s:get_cmd_compl_list(":h test")
+    call assert_equal(['h test-col', 'h test-char'], list)
+
+    if has('multi_lang')
+      " 'helplang=ab' and help file lang is 'en'
+      set helplang=ab
+      let list = s:get_cmd_compl_list(":h test")
+      call assert_equal(['h test-col', 'h test-char'], list)
+
+      " 'helplang=' and help file lang is 'en' and 'ab'
+      set rtp+=Xdir1/doc-ab
+      set helplang=
+      let list = s:get_cmd_compl_list(":h test")
+      call assert_equal(['h test-col@en', 'h test-col@ab',
+            \             'h test-char@en', 'h test-char@ab'], list)
+
+      " 'helplang=ab' and help file lang is 'en' and 'ab'
+      set helplang=ab
+      let list = s:get_cmd_compl_list(":h test")
+      call assert_equal(['h test-col', 'h test-col@en',
+            \             'h test-char', 'h test-char@en'], list)
+
+      " 'helplang=' and help file lang is 'en', 'ab' and 'ja'
+      set rtp+=Xdir1/doc-ja
+      set helplang=
+      let list = s:get_cmd_compl_list(":h test")
+      call assert_equal(['h test-col@en', 'h test-col@ab',
+            \             'h test-col@ja', 'h test-char@en',
+            \             'h test-char@ab', 'h test-char@ja'], list)
+
+      " 'helplang=ab' and help file lang is 'en', 'ab' and 'ja'
+      set helplang=ab
+      let list = s:get_cmd_compl_list(":h test")
+      call assert_equal(['h test-col', 'h test-col@en',
+            \             'h test-col@ja', 'h test-char',
+            \             'h test-char@en', 'h test-char@ja'], list)
+
+      " 'helplang=ab,ja' and help file lang is 'en', 'ab' and 'ja'
+      set helplang=ab,ja
+      let list = s:get_cmd_compl_list(":h test")
+      call assert_equal(['h test-col', 'h test-col@ja',
+            \             'h test-col@en', 'h test-char',
+            \             'h test-char@ja', 'h test-char@en'], list)
+    endif
+  catch
+    call assert_exception('X')
+  finally
+    call s:doc_config_teardown()
+  endtry
+endfunc
+
+" vim: et sw=2:
diff --git a/src/version.c b/src/version.c
index 0191775..4dafb84 100644
--- a/src/version.c
+++ b/src/version.c
@@ -754,6 +754,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1820,
+/**/
     1819,
 /**/
     1818,
