summaryrefslogtreecommitdiffstats
path: root/src/testdir/test_conceal.vim
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2019-12-11 20:12:26 +0100
committerBram Moolenaar <Bram@vim.org>2019-12-11 20:12:26 +0100
commit213ed008bbcd9fe0d3329b17f5f4af0169e448ff (patch)
treed299adc9449b8badf79772e81ba98b556504153c /src/testdir/test_conceal.vim
parent4954019c93a2bb5a0b1af54b5961c933beeb56f4 (diff)
patch 8.1.2421: test88 is old stylev8.1.2421
Problem: Test88 is old style. Solution: Turn into a new style test. (Yegappan Lakshmanan, closes #5347)
Diffstat (limited to 'src/testdir/test_conceal.vim')
-rw-r--r--src/testdir/test_conceal.vim102
1 files changed, 101 insertions, 1 deletions
diff --git a/src/testdir/test_conceal.vim b/src/testdir/test_conceal.vim
index bec21643b3..af0c3b8f79 100644
--- a/src/testdir/test_conceal.vim
+++ b/src/testdir/test_conceal.vim
@@ -1,5 +1,4 @@
" Tests for 'conceal'.
-" Also see test88.in (should be converted to a test function here).
source check.vim
CheckFeature conceal
@@ -155,3 +154,104 @@ func Test_conceal_resize_term()
call StopVimInTerminal(buf)
call delete('XTest_conceal_resize')
endfunc
+
+" Tests for correct display (cursor column position) with +conceal and
+" tabulators. Need to run this test in a separate Vim instance. Otherwise the
+" screen is not updated (lazy redraw) and the cursor position is wrong.
+func Test_conceal_cursor_pos()
+ let code =<< trim [CODE]
+ :let l = ['start:', '.concealed. text', "|concealed|\ttext"]
+ :let l += ['', "\t.concealed.\ttext", "\t|concealed|\ttext", '']
+ :let l += [".a.\t.b.\t.c.\t.d.", "|a|\t|b|\t|c|\t|d|"]
+ :call append(0, l)
+ :call cursor(1, 1)
+ :" Conceal settings.
+ :set conceallevel=2
+ :set concealcursor=nc
+ :syntax match test /|/ conceal
+ :" Save current cursor position. Only works in <expr> mode, can't be used
+ :" with :normal because it moves the cursor to the command line. Thanks
+ :" to ZyX <zyx.vim@gmail.com> for the idea to use an <expr> mapping.
+ :let curpos = []
+ :nnoremap <expr> GG ":let curpos += ['".screenrow().":".screencol()."']\n"
+ :normal ztj
+ GGk
+ :" We should end up in the same column when running these commands on the
+ :" two lines.
+ :normal ft
+ GGk
+ :normal $
+ GGk
+ :normal 0j
+ GGk
+ :normal ft
+ GGk
+ :normal $
+ GGk
+ :normal 0j0j
+ GGk
+ :" Same for next test block.
+ :normal ft
+ GGk
+ :normal $
+ GGk
+ :normal 0j
+ GGk
+ :normal ft
+ GGk
+ :normal $
+ GGk
+ :normal 0j0j
+ GGk
+ :" And check W with multiple tabs and conceals in a line.
+ :normal W
+ GGk
+ :normal W
+ GGk
+ :normal W
+ GGk
+ :normal $
+ GGk
+ :normal 0j
+ GGk
+ :normal W
+ GGk
+ :normal W
+ GGk
+ :normal W
+ GGk
+ :normal $
+ GGk
+ :set lbr
+ :normal $
+ GGk
+ :set list listchars=tab:>-
+ :normal 0
+ GGk
+ :normal W
+ GGk
+ :normal W
+ GGk
+ :normal W
+ GGk
+ :normal $
+ GGk
+ :call writefile(curpos, 'Xconceal_curpos.out')
+ :q!
+
+ [CODE]
+ call writefile(code, 'XTest_conceal_curpos')
+
+ if RunVim([], [], '-s XTest_conceal_curpos')
+ call assert_equal([
+ \ '2:1', '2:17', '2:20', '3:1', '3:17', '3:20', '5:8', '5:25',
+ \ '5:28', '6:8', '6:25', '6:28', '8:1', '8:9', '8:17', '8:25',
+ \ '8:27', '9:1', '9:9', '9:17', '9:25', '9:26', '9:26', '9:1',
+ \ '9:9', '9:17', '9:25', '9:26'], readfile('Xconceal_curpos.out'))
+ endif
+
+ call delete('Xconceal_curpos.out')
+ call delete('XTest_conceal_curpos')
+endfunc
+
+" vim: shiftwidth=2 sts=2 expandtab