xref: /vim-8.2.3635/src/testdir/test_conceal.vim (revision fcfe1a9b)
1" Tests for 'conceal'.
2" Also see test88.in (should be converted to a test function here).
3
4if !has('conceal')
5  throw 'Skipped: conceal feature missing'
6endif
7
8source screendump.vim
9if !CanRunVimInTerminal()
10  throw 'Skipped: cannot make screendumps'
11endif
12
13func Test_conceal_two_windows()
14  let code =<< trim [CODE]
15    let lines = ["one one one one one", "two |hidden| here", "three |hidden| three"]
16    call setline(1, lines)
17    syntax match test /|hidden|/ conceal
18    set conceallevel=2
19    set concealcursor=
20    exe "normal /here\r"
21    new
22    call setline(1, lines)
23    call setline(4, "Second window")
24    syntax match test /|hidden|/ conceal
25    set conceallevel=2
26    set concealcursor=nc
27    exe "normal /here\r"
28  [CODE]
29
30  call writefile(code, 'XTest_conceal')
31  " Check that cursor line is concealed
32  let buf = RunVimInTerminal('-S XTest_conceal', {})
33  call VerifyScreenDump(buf, 'Test_conceal_two_windows_01', {})
34
35  " Check that with concealed text vertical cursor movement is correct.
36  call term_sendkeys(buf, "k")
37  call VerifyScreenDump(buf, 'Test_conceal_two_windows_02', {})
38
39  " Check that with cursor line is not concealed
40  call term_sendkeys(buf, "j")
41  call term_sendkeys(buf, ":set concealcursor=\r")
42  call VerifyScreenDump(buf, 'Test_conceal_two_windows_03', {})
43
44  " Check that with cursor line is not concealed when moving cursor down
45  call term_sendkeys(buf, "j")
46  call VerifyScreenDump(buf, 'Test_conceal_two_windows_04', {})
47
48  " Check that with cursor line is not concealed when switching windows
49  call term_sendkeys(buf, "\<C-W>\<C-W>")
50  call VerifyScreenDump(buf, 'Test_conceal_two_windows_05', {})
51
52  " Check that with cursor line is only concealed in Normal mode
53  call term_sendkeys(buf, ":set concealcursor=n\r")
54  call VerifyScreenDump(buf, 'Test_conceal_two_windows_06n', {})
55  call term_sendkeys(buf, "a")
56  call VerifyScreenDump(buf, 'Test_conceal_two_windows_06i', {})
57  call term_sendkeys(buf, "\<Esc>/e")
58  call VerifyScreenDump(buf, 'Test_conceal_two_windows_06c', {})
59  call term_sendkeys(buf, "\<Esc>v")
60  call VerifyScreenDump(buf, 'Test_conceal_two_windows_06v', {})
61  call term_sendkeys(buf, "\<Esc>")
62
63  " Check that with cursor line is only concealed in Insert mode
64  call term_sendkeys(buf, ":set concealcursor=i\r")
65  call VerifyScreenDump(buf, 'Test_conceal_two_windows_07n', {})
66  call term_sendkeys(buf, "a")
67  call VerifyScreenDump(buf, 'Test_conceal_two_windows_07i', {})
68  call term_sendkeys(buf, "\<Esc>/e")
69  call VerifyScreenDump(buf, 'Test_conceal_two_windows_07c', {})
70  call term_sendkeys(buf, "\<Esc>v")
71  call VerifyScreenDump(buf, 'Test_conceal_two_windows_07v', {})
72  call term_sendkeys(buf, "\<Esc>")
73
74  " Check that with cursor line is only concealed in Command mode
75  call term_sendkeys(buf, ":set concealcursor=c\r")
76  call VerifyScreenDump(buf, 'Test_conceal_two_windows_08n', {})
77  call term_sendkeys(buf, "a")
78  call VerifyScreenDump(buf, 'Test_conceal_two_windows_08i', {})
79  call term_sendkeys(buf, "\<Esc>/e")
80  call VerifyScreenDump(buf, 'Test_conceal_two_windows_08c', {})
81  call term_sendkeys(buf, "\<Esc>v")
82  call VerifyScreenDump(buf, 'Test_conceal_two_windows_08v', {})
83  call term_sendkeys(buf, "\<Esc>")
84
85  " Check that with cursor line is only concealed in Visual mode
86  call term_sendkeys(buf, ":set concealcursor=v\r")
87  call VerifyScreenDump(buf, 'Test_conceal_two_windows_09n', {})
88  call term_sendkeys(buf, "a")
89  call VerifyScreenDump(buf, 'Test_conceal_two_windows_09i', {})
90  call term_sendkeys(buf, "\<Esc>/e")
91  call VerifyScreenDump(buf, 'Test_conceal_two_windows_09c', {})
92  call term_sendkeys(buf, "\<Esc>v")
93  call VerifyScreenDump(buf, 'Test_conceal_two_windows_09v', {})
94  call term_sendkeys(buf, "\<Esc>")
95
96  " Check moving the cursor while in insert mode.
97  call term_sendkeys(buf, ":set concealcursor=\r")
98  call term_sendkeys(buf, "a")
99  call VerifyScreenDump(buf, 'Test_conceal_two_windows_10', {})
100  call term_sendkeys(buf, "\<Down>")
101  call VerifyScreenDump(buf, 'Test_conceal_two_windows_11', {})
102  call term_sendkeys(buf, "\<Esc>")
103
104  " Check the "o" command
105  call VerifyScreenDump(buf, 'Test_conceal_two_windows_12', {})
106  call term_sendkeys(buf, "o")
107  call VerifyScreenDump(buf, 'Test_conceal_two_windows_13', {})
108  call term_sendkeys(buf, "\<Esc>")
109
110  " clean up
111  call StopVimInTerminal(buf)
112  call delete('XTest_conceal')
113endfunc
114
115func Test_conceal_with_cursorline()
116  " Opens a help window, where 'conceal' is set, switches to the other window
117  " where 'cursorline' needs to be updated when the cursor moves.
118  let code =<< trim [CODE]
119    set cursorline
120    normal othis is a test
121    new
122    call setline(1, ["one", "two", "three", "four", "five"])
123    set ft=help
124    normal M
125  [CODE]
126
127  call writefile(code, 'XTest_conceal_cul')
128  let buf = RunVimInTerminal('-S XTest_conceal_cul', {})
129  call VerifyScreenDump(buf, 'Test_conceal_cul_01', {})
130
131  call term_sendkeys(buf, ":wincmd w\r")
132  call VerifyScreenDump(buf, 'Test_conceal_cul_02', {})
133
134  call term_sendkeys(buf, "k")
135  call VerifyScreenDump(buf, 'Test_conceal_cul_03', {})
136
137  " clean up
138  call StopVimInTerminal(buf)
139  call delete('XTest_conceal_cul')
140endfunc
141