options: fix setglobal for buf-local number options

This commit is contained in:
Jakob Schnitzer
2017-03-27 19:50:04 +02:00
parent 2290a7a1b1
commit 44f039a1c8
2 changed files with 18 additions and 21 deletions

View File

@@ -4014,22 +4014,19 @@ static char *set_num_option(int opt_idx, char_u *varp, long value,
} else if (pp == &p_wmh) { } else if (pp == &p_wmh) {
if (p_wmh < 0) { if (p_wmh < 0) {
errmsg = e_positive; errmsg = e_positive;
} } else if (p_wmh > p_wh) {
if (p_wmh > p_wh) {
errmsg = e_winheight; errmsg = e_winheight;
} }
} else if (pp == &p_wiw) { } else if (pp == &p_wiw) {
if (p_wiw < 1) { if (p_wiw < 1) {
errmsg = e_positive; errmsg = e_positive;
} } else if (p_wmw > p_wiw) {
if (p_wmw > p_wiw) {
errmsg = e_winwidth; errmsg = e_winwidth;
} }
} else if (pp == &p_wmw) { } else if (pp == &p_wmw) {
if (p_wmw < 0) { if (p_wmw < 0) {
errmsg = e_positive; errmsg = e_positive;
} } else if (p_wmw > p_wiw) {
if (p_wmw > p_wiw) {
errmsg = e_winwidth; errmsg = e_winwidth;
} }
} else if (pp == &p_mco) { } else if (pp == &p_mco) {
@@ -4110,16 +4107,16 @@ static char *set_num_option(int opt_idx, char_u *varp, long value,
} else if (curwin->w_p_nuw > 10) { } else if (curwin->w_p_nuw > 10) {
errmsg = e_invarg; errmsg = e_invarg;
} }
} else if (pp == &curbuf->b_p_iminsert) { } else if (pp == &curbuf->b_p_iminsert || pp == &p_iminsert) {
if (curbuf->b_p_iminsert < 0 || curbuf->b_p_iminsert > B_IMODE_LAST) { if (*pp < 0 || *pp > B_IMODE_LAST) {
errmsg = e_invarg; errmsg = e_invarg;
} }
} else if (pp == &curbuf->b_p_imsearch) { } else if (pp == &curbuf->b_p_imsearch || pp == &p_imsearch) {
if (curbuf->b_p_imsearch < -1 || curbuf->b_p_imsearch > B_IMODE_LAST) { if (*pp < -1 || *pp > B_IMODE_LAST) {
errmsg = e_invarg; errmsg = e_invarg;
} }
} else if (pp == &curbuf->b_p_tw) { } else if (pp == &curbuf->b_p_tw || pp == &p_tw) {
if (curbuf->b_p_tw < 0) { if (*pp < 0) {
errmsg = e_positive; errmsg = e_positive;
} }
} else if (pp == &curbuf->b_p_scbk || pp == &p_scbk) { } else if (pp == &curbuf->b_p_scbk || pp == &p_scbk) {
@@ -4127,12 +4124,12 @@ static char *set_num_option(int opt_idx, char_u *varp, long value,
|| (opt_flags == OPT_LOCAL && !curbuf->terminal)) { || (opt_flags == OPT_LOCAL && !curbuf->terminal)) {
errmsg = e_invarg; errmsg = e_invarg;
} }
} else if (pp == &curbuf->b_p_sw) { } else if (pp == &curbuf->b_p_sw || pp == &p_sw) {
if (curbuf->b_p_sw < 0) { if (*pp < 0) {
errmsg = e_positive; errmsg = e_positive;
} }
} else if (pp == &curbuf->b_p_ts) { } else if (pp == &curbuf->b_p_ts || pp == &p_ts) {
if (curbuf->b_p_ts <= 0) { if (*pp <= 0) {
errmsg = e_positive; errmsg = e_positive;
} }
} }
@@ -4206,7 +4203,7 @@ static char *set_num_option(int opt_idx, char_u *varp, long value,
} else if (pp == &p_titlelen) { } else if (pp == &p_titlelen) {
// if 'titlelen' has changed, redraw the title // if 'titlelen' has changed, redraw the title
if (starting != NO_SCREEN && old_value != p_titlelen) { if (starting != NO_SCREEN && old_value != p_titlelen) {
need_maketitle = TRUE; need_maketitle = true;
} }
} else if (pp == &p_ch) { } else if (pp == &p_ch) {
// if p_ch changed value, change the command line height // if p_ch changed value, change the command line height
@@ -4224,7 +4221,7 @@ static char *set_num_option(int opt_idx, char_u *varp, long value,
// sync undo before 'undolevels' changes // sync undo before 'undolevels' changes
// use the old value, otherwise u_sync() may not work properly // use the old value, otherwise u_sync() may not work properly
*pp = old_value; *pp = old_value;
u_sync(TRUE); u_sync(true);
*pp = value; *pp = value;
} else if (pp == &curbuf->b_p_tw) { } else if (pp == &curbuf->b_p_tw) {
FOR_ALL_TAB_WINDOWS(tp, wp) { FOR_ALL_TAB_WINDOWS(tp, wp) {

View File

@@ -11,10 +11,10 @@ end
local function should_fail(opt, value, errmsg) local function should_fail(opt, value, errmsg)
execute('let v:errmsg = ""') execute('let v:errmsg = ""')
execute('setglobal ' .. opt .. '=' .. value) execute('setglobal ' .. opt .. '=' .. value)
eq(errmsg, eval("v:errmsg"):match("E%d*:")) eq(errmsg, eval("v:errmsg"):match("E%d*"))
execute('let v:errmsg = ""') execute('let v:errmsg = ""')
execute('setlocal ' .. opt .. '=' .. value) execute('setlocal ' .. opt .. '=' .. value)
eq(errmsg, eval("v:errmsg"):match("E%d*:")) eq(errmsg, eval("v:errmsg"):match("E%d*"))
execute('let v:errmsg = ""') execute('let v:errmsg = ""')
end end
@@ -37,6 +37,6 @@ describe(':set validation', function()
it('setlocal and setglobal validate values', function() it('setlocal and setglobal validate values', function()
should_fail('shiftwidth', -10, 'E487') should_fail('shiftwidth', -10, 'E487')
should_fail('tabstop', -10, 'E487') should_fail('tabstop', -10, 'E487')
should_fail('winheight', -10, 'E487') should_fail('winheight', -10, 'E591')
end) end)
end) end)