| " Test for :mksession, :mkview and :loadview in latin1 encoding |
| |
| set encoding=latin1 |
| scriptencoding latin1 |
| |
| if !has('multi_byte') || !has('mksession') |
| finish |
| endif |
| |
| source shared.vim |
| |
| func Test_mksession() |
| tabnew |
| let wrap_save = &wrap |
| set sessionoptions=buffers splitbelow fileencoding=latin1 |
| call setline(1, [ |
| \ 'start:', |
| \ 'no multibyte chAracter', |
| \ ' one leaDing tab', |
| \ ' four leadinG spaces', |
| \ 'two consecutive tabs', |
| \ 'two tabs in one line', |
| \ 'one ä multibyteCharacter', |
| \ 'aä Ä two multiByte characters', |
| \ 'Aäöü three mulTibyte characters' |
| \ ]) |
| let tmpfile = 'Xtemp' |
| exec 'w! ' . tmpfile |
| /^start: |
| set wrap |
| vsplit |
| norm! j16| |
| split |
| norm! j16| |
| split |
| norm! j16| |
| split |
| norm! j8| |
| split |
| norm! j8| |
| split |
| norm! j16| |
| split |
| norm! j16| |
| split |
| norm! j16| |
| wincmd l |
| |
| set nowrap |
| /^start: |
| norm! j16|3zl |
| split |
| norm! j016|3zl |
| split |
| norm! j016|3zl |
| split |
| norm! j08|3zl |
| split |
| norm! j08|3zl |
| split |
| norm! j016|3zl |
| split |
| norm! j016|3zl |
| split |
| norm! j016|3zl |
| split |
| call wincol() |
| mksession! Xtest_mks.out |
| let li = filter(readfile('Xtest_mks.out'), 'v:val =~# "\\(^ *normal! 0\\|^ *exe ''normal!\\)"') |
| let expected = [ |
| \ 'normal! 016|', |
| \ 'normal! 016|', |
| \ 'normal! 016|', |
| \ 'normal! 08|', |
| \ 'normal! 08|', |
| \ 'normal! 016|', |
| \ 'normal! 016|', |
| \ 'normal! 016|', |
| \ " exe 'normal! ' . s:c . '|zs' . 16 . '|'", |
| \ " normal! 016|", |
| \ " exe 'normal! ' . s:c . '|zs' . 16 . '|'", |
| \ " normal! 016|", |
| \ " exe 'normal! ' . s:c . '|zs' . 16 . '|'", |
| \ " normal! 016|", |
| \ " exe 'normal! ' . s:c . '|zs' . 8 . '|'", |
| \ " normal! 08|", |
| \ " exe 'normal! ' . s:c . '|zs' . 8 . '|'", |
| \ " normal! 08|", |
| \ " exe 'normal! ' . s:c . '|zs' . 16 . '|'", |
| \ " normal! 016|", |
| \ " exe 'normal! ' . s:c . '|zs' . 16 . '|'", |
| \ " normal! 016|", |
| \ " exe 'normal! ' . s:c . '|zs' . 16 . '|'", |
| \ " normal! 016|", |
| \ " exe 'normal! ' . s:c . '|zs' . 16 . '|'", |
| \ " normal! 016|" |
| \ ] |
| call assert_equal(expected, li) |
| tabclose! |
| |
| call delete('Xtest_mks.out') |
| call delete(tmpfile) |
| let &wrap = wrap_save |
| set sessionoptions& |
| endfunc |
| |
| func Test_mksession_winheight() |
| new |
| set winheight=10 |
| set winminheight=2 |
| mksession! Xtest_mks.out |
| source Xtest_mks.out |
| |
| call delete('Xtest_mks.out') |
| endfunc |
| |
| func Test_mksession_large_winheight() |
| set winheight=999 |
| mksession! Xtest_mks_winheight.out |
| set winheight& |
| source Xtest_mks_winheight.out |
| call delete('Xtest_mks_winheight.out') |
| endfunc |
| |
| func Test_mksession_arglist() |
| argdel * |
| next file1 file2 file3 file4 |
| mksession! Xtest_mks.out |
| source Xtest_mks.out |
| call assert_equal(['file1', 'file2', 'file3', 'file4'], argv()) |
| |
| call delete('Xtest_mks.out') |
| argdel * |
| endfunc |
| |
| func Test_mksession_one_buffer_two_windows() |
| edit Xtest1 |
| new Xtest2 |
| split |
| mksession! Xtest_mks.out |
| let lines = readfile('Xtest_mks.out') |
| let count1 = 0 |
| let count2 = 0 |
| let count2buf = 0 |
| for line in lines |
| if line =~ 'edit \f*Xtest1$' |
| let count1 += 1 |
| endif |
| if line =~ 'edit \f\{-}Xtest2' |
| let count2 += 1 |
| endif |
| if line =~ 'buffer \f\{-}Xtest2' |
| let count2buf += 1 |
| endif |
| endfor |
| call assert_equal(1, count1, 'Xtest1 count') |
| call assert_equal(2, count2, 'Xtest2 count') |
| call assert_equal(2, count2buf, 'Xtest2 buffer count') |
| |
| close |
| bwipe! |
| call delete('Xtest_mks.out') |
| endfunc |
| |
| if has('terminal') |
| |
| func Test_mksession_terminal_shell() |
| terminal |
| mksession! Xtest_mks.out |
| let lines = readfile('Xtest_mks.out') |
| let term_cmd = '' |
| for line in lines |
| if line =~ '^terminal' |
| let term_cmd = line |
| elseif line =~ 'badd.*' . &shell |
| call assert_report('unexpected shell line: ' . line) |
| endif |
| endfor |
| call assert_match('terminal ++curwin ++cols=\d\+ ++rows=\d\+\s*$', term_cmd) |
| |
| call Stop_shell_in_terminal(bufnr('%')) |
| call delete('Xtest_mks.out') |
| endfunc |
| |
| func Test_mksession_terminal_no_restore_cmdarg() |
| terminal ++norestore |
| mksession! Xtest_mks.out |
| let lines = readfile('Xtest_mks.out') |
| let term_cmd = '' |
| for line in lines |
| if line =~ '^terminal' |
| call assert_report('session must not restore teminal') |
| endif |
| endfor |
| |
| call Stop_shell_in_terminal(bufnr('%')) |
| call delete('Xtest_mks.out') |
| endfunc |
| |
| func Test_mksession_terminal_no_restore_funcarg() |
| call term_start(&shell, {'norestore': 1}) |
| mksession! Xtest_mks.out |
| let lines = readfile('Xtest_mks.out') |
| let term_cmd = '' |
| for line in lines |
| if line =~ '^terminal' |
| call assert_report('session must not restore teminal') |
| endif |
| endfor |
| |
| call Stop_shell_in_terminal(bufnr('%')) |
| call delete('Xtest_mks.out') |
| endfunc |
| |
| func Test_mksession_terminal_no_restore_func() |
| terminal |
| call term_setrestore(bufnr('%'), 'NONE') |
| mksession! Xtest_mks.out |
| let lines = readfile('Xtest_mks.out') |
| let term_cmd = '' |
| for line in lines |
| if line =~ '^terminal' |
| call assert_report('session must not restore teminal') |
| endif |
| endfor |
| |
| call Stop_shell_in_terminal(bufnr('%')) |
| call delete('Xtest_mks.out') |
| endfunc |
| |
| func Test_mksession_terminal_no_ssop() |
| terminal |
| set sessionoptions-=terminal |
| mksession! Xtest_mks.out |
| let lines = readfile('Xtest_mks.out') |
| let term_cmd = '' |
| for line in lines |
| if line =~ '^terminal' |
| call assert_report('session must not restore teminal') |
| endif |
| endfor |
| |
| call Stop_shell_in_terminal(bufnr('%')) |
| call delete('Xtest_mks.out') |
| set sessionoptions& |
| endfunc |
| |
| func Test_mksession_terminal_restore_other() |
| terminal |
| call term_setrestore(bufnr('%'), 'other') |
| mksession! Xtest_mks.out |
| let lines = readfile('Xtest_mks.out') |
| let term_cmd = '' |
| for line in lines |
| if line =~ '^terminal' |
| let term_cmd = line |
| endif |
| endfor |
| call assert_match('terminal ++curwin ++cols=\d\+ ++rows=\d\+ other', term_cmd) |
| |
| call Stop_shell_in_terminal(bufnr('%')) |
| call delete('Xtest_mks.out') |
| endfunc |
| |
| endif " has('terminal') |
| |
| |
| " vim: shiftwidth=2 sts=2 expandtab |