aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2014-10-27 13:29:44 -0700
committerJustin M. Keyes <justinkz@gmail.com>2014-10-28 23:12:41 -0400
commit250298884bb0c86847131cb872dcc9865115f8eb (patch)
treebb13b201a2934a8a5a3bb60f3f1025fbf2707ac9
parent94f59fc9be03cf0ee3ac20f2715738f017439502 (diff)
downloadrneovim-250298884bb0c86847131cb872dcc9865115f8eb.tar.gz
rneovim-250298884bb0c86847131cb872dcc9865115f8eb.tar.bz2
rneovim-250298884bb0c86847131cb872dcc9865115f8eb.zip
fix 'sign unplace id'
Since the introduction of the FOR_ALL_BUFFERS macro, 'sign unplace id' without a buffer was only removing the sign from the first buffer rather than all buffers, as described in the documentation. :help sign-unplace -- modeline discussion: https://github.com/akkartik/neovim/commit/7863c247db#commitcomment-8342590
-rw-r--r--src/nvim/ex_cmds.c16
-rw-r--r--test/functional/ex_cmds/sign_spec.lua25
2 files changed, 34 insertions, 7 deletions
diff --git a/src/nvim/ex_cmds.c b/src/nvim/ex_cmds.c
index 5db950f120..f5fa16a139 100644
--- a/src/nvim/ex_cmds.c
+++ b/src/nvim/ex_cmds.c
@@ -5908,12 +5908,13 @@ void ex_sign(exarg_T *eap)
arg = skipwhite(arg);
if (idx == SIGNCMD_UNPLACE && *arg == NUL)
{
- /* ":sign unplace {id}": remove placed sign by number */
- FOR_ALL_BUFFERS(buf) {
- if ((lnum = buf_delsign(buf, id)) != 0)
- update_debug_sign(buf, lnum);
- return;
- }
+ // ":sign unplace {id}": remove placed sign by number
+ FOR_ALL_BUFFERS(buf) {
+ if ((lnum = buf_delsign(buf, id)) != 0) {
+ update_debug_sign(buf, lnum);
+ }
+ }
+ return;
}
}
}
@@ -5923,7 +5924,7 @@ void ex_sign(exarg_T *eap)
* Leave "arg" pointing to {fname}.
*/
- buf_T *buf = NULL;
+ buf_T *buf = NULL;
for (;;)
{
if (STRNCMP(arg, "line=", 5) == 0)
@@ -6343,3 +6344,4 @@ void set_context_in_sign_cmd(expand_T *xp, char_u *arg)
}
}
+// vim: tabstop=8
diff --git a/test/functional/ex_cmds/sign_spec.lua b/test/functional/ex_cmds/sign_spec.lua
new file mode 100644
index 0000000000..74e1aa4702
--- /dev/null
+++ b/test/functional/ex_cmds/sign_spec.lua
@@ -0,0 +1,25 @@
+local helpers = require('test.functional.helpers')
+local clear, nvim, buffer, curbuf, curwin, eq, ok =
+ helpers.clear, helpers.nvim, helpers.buffer, helpers.curbuf, helpers.curwin,
+ helpers.eq, helpers.ok
+
+describe('sign', function()
+ describe('unplace {id}', function()
+ describe('without specifying buffer', function()
+ it('deletes the sign from all buffers', function()
+ -- place a sign with id 34 to first buffer
+ nvim('command', 'sign define Foo text=+ texthl=Delimiter linehl=Comment')
+ local buf1 = nvim('eval', 'bufnr("%")')
+ nvim('command', 'sign place 34 line=3 name=Foo buffer='..buf1)
+ -- create a second buffer and place the sign on it as well
+ nvim('command', 'new')
+ local buf2 = nvim('eval', 'bufnr("%")')
+ nvim('command', 'sign place 34 line=3 name=Foo buffer='..buf2)
+ -- now unplace without specifying a buffer
+ nvim('command', 'sign unplace 34')
+ eq("\n--- Signs ---\n", nvim('command_output', 'sign place buffer='..buf1))
+ eq("\n--- Signs ---\n", nvim('command_output', 'sign place buffer='..buf2))
+ end)
+ end)
+ end)
+end)