Patch 7.4.1494
Problem: clr_history() does not work properly.
Solution: Increment hisptr. Add a test. (Yegappan Lakshmanan)
Files: src/ex_getln.c, src/testdir/test_history.vim,
src/testdir/Make_all.mak
*** ../vim-7.4.1493/src/ex_getln.c 2016-03-05 17:41:43.109188989 +0100
--- src/ex_getln.c 2016-03-05 21:00:41.732634808 +0100
***************
*** 5783,5788 ****
--- 5783,5789 ----
{
vim_free(hisptr->hisstr);
clear_hist_entry(hisptr);
+ hisptr++;
}
hisidx[histype] = -1; /* mark history as cleared */
hisnum[histype] = 0; /* reset identifier counter */
*** ../vim-7.4.1493/src/testdir/test_history.vim 2016-03-05
21:20:37.888048678 +0100
--- src/testdir/test_history.vim 2016-03-05 20:59:45.425226949 +0100
***************
*** 0 ****
--- 1,65 ----
+ " Tests for the history functions
+
+ if !has('cmdline_hist')
+ finish
+ endif
+
+ set history=7
+
+ function History_Tests(hist)
+ " First clear the history
+ call histadd(a:hist, 'dummy')
+ call assert_true(histdel(a:hist))
+ call assert_equal(-1, histnr(a:hist))
+ call assert_equal('', histget(a:hist))
+
+ call assert_true(histadd(a:hist, 'ls'))
+ call assert_true(histadd(a:hist, 'buffers'))
+ call assert_equal('buffers', histget(a:hist))
+ call assert_equal('ls', histget(a:hist, -2))
+ call assert_equal('ls', histget(a:hist, 1))
+ call assert_equal('', histget(a:hist, 5))
+ call assert_equal('', histget(a:hist, -5))
+ call assert_equal(2, histnr(a:hist))
+ call assert_true(histdel(a:hist, 2))
+ call assert_false(histdel(a:hist, 7))
+ call assert_equal(1, histnr(a:hist))
+ call assert_equal('ls', histget(a:hist, -1))
+
+ call assert_true(histadd(a:hist, 'buffers'))
+ call assert_true(histadd(a:hist, 'ls'))
+ call assert_equal('ls', histget(a:hist, -1))
+ call assert_equal(4, histnr(a:hist))
+
+ " Test for removing entries matching a pattern
+ for i in range(1, 3)
+ call histadd(a:hist, 'text_' . i)
+ endfor
+ call assert_true(histdel(a:hist, 'text_\d\+'))
+ call assert_equal('ls', histget(a:hist, -1))
+
+ " Test for freeing the entire history list
+ for i in range(1, 7)
+ call histadd(a:hist, 'text_' . i)
+ endfor
+ call histdel(a:hist)
+ for i in range(1, 7)
+ call assert_equal('', histget(a:hist, i))
+ call assert_equal('', histget(a:hist, i - 7 - 1))
+ endfor
+ endfunction
+
+ function Test_History()
+ for h in ['cmd', ':', '', 'search', '/', '?', 'expr', '=', 'input', '@',
'debug', '>']
+ call History_Tests(h)
+ endfor
+
+ " Negative tests
+ call assert_false(histdel('abc'))
+ call assert_equal('', histget('abc'))
+ call assert_fails('call histdel([])', 'E730:')
+ call assert_equal('', histget(10))
+ call assert_fails('call histget([])', 'E730:')
+ call assert_equal(-1, histnr('abc'))
+ call assert_fails('call histnr([])', 'E730:')
+ endfunction
*** ../vim-7.4.1493/src/testdir/Make_all.mak 2016-03-05 17:25:34.791256346
+0100
--- src/testdir/Make_all.mak 2016-03-05 20:59:45.425226949 +0100
***************
*** 175,180 ****
--- 175,181 ----
test_cdo.res \
test_channel.res \
test_hardcopy.res \
+ test_history.res \
test_increment.res \
test_json.res \
test_langmap.res \
*** ../vim-7.4.1493/src/version.c 2016-03-05 20:54:28.220563734 +0100
--- src/version.c 2016-03-05 21:02:16.819634968 +0100
***************
*** 745,746 ****
--- 745,748 ----
{ /* Add new patch number below this line */
+ /**/
+ 1494,
/**/
--
The only way the average employee can speak to an executive is by taking a
second job as a golf caddie.
(Scott Adams - The Dilbert principle)
/// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.