comparison src/testdir/test_signs.vim @ 15378:0d76dd701e49 v8.1.0697

patch 8.1.0697: ":sign place" requires the buffer argument commit https://github.com/vim/vim/commit/b328cca2548936c5f68fff683049a929882f5011 Author: Bram Moolenaar <Bram@vim.org> Date: Sun Jan 6 16:24:01 2019 +0100 patch 8.1.0697: ":sign place" requires the buffer argument Problem: ":sign place" requires the buffer argument. Solution: Make the argument optional. Also update the help and clean up the sign test. (Yegappan Lakshmanan, closes #3767)
author Bram Moolenaar <Bram@vim.org>
date Sun, 06 Jan 2019 16:30:05 +0100
parents 8543eaf63f65
children 317846db300a
comparison
equal deleted inserted replaced
15377:88b0a490816e 15378:0d76dd701e49
12 " We can specify icons even if not all versions of vim support icons as 12 " We can specify icons even if not all versions of vim support icons as
13 " icon is ignored when not supported. "(not supported)" is shown after 13 " icon is ignored when not supported. "(not supported)" is shown after
14 " the icon name when listing signs. 14 " the icon name when listing signs.
15 sign define Sign1 text=x 15 sign define Sign1 text=x
16 try 16 try
17 sign define Sign2 text=xy texthl=Title linehl=Error icon=../../pixmaps/stock_vim_find_help.png 17 sign define Sign2 text=xy texthl=Title linehl=Error
18 \ icon=../../pixmaps/stock_vim_find_help.png
18 catch /E255:/ 19 catch /E255:/
19 " Ignore error: E255: Couldn't read in sign data! 20 " Ignore error: E255: Couldn't read in sign data!
20 " This error can happen when running in the GUI. 21 " This error can happen when running in the GUI.
21 " Some gui like Motif do not support the png icon format. 22 " Some gui like Motif do not support the png icon format.
22 endtry 23 endtry
23 24
24 " Test listing signs. 25 " Test listing signs.
25 let a=execute('sign list') 26 let a=execute('sign list')
26 call assert_match("^\nsign Sign1 text=x \nsign Sign2 icon=../../pixmaps/stock_vim_find_help.png .*text=xy linehl=Error texthl=Title$", a) 27 call assert_match('^\nsign Sign1 text=x \nsign Sign2 ' .
28 \ 'icon=../../pixmaps/stock_vim_find_help.png .*text=xy ' .
29 \ 'linehl=Error texthl=Title$', a)
27 30
28 let a=execute('sign list Sign1') 31 let a=execute('sign list Sign1')
29 call assert_equal("\nsign Sign1 text=x ", a) 32 call assert_equal("\nsign Sign1 text=x ", a)
30 33
31 " Split the window to the bottom to verify sign jump will stay in the 34 " Split the window to the bottom to verify sign jump will stay in the
61 " Check that we can't change sign. 64 " Check that we can't change sign.
62 call assert_fails("sign place 40 name=Sign1 buffer=" . bufnr('%'), 'E885:') 65 call assert_fails("sign place 40 name=Sign1 buffer=" . bufnr('%'), 'E885:')
63 66
64 " Check placed signs 67 " Check placed signs
65 let a=execute('sign place') 68 let a=execute('sign place')
66 call assert_equal("\n--- Signs ---\nSigns for [NULL]:\n line=3 id=41 name=Sign1 priority=10\n", a) 69 call assert_equal("\n--- Signs ---\nSigns for [NULL]:\n" .
70 \ " line=3 id=41 name=Sign1 priority=10\n", a)
67 71
68 " Unplace the sign and try jumping to it again should fail. 72 " Unplace the sign and try jumping to it again should fail.
69 sign unplace 41 73 sign unplace 41
70 1 74 1
71 call assert_fails("sign jump 41 buffer=" . bufnr('%'), 'E157:') 75 call assert_fails("sign jump 41 buffer=" . bufnr('%'), 'E157:')
85 exe 'sign place 41 line=3 name=Sign1 buffer=' . bufnr('%') 89 exe 'sign place 41 line=3 name=Sign1 buffer=' . bufnr('%')
86 sign unplace * 90 sign unplace *
87 let a=execute('sign place') 91 let a=execute('sign place')
88 call assert_equal("\n--- Signs ---\n", a) 92 call assert_equal("\n--- Signs ---\n", a)
89 93
94 " Place a sign without specifying the filename or buffer
95 sign place 77 line=9 name=Sign2
96 let a=execute('sign place')
97 call assert_equal("\n--- Signs ---\nSigns for [NULL]:\n" .
98 \ " line=9 id=77 name=Sign2 priority=10\n", a)
99 sign unplace *
100
90 " Check :jump with file=... 101 " Check :jump with file=...
91 edit foo 102 edit foo
92 call setline(1, ['A', 'B', 'C', 'D']) 103 call setline(1, ['A', 'B', 'C', 'D'])
93 104
94 try 105 try
95 sign define Sign3 text=y texthl=DoesNotExist linehl=DoesNotExist icon=doesnotexist.xpm 106 sign define Sign3 text=y texthl=DoesNotExist linehl=DoesNotExist
107 \ icon=doesnotexist.xpm
96 catch /E255:/ 108 catch /E255:/
97 " ignore error: E255: it can happens for guis. 109 " ignore error: E255: it can happens for guis.
98 endtry 110 endtry
99 111
100 let fn = expand('%:p') 112 let fn = expand('%:p')
146 sign define 004 text=#> linehl=Comment 158 sign define 004 text=#> linehl=Comment
147 let a = execute('sign list 4') 159 let a = execute('sign list 4')
148 call assert_equal("\nsign 4 text=#> linehl=Comment", a) 160 call assert_equal("\nsign 4 text=#> linehl=Comment", a)
149 exe 'sign place 20 line=3 name=004 buffer=' . bufnr('') 161 exe 'sign place 20 line=3 name=004 buffer=' . bufnr('')
150 let a = execute('sign place') 162 let a = execute('sign place')
151 call assert_equal("\n--- Signs ---\nSigns for foo:\n line=3 id=20 name=4 priority=10\n", a) 163 call assert_equal("\n--- Signs ---\nSigns for foo:\n" .
164 \ " line=3 id=20 name=4 priority=10\n", a)
152 exe 'sign unplace 20 buffer=' . bufnr('') 165 exe 'sign unplace 20 buffer=' . bufnr('')
153 sign undefine 004 166 sign undefine 004
154 call assert_fails('sign list 4', 'E155:') 167 call assert_fails('sign list 4', 'E155:')
155
156 " Error cases
157 call assert_fails("sign place abc line=3 name=Sign1 buffer=" .
158 \ bufnr('%'), 'E474:')
159 call assert_fails("sign unplace abc name=Sign1 buffer=" .
160 \ bufnr('%'), 'E474:')
161 call assert_fails("sign place 1abc line=3 name=Sign1 buffer=" .
162 \ bufnr('%'), 'E474:')
163 call assert_fails("sign unplace 2abc name=Sign1 buffer=" .
164 \ bufnr('%'), 'E474:')
165 call assert_fails("sign unplace 2 *", 'E474:')
166 call assert_fails("sign place 1 line=3 name=Sign1 buffer=" .
167 \ bufnr('%') . " a", 'E488:')
168 call assert_fails("sign place name=Sign1 buffer=" . bufnr('%'), 'E474:')
169 call assert_fails("sign place line=10 buffer=" . bufnr('%'), 'E474:')
170 call assert_fails("sign unplace 2 line=10 buffer=" . bufnr('%'), 'E474:')
171 call assert_fails("sign unplace 2 name=Sign1 buffer=" . bufnr('%'), 'E474:')
172 call assert_fails("sign place 2 line=3 buffer=" . bufnr('%'), 'E474:')
173 call assert_fails("sign place 2", 'E474:')
174 call assert_fails("sign place abc", 'E474:')
175 call assert_fails("sign place 5 line=3", 'E474:')
176 call assert_fails("sign place 5 name=Sign1", 'E474:')
177 call assert_fails("sign place 5 group=g1", 'E474:')
178 call assert_fails("sign place 5 group=*", 'E474:')
179 call assert_fails("sign place 5 priority=10", 'E474:')
180 call assert_fails("sign place 5 line=3 name=Sign1", 'E474:')
181 call assert_fails("sign place 5 group=g1 line=3 name=Sign1", 'E474:')
182 168
183 " After undefining the sign, we should no longer be able to place it. 169 " After undefining the sign, we should no longer be able to place it.
184 sign undefine Sign1 170 sign undefine Sign1
185 sign undefine Sign2 171 sign undefine Sign2
186 sign undefine Sign3 172 sign undefine Sign3
200 exe 'sign place 41 line=1 name=Sign buffer=' . bufnr('%') 186 exe 'sign place 41 line=1 name=Sign buffer=' . bufnr('%')
201 sign undefine Sign 187 sign undefine Sign
202 188
203 " Listing placed sign should show that sign is deleted. 189 " Listing placed sign should show that sign is deleted.
204 let a=execute('sign place') 190 let a=execute('sign place')
205 call assert_equal("\n--- Signs ---\nSigns for foobar:\n line=1 id=41 name=[Deleted] priority=10\n", a) 191 call assert_equal("\n--- Signs ---\nSigns for foobar:\n" .
192 \ " line=1 id=41 name=[Deleted] priority=10\n", a)
206 193
207 sign unplace 41 194 sign unplace 41
208 let a=execute('sign place') 195 let a=execute('sign place')
209 call assert_equal("\n--- Signs ---\n", a) 196 call assert_equal("\n--- Signs ---\n", a)
210 endfunc 197 endfunc
218 205
219 call feedkeys(":sign define Sign \<C-A>\<C-B>\"\<CR>", 'tx') 206 call feedkeys(":sign define Sign \<C-A>\<C-B>\"\<CR>", 'tx')
220 call assert_equal('"sign define Sign icon= linehl= text= texthl=', @:) 207 call assert_equal('"sign define Sign icon= linehl= text= texthl=', @:)
221 208
222 call feedkeys(":sign define Sign linehl=Spell\<C-A>\<C-B>\"\<CR>", 'tx') 209 call feedkeys(":sign define Sign linehl=Spell\<C-A>\<C-B>\"\<CR>", 'tx')
223 call assert_equal('"sign define Sign linehl=SpellBad SpellCap SpellLocal SpellRare', @:) 210 call assert_equal('"sign define Sign linehl=SpellBad SpellCap ' .
211 \ 'SpellLocal SpellRare', @:)
224 212
225 call writefile(['foo'], 'XsignOne') 213 call writefile(['foo'], 'XsignOne')
226 call writefile(['bar'], 'XsignTwo') 214 call writefile(['bar'], 'XsignTwo')
227 call feedkeys(":sign define Sign icon=Xsig\<C-A>\<C-B>\"\<CR>", 'tx') 215 call feedkeys(":sign define Sign icon=Xsig\<C-A>\<C-B>\"\<CR>", 'tx')
228 call assert_equal('"sign define Sign icon=XsignOne XsignTwo', @:) 216 call assert_equal('"sign define Sign icon=XsignOne XsignTwo', @:)
271 call assert_fails('sign jump 1 name=', 'E474:') 259 call assert_fails('sign jump 1 name=', 'E474:')
272 call assert_fails('sign jump 1 name=Sign1', 'E474:') 260 call assert_fails('sign jump 1 name=Sign1', 'E474:')
273 call assert_fails('sign jump 1 line=100', '474:') 261 call assert_fails('sign jump 1 line=100', '474:')
274 call assert_fails('sign define Sign2 text=', 'E239:') 262 call assert_fails('sign define Sign2 text=', 'E239:')
275 " Non-numeric identifier for :sign place 263 " Non-numeric identifier for :sign place
276 call assert_fails("sign place abc line=3 name=Sign1 buffer=" . bufnr('%'), 'E474:') 264 call assert_fails("sign place abc line=3 name=Sign1 buffer=" . bufnr(''),
265 \ 'E474:')
277 " Non-numeric identifier for :sign unplace 266 " Non-numeric identifier for :sign unplace
278 call assert_fails("sign unplace abc name=Sign1 buffer=" . bufnr('%'), 'E474:') 267 call assert_fails("sign unplace abc name=Sign1 buffer=" . bufnr(''),
268 \ 'E474:')
279 " Number followed by an alphabet as sign identifier for :sign place 269 " Number followed by an alphabet as sign identifier for :sign place
280 call assert_fails("sign place 1abc line=3 name=Sign1 buffer=" . bufnr('%'), 'E474:') 270 call assert_fails("sign place 1abc line=3 name=Sign1 buffer=" . bufnr(''),
271 \ 'E474:')
281 " Number followed by an alphabet as sign identifier for :sign unplace 272 " Number followed by an alphabet as sign identifier for :sign unplace
282 call assert_fails("sign unplace 2abc name=Sign1 buffer=" . bufnr('%'), 'E474:') 273 call assert_fails("sign unplace 2abc name=Sign1 buffer=" . bufnr(''),
274 \ 'E474:')
283 " Sign identifier and '*' for :sign unplace 275 " Sign identifier and '*' for :sign unplace
284 call assert_fails("sign unplace 2 *", 'E474:') 276 call assert_fails("sign unplace 2 *", 'E474:')
285 " Trailing characters after buffer number for :sign place 277 " Trailing characters after buffer number for :sign place
286 call assert_fails("sign place 1 line=3 name=Sign1 buffer=" . bufnr('%') . 'xxx', 'E488:') 278 call assert_fails("sign place 1 line=3 name=Sign1 buffer=" .
279 \ bufnr('%') . 'xxx', 'E488:')
287 " Trailing characters after buffer number for :sign unplace 280 " Trailing characters after buffer number for :sign unplace
288 call assert_fails("sign unplace 1 buffer=" . bufnr('%') . 'xxx', 'E488:') 281 call assert_fails("sign unplace 1 buffer=" . bufnr('%') . 'xxx', 'E488:')
289 call assert_fails("sign unplace * buffer=" . bufnr('%') . 'xxx', 'E488:') 282 call assert_fails("sign unplace * buffer=" . bufnr('%') . 'xxx', 'E488:')
290 call assert_fails("sign unplace 1 xxx", 'E474:') 283 call assert_fails("sign unplace 1 xxx", 'E474:')
291 call assert_fails("sign unplace * xxx", 'E474:') 284 call assert_fails("sign unplace * xxx", 'E474:')
304 call assert_fails("sign place 2", 'E474:') 297 call assert_fails("sign place 2", 'E474:')
305 " Placing a sign with only a name 298 " Placing a sign with only a name
306 call assert_fails("sign place abc", 'E474:') 299 call assert_fails("sign place abc", 'E474:')
307 " Placing a sign with only line number 300 " Placing a sign with only line number
308 call assert_fails("sign place 5 line=3", 'E474:') 301 call assert_fails("sign place 5 line=3", 'E474:')
309 " Placing a sign with only sign name
310 call assert_fails("sign place 5 name=Sign1", 'E474:')
311 " Placing a sign with only sign group 302 " Placing a sign with only sign group
312 call assert_fails("sign place 5 group=g1", 'E474:') 303 call assert_fails("sign place 5 group=g1", 'E474:')
313 call assert_fails("sign place 5 group=*", 'E474:') 304 call assert_fails("sign place 5 group=*", 'E474:')
314 " Placing a sign with only sign priority 305 " Placing a sign with only sign priority
315 call assert_fails("sign place 5 priority=10", 'E474:') 306 call assert_fails("sign place 5 priority=10", 'E474:')
316 " Placing a sign without buffer number or file name
317 call assert_fails("sign place 5 line=3 name=Sign1", 'E474:')
318 call assert_fails("sign place 5 group=g1 line=3 name=Sign1", 'E474:')
319 307
320 sign undefine Sign1 308 sign undefine Sign1
321 endfunc 309 endfunc
322 310
323 func Test_sign_delete_buffer() 311 func Test_sign_delete_buffer()
622 610
623 " Tests for the ':sign place' command 611 " Tests for the ':sign place' command
624 612
625 " :sign place file={fname} 613 " :sign place file={fname}
626 let a = execute('sign place file=Xsign') 614 let a = execute('sign place file=Xsign')
627 call assert_equal("\n--- Signs ---\nSigns for Xsign:\n line=10 id=5 name=sign1 priority=10\n", a) 615 call assert_equal("\n--- Signs ---\nSigns for Xsign:\n" .
616 \ " line=10 id=5 name=sign1 priority=10\n", a)
628 617
629 " :sign place group={group} file={fname} 618 " :sign place group={group} file={fname}
630 let a = execute('sign place group=g2 file=Xsign') 619 let a = execute('sign place group=g2 file=Xsign')
631 call assert_equal("\n--- Signs ---\nSigns for Xsign:\n line=10 id=5 group=g2 name=sign1 priority=10\n", a) 620 call assert_equal("\n--- Signs ---\nSigns for Xsign:\n" .
621 \ " line=10 id=5 group=g2 name=sign1 priority=10\n", a)
632 622
633 " :sign place group=* file={fname} 623 " :sign place group=* file={fname}
634 let a = execute('sign place group=* file=Xsign') 624 let a = execute('sign place group=* file=Xsign')
635 call assert_equal("\n--- Signs ---\nSigns for Xsign:\n" . 625 call assert_equal("\n--- Signs ---\nSigns for Xsign:\n" .
636 \ " line=10 id=5 group=g2 name=sign1 priority=10\n" . 626 \ " line=10 id=5 group=g2 name=sign1 priority=10\n" .
647 exe 'sign place 5 group=g1 line=11 name=sign1 buffer=' . bnum 637 exe 'sign place 5 group=g1 line=11 name=sign1 buffer=' . bnum
648 exe 'sign place 5 group=g2 line=12 name=sign1 buffer=' . bnum 638 exe 'sign place 5 group=g2 line=12 name=sign1 buffer=' . bnum
649 639
650 " :sign place buffer={fname} 640 " :sign place buffer={fname}
651 let a = execute('sign place buffer=' . bnum) 641 let a = execute('sign place buffer=' . bnum)
652 call assert_equal("\n--- Signs ---\nSigns for Xsign:\n line=10 id=5 name=sign1 priority=10\n", a) 642 call assert_equal("\n--- Signs ---\nSigns for Xsign:\n" .
643 \ " line=10 id=5 name=sign1 priority=10\n", a)
653 644
654 " :sign place group={group} buffer={fname} 645 " :sign place group={group} buffer={fname}
655 let a = execute('sign place group=g2 buffer=' . bnum) 646 let a = execute('sign place group=g2 buffer=' . bnum)
656 call assert_equal("\n--- Signs ---\nSigns for Xsign:\n line=12 id=5 group=g2 name=sign1 priority=10\n", a) 647 call assert_equal("\n--- Signs ---\nSigns for Xsign:\n" .
648 \ " line=12 id=5 group=g2 name=sign1 priority=10\n", a)
657 649
658 " :sign place group=* buffer={fname} 650 " :sign place group=* buffer={fname}
659 let a = execute('sign place group=* buffer=' . bnum) 651 let a = execute('sign place group=* buffer=' . bnum)
660 call assert_equal("\n--- Signs ---\nSigns for Xsign:\n" . 652 call assert_equal("\n--- Signs ---\nSigns for Xsign:\n" .
661 \ " line=10 id=5 name=sign1 priority=10\n" . 653 \ " line=10 id=5 name=sign1 priority=10\n" .
687 sign jump 5 group=g1 file=Xsign 679 sign jump 5 group=g1 file=Xsign
688 call assert_equal(11, line('.')) 680 call assert_equal(11, line('.'))
689 call assert_equal('Xsign', bufname('')) 681 call assert_equal('Xsign', bufname(''))
690 sign jump 5 group=g2 file=Xsign 682 sign jump 5 group=g2 file=Xsign
691 call assert_equal(12, line('.')) 683 call assert_equal(12, line('.'))
684
685 " Test for :sign jump command without the filename or buffer
686 sign jump 5
687 call assert_equal(10, line('.'))
688 sign jump 5 group=g1
689 call assert_equal(11, line('.'))
692 690
693 " Error cases 691 " Error cases
694 call assert_fails("sign place 3 group= name=sign1 buffer=" . bnum, 'E474:') 692 call assert_fails("sign place 3 group= name=sign1 buffer=" . bnum, 'E474:')
695 693
696 call delete("Xsign") 694 call delete("Xsign")