aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakob Schnitzer <mail@jakobschnitzer.de>2017-03-26 13:20:44 +0200
committerJakob Schnitzer <mail@jakobschnitzer.de>2017-03-30 23:04:54 +0200
commite47622f26b40d88bb8582c391df30474a64a082c (patch)
tree45ddbd232a4eb0c06d0ec5d5425ee07f53f42034
parenteb0e94f71b1f44cebf7ae5c1bcff348264af6cef (diff)
downloadrneovim-e47622f26b40d88bb8582c391df30474a64a082c.tar.gz
rneovim-e47622f26b40d88bb8582c391df30474a64a082c.tar.bz2
rneovim-e47622f26b40d88bb8582c391df30474a64a082c.zip
options: setlocal should only set local value
For 'iminsert' and 'imsearch' the global value was always changed.
-rw-r--r--src/nvim/option.c2
-rw-r--r--test/functional/options/setlocal_setglobal_spec.lua22
2 files changed, 22 insertions, 2 deletions
diff --git a/src/nvim/option.c b/src/nvim/option.c
index 0bf81b4d3a..f622efeb0b 100644
--- a/src/nvim/option.c
+++ b/src/nvim/option.c
@@ -4120,7 +4120,6 @@ static char *set_num_option(int opt_idx, char_u *varp, long value,
errmsg = e_invarg;
curbuf->b_p_iminsert = B_IMODE_NONE;
}
- p_iminsert = curbuf->b_p_iminsert;
showmode();
/* Show/unshow value of 'keymap' in status lines. */
status_redraw_curbuf();
@@ -4134,7 +4133,6 @@ static char *set_num_option(int opt_idx, char_u *varp, long value,
errmsg = e_invarg;
curbuf->b_p_imsearch = B_IMODE_NONE;
}
- p_imsearch = curbuf->b_p_imsearch;
}
/* if 'titlelen' has changed, redraw the title */
else if (pp == &p_titlelen) {
diff --git a/test/functional/options/setlocal_setglobal_spec.lua b/test/functional/options/setlocal_setglobal_spec.lua
new file mode 100644
index 0000000000..6902437403
--- /dev/null
+++ b/test/functional/options/setlocal_setglobal_spec.lua
@@ -0,0 +1,22 @@
+-- Tests for :setlocal and :setglobal
+
+local helpers = require('test.functional.helpers')(after_each)
+local clear, execute, eval, eq, nvim =
+ helpers.clear, helpers.execute, helpers.eval, helpers.eq, helpers.nvim
+
+local function get_num_option_global(opt)
+ return nvim('command_output', 'setglobal ' .. opt .. '?'):match('%d+')
+end
+
+describe(':setlocal', function()
+ before_each(clear)
+
+ it('setlocal sets only local value', function()
+ eq('0', get_num_option_global('iminsert'))
+ execute('setlocal iminsert=1')
+ eq('0', get_num_option_global('iminsert'))
+ eq('0', get_num_option_global('imsearch'))
+ execute('setlocal imsearch=1')
+ eq('0', get_num_option_global('imsearch'))
+ end)
+end)