Problem: Checking character options is duplicated and incomplete.
Solution: Move checking to check_chars_options(). (closes #10863)
cw_table = table;
cw_table_size = l->lv_len;
- // Check that the new value does not conflict with 'fillchars' or
- // 'listchars'.
- if (set_chars_option(curwin, &p_fcs, FALSE) != NULL)
- 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;
- }
- }
- }
+ // Check that the new value does not conflict with 'listchars' or
+ // 'fillchars'.
+ error = check_chars_options();
if (error != NULL)
{
emsg(_(error));
{
if (check_opt_strings(p_ambw, p_ambw_values, FALSE) != OK)
errmsg = e_invalid_argument;
- else if (set_chars_option(curwin, &p_fcs, FALSE) != NULL)
- errmsg = e_conflicts_with_value_of_fillchars;
else
- {
- 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:
- {}
+ errmsg = check_chars_options();
}
// 'background'
int screen_screencol(void);
int screen_screenrow(void);
char *set_chars_option(win_T *wp, char_u **varp, int apply);
+char *check_chars_options(void);
/* vim: set ft=c : */
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;
+}
call assert_fails('set sessionoptions=curdir,sesdir', 'E474:')
call assert_fails('set foldmarker={{{,', '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&
- 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&
call assert_fails('set fileencoding=latin1,utf-8', 'E474:')
set nomodifiable
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 176,
/**/
175,
/**/