diff --git a/src/cmdhist.c b/src/cmdhist.c
index 7cdcee6..684c08e 100644
--- a/src/cmdhist.c
+++ b/src/cmdhist.c
@@ -767,7 +767,8 @@
 		if (i == hislen)
 		    i = 0;
 		if (hist[i].hisstr != NULL
-			&& hist[i].hisnum >= j && hist[i].hisnum <= k)
+			&& hist[i].hisnum >= j && hist[i].hisnum <= k
+			&& !message_filtered(hist[i].hisstr))
 		{
 		    msg_putchar('\n');
 		    sprintf((char *)IObuff, "%c%6d  ", i == idx ? '>' : ' ',
diff --git a/src/testdir/test_history.vim b/src/testdir/test_history.vim
index 19490f2..b288abc 100644
--- a/src/testdir/test_history.vim
+++ b/src/testdir/test_history.vim
@@ -96,6 +96,60 @@
   call assert_fails('history xyz', 'E488:')
   call assert_fails('history ,abc', 'E488:')
   call assert_fails('call histdel(":", "\\%(")', 'E53:')
+
+  " Test for filtering the history list
+  let hist_filter = execute(':filter /_\d/ :history all')->split('\n')
+  call assert_equal(20, len(hist_filter))
+  let expected = ['      #  cmd history',
+               \ '      2  text_2',
+               \ '      3  text_3',
+               \ '>     4  text_4',
+               \ '      #  search history',
+               \ '      2  text_2',
+               \ '      3  text_3',
+               \ '>     4  text_4',
+               \ '      #  expr history',
+               \ '      2  text_2',
+               \ '      3  text_3',
+               \ '>     4  text_4',
+               \ '      #  input history',
+               \ '      2  text_2',
+               \ '      3  text_3',
+               \ '>     4  text_4',
+               \ '      #  debug history',
+               \ '      2  text_2',
+               \ '      3  text_3',
+               \ '>     4  text_4']
+  call assert_equal(expected, hist_filter)
+
+  let cmds = {'c': 'cmd', 's': 'search', 'e': 'expr', 'i': 'input', 'd': 'debug'}
+  for h in sort(keys(cmds))
+    " find some items
+    let hist_filter = execute(':filter /_\d/ :history ' .. h)->split('\n')
+    call assert_equal(4, len(hist_filter))
+
+    let expected = ['      #  ' .. cmds[h] .. ' history',
+               \ '      2  text_2',
+               \ '      3  text_3',
+               \ '>     4  text_4']
+    call assert_equal(expected, hist_filter)
+
+    " Search for an item that is not there
+    let hist_filter = execute(':filter /XXXX/ :history ' .. h)->split('\n')
+    call assert_equal(1, len(hist_filter))
+
+    let expected = ['      #  ' .. cmds[h] .. ' history']
+    call assert_equal(expected, hist_filter)
+
+    " Invert the filter condition, find non-matches
+    let hist_filter = execute(':filter! /_3$/ :history ' .. h)->split('\n')
+    call assert_equal(3, len(hist_filter))
+
+    let expected = ['      #  ' .. cmds[h] .. ' history',
+               \ '      2  text_2',
+               \ '>     4  text_4']
+    call assert_equal(expected, hist_filter)
+  endfor
 endfunction
 
 function Test_history_truncates_long_entry()
diff --git a/src/version.c b/src/version.c
index ac1a1f4..f6a7db8 100644
--- a/src/version.c
+++ b/src/version.c
@@ -705,6 +705,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    439,
+/**/
     438,
 /**/
     437,
