Test for wordcount() function STARTTEST :so small.vim :so mbyte.vim :set enc=utf8 :set selection=inclusive fileformat=unix fileformats=unix :new :fu DoRecordWin(...) : wincmd k : if exists("a:1") : call cursor(a:1) : endif : let result=[] : call add(result, g:test) : call add(result, getline(1, '$')) : call add(result, wordcount()) : wincmd j : return result :endfu :fu PutInWindow(args) : wincmd k : %d _ : call append(1, a:args) : wincmd j :endfu :fu Log() : $put ='----' : $put =remove(g:log,0) : $put =string(g:log) :endfu :fu! STL() : if mode() =~? 'V' : let g:visual_stat=wordcount() : endif : return string(wordcount()) :endfu :let g:test="Test 1: empty window" :let log=DoRecordWin() :call Log() :" :let g:test="Test 2: some words, cursor at start" :call PutInWindow('one two three') :let log=DoRecordWin([1,1,0]) :call Log() :" :let g:test="Test 3: some words, cursor at end" :call PutInWindow('one two three') :let log=DoRecordWin([2,99,0]) :call Log() :" :let g:test="Test 4: some words, cursor at end, ve=all" :set ve=all :call PutInWindow('one two three') :let log=DoRecordWin([2,99,0]) :call Log() :set ve= :" :let g:test="Test 5: several lines with words" :call PutInWindow(['one two three', 'one two three', 'one two three']) :let log=DoRecordWin([4,99,0]) :call Log() :" :let g:test="Test 6: one line with BOM set" :call PutInWindow('one two three') :wincmd k :set bomb :w! Xtest :wincmd j :let log=DoRecordWin([2,99,0]) :call Log() :wincmd k :set nobomb :w! :wincmd j :" :let g:test="Test 7: one line with multibyte words" :call PutInWindow(['Äne M¤ne Müh']) :let log=DoRecordWin([2,99,0]) :call Log() :" :let g:test="Test 8: several lines with multibyte words" :call PutInWindow(['Äne M¤ne Müh', 'und raus bist dü!']) :let log=DoRecordWin([3,99,0]) :call Log() :" :let g:test="Test 9: visual mode, complete buffer" :call PutInWindow(['Äne M¤ne Müh', 'und raus bist dü!']) :wincmd k :set ls=2 stl=%{STL()} :" start visual mode quickly and select complete buffer :0 V2jy :set stl= ls=1 :let log=DoRecordWin([3,99,0]) :let log[2]=g:visual_stat :call Log() :" :let g:test="Test 10: visual mode (empty)" :call PutInWindow(['Äne M¤ne Müh', 'und raus bist dü!']) :wincmd k :set ls=2 stl=%{STL()} :" start visual mode quickly and select complete buffer :0 v$y :set stl= ls=1 :let log=DoRecordWin([3,99,0]) :let log[2]=g:visual_stat :call Log() :" :let g:test="Test 11: visual mode, single line" :call PutInWindow(['Äne M¤ne Müh', 'und raus bist dü!']) :wincmd k :set ls=2 stl=%{STL()} :" start visual mode quickly and select complete buffer :2 0v$y :set stl= ls=1 :let log=DoRecordWin([3,99,0]) :let log[2]=g:visual_stat :call Log() :" :/^RESULT test/,$w! test.out :qa! ENDTEST RESULT test: