Mercurial > vim
view src/testdir/test_tabline.vim @ 35848:2156e8b7e7d4 v9.1.0642
patch 9.1.0642: Check that mapping rhs starts with lhs fails if not simplified
Commit: https://github.com/vim/vim/commit/9d997addc7bd0fd132a809cf497ed816e61fcd25
Author: zeertzjq <zeertzjq@outlook.com>
Date: Mon Jul 29 21:10:07 2024 +0200
patch 9.1.0642: Check that mapping rhs starts with lhs fails if not simplified
Problem: Check that mapping rhs starts with lhs doesn't work if lhs is
not simplified.
Solution: Keep track of the mapblock containing the alternative lhs and
also compare with it (zeertzjq).
fixes: #15376
closes: #15384
Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Mon, 29 Jul 2024 21:15:05 +0200 |
parents | 5dfaba11d7c3 |
children |
line wrap: on
line source
" Test for tabline source shared.vim source view_util.vim source check.vim source screendump.vim func TablineWithCaughtError() let s:func_in_tabline_called = 1 try call eval('unknown expression') catch endtry return '' endfunc func TablineWithError() let s:func_in_tabline_called = 1 call eval('unknown expression') return '' endfunc func Test_caught_error_in_tabline() if has('gui') set guioptions-=e endif let showtabline_save = &showtabline set showtabline=2 let s:func_in_tabline_called = 0 let tabline = '%{TablineWithCaughtError()}' let &tabline = tabline redraw! call assert_true(s:func_in_tabline_called) call assert_equal(tabline, &tabline) set tabline= let &showtabline = showtabline_save endfunc func Test_tabline_will_be_disabled_with_error() if has('gui') set guioptions-=e endif let showtabline_save = &showtabline set showtabline=2 let s:func_in_tabline_called = 0 let tabline = '%{TablineWithError()}' try let &tabline = tabline redraw! catch endtry call assert_true(s:func_in_tabline_called) call assert_equal('', &tabline) set tabline= let &showtabline = showtabline_save endfunc func Test_redrawtabline() if has('gui') set guioptions-=e endif let showtabline_save = &showtabline set showtabline=2 set tabline=%{bufnr('$')} edit Xtabline1 edit Xtabline2 redraw call assert_match(bufnr('$') . '', Screenline(1)) au BufAdd * redrawtabline badd Xtabline3 call assert_match(bufnr('$') . '', Screenline(1)) set tabline= let &showtabline = showtabline_save au! Bufadd endfunc " Test for the "%T" and "%X" flags in the 'tabline' option func MyTabLine() let s = '' for i in range(tabpagenr('$')) " set the tab page number (for mouse clicks) let s .= '%' . (i + 1) . 'T' " the label is made by MyTabLabel() let s .= ' %{MyTabLabel(' . (i + 1) . ')} ' endfor " after the last tab fill with TabLineFill and reset tab page nr let s .= '%T' " right-align the label to close the current tab page if tabpagenr('$') > 1 let s .= '%=%Xclose' endif return s endfunc func MyTabLabel(n) let buflist = tabpagebuflist(a:n) let winnr = tabpagewinnr(a:n) return bufname(buflist[winnr - 1]) endfunc func Test_tabline_flags() if has('gui') set guioptions-=e endif set tabline=%!MyTabLine() edit Xtabline1 tabnew Xtabline2 redrawtabline call assert_match('^ Xtabline1 Xtabline2\s\+close$', Screenline(1)) set tabline= %bw! endfunc function EmptyTabname() return "" endfunction function MakeTabLine() abort let titles = map(range(1, tabpagenr('$')), '"%( %" . v:val . "T%{EmptyTabname()}%T %)"') let sep = 'あ' let tabpages = join(titles, sep) return tabpages .. sep .. '%=%999X X' endfunction func Test_tabline_empty_group() " this was reading invalid memory set tabline=%!MakeTabLine() tabnew redraw! bw! set tabline= endfunc " When there are exactly 20 tabline format items (the exact size of the " initial tabline items array), test that we don't write beyond the size " of the array. func Test_tabline_20_format_items_no_overrun() set showtabline=2 let tabline = repeat('%#StatColorHi2#', 20) let &tabline = tabline redrawtabline set showtabline& tabline& endfunc func Test_mouse_click_in_tab() " This used to crash because TabPageIdxs[] was not initialized let lines =<< trim END tabnew set mouse=a exe "norm \<LeftMouse>" END call writefile(lines, 'Xclickscript', 'D') call RunVim([], [], "-e -s -S Xclickscript -c qa") endfunc func Test_tabline_showcmd() CheckScreendump let lines =<< trim END func MyTabLine() return '%S' endfunc set showtabline=2 set tabline=%!MyTabLine() set showcmdloc=tabline call setline(1, ['a', 'b', 'c']) set foldopen+=jump 1,2fold 3 END call writefile(lines, 'XTest_tabline', 'D') let buf = RunVimInTerminal('-S XTest_tabline', {'rows': 6}) call term_sendkeys(buf, "g") call VerifyScreenDump(buf, 'Test_tabline_showcmd_1', {}) " typing "gg" should open the fold call term_sendkeys(buf, "g") call VerifyScreenDump(buf, 'Test_tabline_showcmd_2', {}) call term_sendkeys(buf, "\<C-V>Gl") call VerifyScreenDump(buf, 'Test_tabline_showcmd_3', {}) call term_sendkeys(buf, "\<Esc>1234") call VerifyScreenDump(buf, 'Test_tabline_showcmd_4', {}) call term_sendkeys(buf, "\<Esc>:set tabline=\<CR>") call term_sendkeys(buf, ":\<CR>") call term_sendkeys(buf, "1234") call VerifyScreenDump(buf, 'Test_tabline_showcmd_5', {}) call StopVimInTerminal(buf) endfunc func TruncTabLine() return '%1T口口%2Ta' .. repeat('b', &columns - 4) .. '%999X%#TabLine#c' endfunc " Test 'tabline' with truncated double-width label at the start. func Test_tabline_truncated_double_width() tabnew redraw call assert_match('X$', Screenline(1)) let attr_TabLineFill = screenattr(1, &columns - 1) let attr_TabLine = screenattr(1, &columns) call assert_notequal(attr_TabLine, attr_TabLineFill) set tabline=%!TruncTabLine() redraw call assert_equal('<a' .. repeat('b', &columns - 4) .. 'c', Screenline(1)) call assert_equal(attr_TabLineFill, screenattr(1, &columns - 2)) call assert_equal(attr_TabLine, screenattr(1, &columns - 1)) call assert_equal(attr_TabLine, screenattr(1, &columns)) bw! set tabline= endfunc " vim: shiftwidth=2 sts=2 expandtab