diff options
author | Andrej Zieger <jerdna-regeiz@users.noreply.github.com> | 2019-05-19 21:14:30 +0200 |
---|---|---|
committer | Andrej Zieger <jerdna-regeiz@users.noreply.github.com> | 2019-05-26 19:32:32 +0200 |
commit | e70609cfac9c64bdf221fa902bba788883e97540 (patch) | |
tree | fa46d24821b2992ae5cb428f261873571ace659f /src | |
parent | 54c4567564b788f211b55c0bdcee3f2cd3d982e8 (diff) | |
download | rneovim-e70609cfac9c64bdf221fa902bba788883e97540.tar.gz rneovim-e70609cfac9c64bdf221fa902bba788883e97540.tar.bz2 rneovim-e70609cfac9c64bdf221fa902bba788883e97540.zip |
vim-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 vim/vim#3767)
https://github.com/vim/vim/commit/b328cca2548936c5f68fff683049a929882f5011
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/sign.c | 7 | ||||
-rw-r--r-- | src/nvim/testdir/test_signs.vim | 94 |
2 files changed, 52 insertions, 49 deletions
diff --git a/src/nvim/sign.c b/src/nvim/sign.c index 237d1eb621..fac47e6fce 100644 --- a/src/nvim/sign.c +++ b/src/nvim/sign.c @@ -1142,7 +1142,7 @@ static void sign_jump_cmd( char_u *group ) { - if (buf == NULL && sign_name == NULL && group == NULL && id == -1) { + if (sign_name == NULL && group == NULL && id == -1) { EMSG(_(e_argreq)); return; } @@ -1274,6 +1274,11 @@ static int parse_sign_cmd_args( return FAIL; } + // If the filename is not supplied for the sign place or the sign jump + // command, then use the current buffer. + if (filename == NULL && (cmd == SIGNCMD_PLACE || cmd == SIGNCMD_JUMP)) { + *buf = curwin->w_buffer; + } return OK; } diff --git a/src/nvim/testdir/test_signs.vim b/src/nvim/testdir/test_signs.vim index 5666292bf6..b05c97f347 100644 --- a/src/nvim/testdir/test_signs.vim +++ b/src/nvim/testdir/test_signs.vim @@ -14,7 +14,8 @@ func Test_sign() " the icon name when listing signs. sign define Sign1 text=x try - sign define Sign2 text=xy texthl=Title linehl=Error numhl=Number icon=../../pixmaps/stock_vim_find_help.png + sign define Sign2 text=xy texthl=Title linehl=Error + \ icon=../../pixmaps/stock_vim_find_help.png catch /E255:/ " Ignore error: E255: Couldn't read in sign data! " This error can happen when running in the GUI. @@ -23,7 +24,9 @@ func Test_sign() " Test listing signs. let a=execute('sign list') - call assert_match("^\nsign Sign1 text=x \nsign Sign2 icon=../../pixmaps/stock_vim_find_help.png .*text=xy linehl=Error texthl=Title numhl=Number$", a) + call assert_match('^\nsign Sign1 text=x \nsign Sign2 ' . + \ 'icon=../../pixmaps/stock_vim_find_help.png .*text=xy ' . + \ 'linehl=Error texthl=Title$', a) let a=execute('sign list Sign1') call assert_equal("\nsign Sign1 text=x ", a) @@ -63,7 +66,8 @@ func Test_sign() " Check placed signs let a=execute('sign place') - call assert_equal("\n--- Signs ---\nSigns for [NULL]:\n line=3 id=41 name=Sign1 priority=10\n", a) + call assert_equal("\n--- Signs ---\nSigns for [NULL]:\n" . + \ " line=3 id=41 name=Sign1 priority=10\n", a) " Unplace the sign and try jumping to it again should fail. sign unplace 41 @@ -87,12 +91,20 @@ func Test_sign() let a=execute('sign place') call assert_equal("\n--- Signs ---\n", a) + " Place a sign without specifying the filename or buffer + sign place 77 line=9 name=Sign2 + let a=execute('sign place') + call assert_equal("\n--- Signs ---\nSigns for [NULL]:\n" . + \ " line=9 id=77 name=Sign2 priority=10\n", a) + sign unplace * + " Check :jump with file=... edit foo call setline(1, ['A', 'B', 'C', 'D']) try - sign define Sign3 text=y texthl=DoesNotExist linehl=DoesNotExist icon=doesnotexist.xpm + sign define Sign3 text=y texthl=DoesNotExist linehl=DoesNotExist + \ icon=doesnotexist.xpm catch /E255:/ " ignore error: E255: it can happens for guis. endtry @@ -148,38 +160,12 @@ func Test_sign() call assert_equal("\nsign 4 text=#> linehl=Comment", a) exe 'sign place 20 line=3 name=004 buffer=' . bufnr('') let a = execute('sign place') - call assert_equal("\n--- Signs ---\nSigns for foo:\n line=3 id=20 name=4 priority=10\n", a) + call assert_equal("\n--- Signs ---\nSigns for foo:\n" . + \ " line=3 id=20 name=4 priority=10\n", a) exe 'sign unplace 20 buffer=' . bufnr('') sign undefine 004 call assert_fails('sign list 4', 'E155:') - " Error cases - call assert_fails("sign place abc line=3 name=Sign1 buffer=" . - \ bufnr('%'), 'E474:') - call assert_fails("sign unplace abc name=Sign1 buffer=" . - \ bufnr('%'), 'E474:') - call assert_fails("sign place 1abc line=3 name=Sign1 buffer=" . - \ bufnr('%'), 'E474:') - call assert_fails("sign unplace 2abc name=Sign1 buffer=" . - \ bufnr('%'), 'E474:') - call assert_fails("sign unplace 2 *", 'E474:') - call assert_fails("sign place 1 line=3 name=Sign1 buffer=" . - \ bufnr('%') . " a", 'E488:') - call assert_fails("sign place name=Sign1 buffer=" . bufnr('%'), 'E474:') - call assert_fails("sign place line=10 buffer=" . bufnr('%'), 'E474:') - call assert_fails("sign unplace 2 line=10 buffer=" . bufnr('%'), 'E474:') - call assert_fails("sign unplace 2 name=Sign1 buffer=" . bufnr('%'), 'E474:') - call assert_fails("sign place 2 line=3 buffer=" . bufnr('%'), 'E474:') - call assert_fails("sign place 2", 'E474:') - call assert_fails("sign place abc", 'E474:') - call assert_fails("sign place 5 line=3", 'E474:') - call assert_fails("sign place 5 name=Sign1", 'E474:') - call assert_fails("sign place 5 group=g1", 'E474:') - call assert_fails("sign place 5 group=*", 'E474:') - call assert_fails("sign place 5 priority=10", 'E474:') - call assert_fails("sign place 5 line=3 name=Sign1", 'E474:') - call assert_fails("sign place 5 group=g1 line=3 name=Sign1", 'E474:') - " After undefining the sign, we should no longer be able to place it. sign undefine Sign1 sign undefine Sign2 @@ -202,7 +188,8 @@ func Test_sign_undefine_still_placed() " Listing placed sign should show that sign is deleted. let a=execute('sign place') - call assert_equal("\n--- Signs ---\nSigns for foobar:\n line=1 id=41 name=[Deleted] priority=10\n", a) + call assert_equal("\n--- Signs ---\nSigns for foobar:\n" . + \ " line=1 id=41 name=[Deleted] priority=10\n", a) sign unplace 41 let a=execute('sign place') @@ -220,7 +207,8 @@ func Test_sign_completion() call assert_equal('"sign define Sign icon= linehl= numhl= text= texthl=', @:) call feedkeys(":sign define Sign linehl=Spell\<C-A>\<C-B>\"\<CR>", 'tx') - call assert_equal('"sign define Sign linehl=SpellBad SpellCap SpellLocal SpellRare', @:) + call assert_equal('"sign define Sign linehl=SpellBad SpellCap ' . + \ 'SpellLocal SpellRare', @:) call writefile(['foo'], 'XsignOne') call writefile(['bar'], 'XsignTwo') @@ -273,17 +261,22 @@ func Test_sign_invalid_commands() call assert_fails('sign jump 1 line=100', '474:') call assert_fails('sign define Sign2 text=', 'E239:') " Non-numeric identifier for :sign place - call assert_fails("sign place abc line=3 name=Sign1 buffer=" . bufnr('%'), 'E474:') + call assert_fails("sign place abc line=3 name=Sign1 buffer=" . bufnr(''), + \ 'E474:') " Non-numeric identifier for :sign unplace - call assert_fails("sign unplace abc name=Sign1 buffer=" . bufnr('%'), 'E474:') + call assert_fails("sign unplace abc name=Sign1 buffer=" . bufnr(''), + \ 'E474:') " Number followed by an alphabet as sign identifier for :sign place - call assert_fails("sign place 1abc line=3 name=Sign1 buffer=" . bufnr('%'), 'E474:') + call assert_fails("sign place 1abc line=3 name=Sign1 buffer=" . bufnr(''), + \ 'E474:') " Number followed by an alphabet as sign identifier for :sign unplace - call assert_fails("sign unplace 2abc name=Sign1 buffer=" . bufnr('%'), 'E474:') + call assert_fails("sign unplace 2abc name=Sign1 buffer=" . bufnr(''), + \ 'E474:') " Sign identifier and '*' for :sign unplace call assert_fails("sign unplace 2 *", 'E474:') " Trailing characters after buffer number for :sign place - call assert_fails("sign place 1 line=3 name=Sign1 buffer=" . bufnr('%') . 'xxx', 'E488:') + call assert_fails("sign place 1 line=3 name=Sign1 buffer=" . + \ bufnr('%') . 'xxx', 'E488:') " Trailing characters after buffer number for :sign unplace call assert_fails("sign unplace 1 buffer=" . bufnr('%') . 'xxx', 'E488:') call assert_fails("sign unplace * buffer=" . bufnr('%') . 'xxx', 'E488:') @@ -306,16 +299,11 @@ func Test_sign_invalid_commands() call assert_fails("sign place abc", 'E474:') " Placing a sign with only line number call assert_fails("sign place 5 line=3", 'E474:') - " Placing a sign with only sign name - call assert_fails("sign place 5 name=Sign1", 'E474:') " Placing a sign with only sign group call assert_fails("sign place 5 group=g1", 'E474:') call assert_fails("sign place 5 group=*", 'E474:') " Placing a sign with only sign priority call assert_fails("sign place 5 priority=10", 'E474:') - " Placing a sign without buffer number or file name - call assert_fails("sign place 5 line=3 name=Sign1", 'E474:') - call assert_fails("sign place 5 group=g1 line=3 name=Sign1", 'E474:') sign undefine Sign1 endfunc @@ -624,11 +612,13 @@ func Test_sign_group() " :sign place file={fname} let a = execute('sign place file=Xsign') - call assert_equal("\n--- Signs ---\nSigns for Xsign:\n line=10 id=5 name=sign1 priority=10\n", a) + call assert_equal("\n--- Signs ---\nSigns for Xsign:\n" . + \ " line=10 id=5 name=sign1 priority=10\n", a) " :sign place group={group} file={fname} let a = execute('sign place group=g2 file=Xsign') - call assert_equal("\n--- Signs ---\nSigns for Xsign:\n line=10 id=5 group=g2 name=sign1 priority=10\n", a) + call assert_equal("\n--- Signs ---\nSigns for Xsign:\n" . + \ " line=10 id=5 group=g2 name=sign1 priority=10\n", a) " :sign place group=* file={fname} let a = execute('sign place group=* file=Xsign') @@ -649,11 +639,13 @@ func Test_sign_group() " :sign place buffer={fname} let a = execute('sign place buffer=' . bnum) - call assert_equal("\n--- Signs ---\nSigns for Xsign:\n line=10 id=5 name=sign1 priority=10\n", a) + call assert_equal("\n--- Signs ---\nSigns for Xsign:\n" . + \ " line=10 id=5 name=sign1 priority=10\n", a) " :sign place group={group} buffer={fname} let a = execute('sign place group=g2 buffer=' . bnum) - call assert_equal("\n--- Signs ---\nSigns for Xsign:\n line=12 id=5 group=g2 name=sign1 priority=10\n", a) + call assert_equal("\n--- Signs ---\nSigns for Xsign:\n" . + \ " line=12 id=5 group=g2 name=sign1 priority=10\n", a) " :sign place group=* buffer={fname} let a = execute('sign place group=* buffer=' . bnum) @@ -690,6 +682,12 @@ func Test_sign_group() sign jump 5 group=g2 file=Xsign call assert_equal(12, line('.')) + " Test for :sign jump command without the filename or buffer + sign jump 5 + call assert_equal(10, line('.')) + sign jump 5 group=g1 + call assert_equal(11, line('.')) + " Error cases call assert_fails("sign place 3 group= name=sign1 buffer=" . bnum, 'E474:') |