diff options
author | Jan Edmund Lazo <janedmundlazo@hotmail.com> | 2018-12-14 22:46:22 -0500 |
---|---|---|
committer | Jan Edmund Lazo <janedmundlazo@hotmail.com> | 2018-12-14 22:51:12 -0500 |
commit | 845973c9fed0da7a0d471f5b57ab361961a3de93 (patch) | |
tree | f1de851a3030aa7998a17a3a9aff3839e9815345 /src | |
parent | bcc9b9335ceddf1f3ff11ae7bb2821c4f55c301b (diff) | |
download | rneovim-845973c9fed0da7a0d471f5b57ab361961a3de93.tar.gz rneovim-845973c9fed0da7a0d471f5b57ab361961a3de93.tar.bz2 rneovim-845973c9fed0da7a0d471f5b57ab361961a3de93.zip |
vim-patch:8.1.0588: cannot define a sign with space in the text
Problem: Cannot define a sign with space in the text.
Solution: Allow for escaping characters. (Ben Jackson, closes vim/vim#2967)
https://github.com/vim/vim/commit/06b056e110005ce0dd97b8c6333405afd06c36fc
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/ex_cmds.c | 8 | ||||
-rw-r--r-- | src/nvim/testdir/test_signs.vim | 27 |
2 files changed, 35 insertions, 0 deletions
diff --git a/src/nvim/ex_cmds.c b/src/nvim/ex_cmds.c index 0a9b6ecc57..36c4e333cf 100644 --- a/src/nvim/ex_cmds.c +++ b/src/nvim/ex_cmds.c @@ -5685,6 +5685,14 @@ void ex_sign(exarg_T *eap) int len; arg += 5; + for (s = arg; s + 1 < p; s++) { + if (*s == '\\') { + // Remove a backslash, so that it is possible + // to use a space. + STRMOVE(s, s + 1); + p--; + } + } // Count cells and check for non-printable chars cells = 0; diff --git a/src/nvim/testdir/test_signs.vim b/src/nvim/testdir/test_signs.vim index d3c6d05f4f..3960177acd 100644 --- a/src/nvim/testdir/test_signs.vim +++ b/src/nvim/testdir/test_signs.vim @@ -104,6 +104,33 @@ func Test_sign() exe 'sign jump 43 file=' . fn call assert_equal('B', getline('.')) + " can't define a sign with a non-printable character as text + call assert_fails("sign define Sign4 text=\e linehl=Comment", 'E239:') + call assert_fails("sign define Sign4 text=a\e linehl=Comment", 'E239:') + call assert_fails("sign define Sign4 text=\ea linehl=Comment", 'E239:') + + " Only 1 or 2 character text is allowed + call assert_fails("sign define Sign4 text=abc linehl=Comment", 'E239:') + call assert_fails("sign define Sign4 text= linehl=Comment", 'E239:') + call assert_fails("sign define Sign4 text=\ ab linehl=Comment", 'E239:') + + " define sign with whitespace + sign define Sign4 text=\ X linehl=Comment + sign undefine Sign4 + sign define Sign4 linehl=Comment text=\ X + sign undefine Sign4 + + sign define Sign5 text=X\ linehl=Comment + sign undefine Sign5 + sign define Sign5 linehl=Comment text=X\ + sign undefine Sign5 + + " define sign with backslash + sign define Sign4 text=\\\\ linehl=Comment + sign undefine Sign4 + sign define Sign4 text=\\ linehl=Comment + sign undefine Sign4 + " After undefining the sign, we should no longer be able to place it. sign undefine Sign1 sign undefine Sign2 |