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