diff options
author | Bram Moolenaar <Bram@vim.org> | 2016-06-06 21:07:52 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2016-06-06 21:07:52 +0200 |
commit | 45d2eeaad66939348893b9254171067b0457cd9d (patch) | |
tree | 9259906f02afa0de6c6752982ad0c936e08033e5 /src/testdir | |
parent | bbe8d91e695184771d7e45315258fab8eb3e6b07 (diff) | |
download | vim-git-45d2eeaad66939348893b9254171067b0457cd9d.tar.gz |
patch 7.4.1903v7.4.1903
Problem: When writing viminfo merging current history with history in
viminfo may drop recent history entries.
Solution: Add new format for viminfo lines, use it for history entries. Use
a timestamp for ordering the entries. Add test_settime().
Add the viminfo version. Does not do merging on timestamp yet.
Diffstat (limited to 'src/testdir')
-rw-r--r-- | src/testdir/test_viminfo.vim | 72 |
1 files changed, 70 insertions, 2 deletions
diff --git a/src/testdir/test_viminfo.vim b/src/testdir/test_viminfo.vim index a979ab996..9c2acf0c9 100644 --- a/src/testdir/test_viminfo.vim +++ b/src/testdir/test_viminfo.vim @@ -1,6 +1,7 @@ " Test for reading and writing .viminfo function Test_read_and_write() + call histdel(':') let lines = [ \ '# comment line', \ '*encoding=utf-8', @@ -18,14 +19,16 @@ function Test_read_and_write() for line in lines if line[0] == '|' if done == 0 - call assert_equal('|copied as-is', line) + call assert_equal('|1,2', line) elseif done == 1 + call assert_equal('|copied as-is', line) + elseif done == 2 call assert_equal('|and one more', line) endif let done += 1 endif endfor - call assert_equal(2, done) + call assert_equal(3, done) call delete('Xviminfo') endfunc @@ -48,3 +51,68 @@ func Test_global_vars() call delete('Xviminfo') set viminfo-=! endfunc + +func Test_cmdline_history() + call histdel(':') + call test_settime(11) + call histadd(':', "echo 'one'") + call test_settime(12) + " split into two lines + let long800 = repeat(" 'eight'", 100) + call histadd(':', "echo " . long800) + call test_settime(13) + " split into three lines + let long1400 = repeat(" 'fourteeeeen'", 100) + call histadd(':', "echo " . long1400) + wviminfo Xviminfo + let lines = readfile('Xviminfo') + let done_colon = 0 + let done_bar = 0 + let lnum = 0 + while lnum < len(lines) + let line = lines[lnum] | let lnum += 1 + if line[0] == ':' + if done_colon == 0 + call assert_equal(":\x161408", line) + let line = lines[lnum] | let lnum += 1 + call assert_equal('<echo ' . long1400, line) + elseif done_colon == 1 + call assert_equal(":\x16808", line) + let line = lines[lnum] | let lnum += 1 + call assert_equal("<echo " . long800, line) + elseif done_colon == 2 + call assert_equal(":echo 'one'", line) + endif + let done_colon += 1 + elseif line[0:4] == '|2,0,' + if done_bar == 0 + call assert_equal("|2,0,13,,>1407", line) + let line = lines[lnum] | let lnum += 1 + call assert_equal('|<"echo ' . long1400[0:484], line) + let line = lines[lnum] | let lnum += 1 + call assert_equal('|<' . long1400[485:974], line) + let line = lines[lnum] | let lnum += 1 + call assert_equal('|<' . long1400[975:] . '"', line) + elseif done_bar == 1 + call assert_equal('|2,0,12,,>807', line) + let line = lines[lnum] | let lnum += 1 + call assert_equal('|<"echo ' . long800[0:484], line) + let line = lines[lnum] | let lnum += 1 + call assert_equal('|<' . long800[485:] . '"', line) + elseif done_bar == 2 + call assert_equal("|2,0,11,,\"echo 'one'\"", line) + endif + let done_bar += 1 + endif + endwhile + call assert_equal(3, done_colon) + call assert_equal(3, done_bar) + + call histdel(':') + rviminfo Xviminfo + call assert_equal("echo " . long1400, histget(':', -1)) + call assert_equal("echo " . long800, histget(':', -2)) + call assert_equal("echo 'one'", histget(':', -3)) + + call delete('Xviminfo') +endfunc |