mirror of
https://github.com/vim/vim.git
synced 2025-07-26 11:04:33 -04:00
patch 9.0.0176: checking character options is duplicated and incomplete
Problem: Checking character options is duplicated and incomplete. Solution: Move checking to check_chars_options(). (closes #10863)
This commit is contained in:
parent
afa23d1b99
commit
8ca29b6a35
28
src/mbyte.c
28
src/mbyte.c
@ -5645,31 +5645,9 @@ f_setcellwidths(typval_T *argvars, typval_T *rettv UNUSED)
|
|||||||
cw_table = table;
|
cw_table = table;
|
||||||
cw_table_size = l->lv_len;
|
cw_table_size = l->lv_len;
|
||||||
|
|
||||||
// Check that the new value does not conflict with 'fillchars' or
|
// Check that the new value does not conflict with 'listchars' or
|
||||||
// 'listchars'.
|
// 'fillchars'.
|
||||||
if (set_chars_option(curwin, &p_fcs, FALSE) != NULL)
|
error = check_chars_options();
|
||||||
error = e_conflicts_with_value_of_fillchars;
|
|
||||||
else if (set_chars_option(curwin, &p_lcs, FALSE) != NULL)
|
|
||||||
error = e_conflicts_with_value_of_listchars;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
tabpage_T *tp;
|
|
||||||
win_T *wp;
|
|
||||||
|
|
||||||
FOR_ALL_TAB_WINDOWS(tp, wp)
|
|
||||||
{
|
|
||||||
if (set_chars_option(wp, &wp->w_p_lcs, FALSE) != NULL)
|
|
||||||
{
|
|
||||||
error = e_conflicts_with_value_of_listchars;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (set_chars_option(wp, &wp->w_p_fcs, FALSE) != NULL)
|
|
||||||
{
|
|
||||||
error = e_conflicts_with_value_of_fillchars;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (error != NULL)
|
if (error != NULL)
|
||||||
{
|
{
|
||||||
emsg(_(error));
|
emsg(_(error));
|
||||||
|
@ -866,24 +866,8 @@ did_set_string_option(
|
|||||||
{
|
{
|
||||||
if (check_opt_strings(p_ambw, p_ambw_values, FALSE) != OK)
|
if (check_opt_strings(p_ambw, p_ambw_values, FALSE) != OK)
|
||||||
errmsg = e_invalid_argument;
|
errmsg = e_invalid_argument;
|
||||||
else if (set_chars_option(curwin, &p_fcs, FALSE) != NULL)
|
|
||||||
errmsg = e_conflicts_with_value_of_fillchars;
|
|
||||||
else
|
else
|
||||||
{
|
errmsg = check_chars_options();
|
||||||
tabpage_T *tp;
|
|
||||||
win_T *wp;
|
|
||||||
|
|
||||||
FOR_ALL_TAB_WINDOWS(tp, wp)
|
|
||||||
{
|
|
||||||
if (set_chars_option(wp, &wp->w_p_lcs, FALSE) != NULL)
|
|
||||||
{
|
|
||||||
errmsg = e_conflicts_with_value_of_listchars;
|
|
||||||
goto ambw_end;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
ambw_end:
|
|
||||||
{}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 'background'
|
// 'background'
|
||||||
|
@ -56,4 +56,5 @@ int number_width(win_T *wp);
|
|||||||
int screen_screencol(void);
|
int screen_screencol(void);
|
||||||
int screen_screenrow(void);
|
int screen_screenrow(void);
|
||||||
char *set_chars_option(win_T *wp, char_u **varp, int apply);
|
char *set_chars_option(win_T *wp, char_u **varp, int apply);
|
||||||
|
char *check_chars_options(void);
|
||||||
/* vim: set ft=c : */
|
/* vim: set ft=c : */
|
||||||
|
25
src/screen.c
25
src/screen.c
@ -5155,3 +5155,28 @@ set_chars_option(win_T *wp, char_u **varp, int apply)
|
|||||||
|
|
||||||
return NULL; // no error
|
return NULL; // no error
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Check all global and local values of 'listchars' and 'fillchars'.
|
||||||
|
* Return an untranslated error messages if any of them is invalid, NULL
|
||||||
|
* otherwise.
|
||||||
|
*/
|
||||||
|
char *
|
||||||
|
check_chars_options(void)
|
||||||
|
{
|
||||||
|
tabpage_T *tp;
|
||||||
|
win_T *wp;
|
||||||
|
|
||||||
|
if (set_chars_option(curwin, &p_lcs, FALSE) != NULL)
|
||||||
|
return e_conflicts_with_value_of_listchars;
|
||||||
|
if (set_chars_option(curwin, &p_fcs, FALSE) != NULL)
|
||||||
|
return e_conflicts_with_value_of_fillchars;
|
||||||
|
FOR_ALL_TAB_WINDOWS(tp, wp)
|
||||||
|
{
|
||||||
|
if (set_chars_option(wp, &wp->w_p_lcs, FALSE) != NULL)
|
||||||
|
return e_conflicts_with_value_of_listchars;
|
||||||
|
if (set_chars_option(wp, &wp->w_p_fcs, FALSE) != NULL)
|
||||||
|
return e_conflicts_with_value_of_fillchars;
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
@ -466,9 +466,17 @@ func Test_set_errors()
|
|||||||
call assert_fails('set sessionoptions=curdir,sesdir', 'E474:')
|
call assert_fails('set sessionoptions=curdir,sesdir', 'E474:')
|
||||||
call assert_fails('set foldmarker={{{,', 'E474:')
|
call assert_fails('set foldmarker={{{,', 'E474:')
|
||||||
call assert_fails('set sessionoptions=sesdir,curdir', 'E474:')
|
call assert_fails('set sessionoptions=sesdir,curdir', 'E474:')
|
||||||
call assert_fails('set listchars=trail:· ambiwidth=double', 'E834:')
|
setlocal listchars=trail:·
|
||||||
|
call assert_fails('set ambiwidth=double', 'E834:')
|
||||||
|
setlocal listchars=trail:-
|
||||||
|
setglobal listchars=trail:·
|
||||||
|
call assert_fails('set ambiwidth=double', 'E834:')
|
||||||
set listchars&
|
set listchars&
|
||||||
call assert_fails('set fillchars=stl:· ambiwidth=double', 'E835:')
|
setlocal fillchars=stl:·
|
||||||
|
call assert_fails('set ambiwidth=double', 'E835:')
|
||||||
|
setlocal fillchars=stl:-
|
||||||
|
setglobal fillchars=stl:·
|
||||||
|
call assert_fails('set ambiwidth=double', 'E835:')
|
||||||
set fillchars&
|
set fillchars&
|
||||||
call assert_fails('set fileencoding=latin1,utf-8', 'E474:')
|
call assert_fails('set fileencoding=latin1,utf-8', 'E474:')
|
||||||
set nomodifiable
|
set nomodifiable
|
||||||
|
@ -735,6 +735,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 */
|
||||||
|
/**/
|
||||||
|
176,
|
||||||
/**/
|
/**/
|
||||||
175,
|
175,
|
||||||
/**/
|
/**/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user