Mercurial > vim
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") |