forked from aniani/vim
patch 9.1.0804: tests: no error check when setting global 'cc'
Problem: tests: no error check when setting global 'cc' Solution: also parse and check global 'cc' value (Milly) closes: #15914 Signed-off-by: Milly <milly.ca@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
parent
5e7a6a4a10
commit
a441a3eaab
@ -214,7 +214,7 @@ open_buffer(
|
|||||||
enter_buffer(curbuf);
|
enter_buffer(curbuf);
|
||||||
#ifdef FEAT_SYN_HL
|
#ifdef FEAT_SYN_HL
|
||||||
if (old_tw != curbuf->b_p_tw)
|
if (old_tw != curbuf->b_p_tw)
|
||||||
check_colorcolumn(curwin);
|
check_colorcolumn(NULL, curwin);
|
||||||
#endif
|
#endif
|
||||||
return FAIL;
|
return FAIL;
|
||||||
}
|
}
|
||||||
@ -1213,7 +1213,7 @@ handle_swap_exists(bufref_T *old_curbuf)
|
|||||||
|
|
||||||
#ifdef FEAT_SYN_HL
|
#ifdef FEAT_SYN_HL
|
||||||
if (old_tw != curbuf->b_p_tw)
|
if (old_tw != curbuf->b_p_tw)
|
||||||
check_colorcolumn(curwin);
|
check_colorcolumn(NULL, curwin);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
// If "old_curbuf" is NULL we are in big trouble here...
|
// If "old_curbuf" is NULL we are in big trouble here...
|
||||||
@ -1911,7 +1911,7 @@ set_curbuf(buf_T *buf, int action)
|
|||||||
enter_buffer(buf);
|
enter_buffer(buf);
|
||||||
#ifdef FEAT_SYN_HL
|
#ifdef FEAT_SYN_HL
|
||||||
if (old_tw != curbuf->b_p_tw)
|
if (old_tw != curbuf->b_p_tw)
|
||||||
check_colorcolumn(curwin);
|
check_colorcolumn(NULL, curwin);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4328,7 +4328,7 @@ did_set_textwidth(optset_T *args UNUSED)
|
|||||||
tabpage_T *tp;
|
tabpage_T *tp;
|
||||||
|
|
||||||
FOR_ALL_TAB_WINDOWS(tp, wp)
|
FOR_ALL_TAB_WINDOWS(tp, wp)
|
||||||
check_colorcolumn(wp);
|
check_colorcolumn(NULL, wp);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -6755,7 +6755,7 @@ after_copy_winopt(win_T *wp)
|
|||||||
#endif
|
#endif
|
||||||
#ifdef FEAT_SYN_HL
|
#ifdef FEAT_SYN_HL
|
||||||
fill_culopt_flags(NULL, wp);
|
fill_culopt_flags(NULL, wp);
|
||||||
check_colorcolumn(wp);
|
check_colorcolumn(NULL, wp);
|
||||||
#endif
|
#endif
|
||||||
set_listchars_option(wp, wp->w_p_lcs, TRUE, NULL, 0);
|
set_listchars_option(wp, wp->w_p_lcs, TRUE, NULL, 0);
|
||||||
set_fillchars_option(wp, wp->w_p_fcs, TRUE, NULL, 0);
|
set_fillchars_option(wp, wp->w_p_fcs, TRUE, NULL, 0);
|
||||||
|
@ -1478,9 +1478,11 @@ did_set_cinoptions(optset_T *args UNUSED)
|
|||||||
* The 'colorcolumn' option is changed.
|
* The 'colorcolumn' option is changed.
|
||||||
*/
|
*/
|
||||||
char *
|
char *
|
||||||
did_set_colorcolumn(optset_T *args UNUSED)
|
did_set_colorcolumn(optset_T *args)
|
||||||
{
|
{
|
||||||
return check_colorcolumn(curwin);
|
char_u **varp = (char_u **)args->os_varp;
|
||||||
|
|
||||||
|
return check_colorcolumn(*varp, varp == &curwin->w_p_cc ? curwin : NULL);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -98,7 +98,7 @@ void restore_snapshot(int idx, int close_curwin);
|
|||||||
int win_hasvertsplit(void);
|
int win_hasvertsplit(void);
|
||||||
int get_win_number(win_T *wp, win_T *first_win);
|
int get_win_number(win_T *wp, win_T *first_win);
|
||||||
int get_tab_number(tabpage_T *tp);
|
int get_tab_number(tabpage_T *tp);
|
||||||
char *check_colorcolumn(win_T *wp);
|
char *check_colorcolumn(char_u *cc, win_T *wp);
|
||||||
int get_last_winid(void);
|
int get_last_winid(void);
|
||||||
int win_locked(win_T *wp);
|
int win_locked(win_T *wp);
|
||||||
/* vim: set ft=c : */
|
/* vim: set ft=c : */
|
||||||
|
@ -46,7 +46,6 @@ let skip_setglobal_reasons = #{
|
|||||||
\ iminsert: 'The global value is always overwritten by the local value',
|
\ iminsert: 'The global value is always overwritten by the local value',
|
||||||
\ imsearch: 'The global value is always overwritten by the local value',
|
\ imsearch: 'The global value is always overwritten by the local value',
|
||||||
\ breakindentopt: 'TODO: fix missing error handling for setglobal',
|
\ breakindentopt: 'TODO: fix missing error handling for setglobal',
|
||||||
\ colorcolumn: 'TODO: fix missing error handling for setglobal',
|
|
||||||
\ conceallevel: 'TODO: fix missing error handling for setglobal',
|
\ conceallevel: 'TODO: fix missing error handling for setglobal',
|
||||||
\ foldcolumn: 'TODO: fix missing error handling for setglobal',
|
\ foldcolumn: 'TODO: fix missing error handling for setglobal',
|
||||||
\ numberwidth: 'TODO: fix missing error handling for setglobal',
|
\ numberwidth: 'TODO: fix missing error handling for setglobal',
|
||||||
|
@ -704,6 +704,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
804,
|
||||||
/**/
|
/**/
|
||||||
803,
|
803,
|
||||||
/**/
|
/**/
|
||||||
|
30
src/window.c
30
src/window.c
@ -7925,23 +7925,38 @@ int_cmp(const void *pa, const void *pb)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Handle setting 'colorcolumn' or 'textwidth' in window "wp".
|
* Check "cc" as 'colorcolumn' and update the members of "wp".
|
||||||
|
* This is called when 'colorcolumn' or 'textwidth' is changed.
|
||||||
* Returns error message, NULL if it's OK.
|
* Returns error message, NULL if it's OK.
|
||||||
*/
|
*/
|
||||||
char *
|
char *
|
||||||
check_colorcolumn(win_T *wp)
|
check_colorcolumn(
|
||||||
|
char_u *cc, // when NULL: use "wp->w_p_cc"
|
||||||
|
win_T *wp) // when NULL: only parse "cc"
|
||||||
{
|
{
|
||||||
char_u *s;
|
char_u *s;
|
||||||
|
int tw;
|
||||||
int col;
|
int col;
|
||||||
int count = 0;
|
int count = 0;
|
||||||
int color_cols[256];
|
int color_cols[256];
|
||||||
int i;
|
int i;
|
||||||
int j = 0;
|
int j = 0;
|
||||||
|
|
||||||
if (wp->w_buffer == NULL)
|
if (wp != NULL && wp->w_buffer == NULL)
|
||||||
return NULL; // buffer was closed
|
return NULL; // buffer was closed
|
||||||
|
|
||||||
for (s = wp->w_p_cc; *s != NUL && count < 255;)
|
if (cc != NULL)
|
||||||
|
s = cc;
|
||||||
|
else
|
||||||
|
s = wp->w_p_cc;
|
||||||
|
|
||||||
|
if (wp != NULL)
|
||||||
|
tw = wp->w_buffer->b_p_tw;
|
||||||
|
else
|
||||||
|
// buffer-local value not set, assume zero
|
||||||
|
tw = 0;
|
||||||
|
|
||||||
|
while (*s != NUL && count < 255)
|
||||||
{
|
{
|
||||||
if (*s == '-' || *s == '+')
|
if (*s == '-' || *s == '+')
|
||||||
{
|
{
|
||||||
@ -7951,9 +7966,9 @@ check_colorcolumn(win_T *wp)
|
|||||||
if (!VIM_ISDIGIT(*s))
|
if (!VIM_ISDIGIT(*s))
|
||||||
return e_invalid_argument;
|
return e_invalid_argument;
|
||||||
col = col * getdigits(&s);
|
col = col * getdigits(&s);
|
||||||
if (wp->w_buffer->b_p_tw == 0)
|
if (tw == 0)
|
||||||
goto skip; // 'textwidth' not set, skip this item
|
goto skip; // 'textwidth' not set, skip this item
|
||||||
col += wp->w_buffer->b_p_tw;
|
col += tw;
|
||||||
if (col < 0)
|
if (col < 0)
|
||||||
goto skip;
|
goto skip;
|
||||||
}
|
}
|
||||||
@ -7971,6 +7986,9 @@ skip:
|
|||||||
return e_invalid_argument; // illegal trailing comma as in "set cc=80,"
|
return e_invalid_argument; // illegal trailing comma as in "set cc=80,"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (wp == NULL)
|
||||||
|
return NULL; // only parse "cc"
|
||||||
|
|
||||||
vim_free(wp->w_p_cc_cols);
|
vim_free(wp->w_p_cc_cols);
|
||||||
if (count == 0)
|
if (count == 0)
|
||||||
wp->w_p_cc_cols = NULL;
|
wp->w_p_cc_cols = NULL;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user