mirror of
https://github.com/vim/vim.git
synced 2025-07-26 11:04:33 -04:00
patch 8.2.2993: 'fileencodings' default value should depend on 'encoding'
Problem: 'fileencodings' default value should depend on 'encoding'. (Gary Johnson) Solution: When 'encoding' is "utf-8" use a different default value for 'fileencodings'.
This commit is contained in:
parent
2346a63784
commit
5ffefbb35a
@ -733,8 +733,7 @@ codepage_invalid:
|
||||
|
||||
// When using Unicode, set default for 'fileencodings'.
|
||||
if (enc_utf8 && !option_was_set((char_u *)"fencs"))
|
||||
set_string_option_direct((char_u *)"fencs", -1,
|
||||
(char_u *)"ucs-bom,utf-8,default,latin1", OPT_FREE, 0);
|
||||
set_fencs_unicode();
|
||||
|
||||
#if defined(HAVE_BIND_TEXTDOMAIN_CODESET) && defined(FEAT_GETTEXT)
|
||||
// GNU gettext 0.10.37 supports this feature: set the codeset used for
|
||||
|
20
src/option.c
20
src/option.c
@ -535,6 +535,19 @@ set_init_1(int clean_arg)
|
||||
#endif
|
||||
}
|
||||
|
||||
static char_u *fencs_utf8_default = (char_u *)"ucs-bom,utf-8,default,latin1";
|
||||
|
||||
/*
|
||||
* Set the "fileencodings" option to the default value for when 'encoding' is
|
||||
* utf-8.
|
||||
*/
|
||||
void
|
||||
set_fencs_unicode()
|
||||
{
|
||||
set_string_option_direct((char_u *)"fencs", -1, fencs_utf8_default,
|
||||
OPT_FREE, 0);
|
||||
}
|
||||
|
||||
/*
|
||||
* Set an option to its default value.
|
||||
* This does not take care of side effects!
|
||||
@ -558,9 +571,12 @@ set_option_default(
|
||||
dvi = ((flags & P_VI_DEF) || compatible) ? VI_DEFAULT : VIM_DEFAULT;
|
||||
if (flags & P_STRING)
|
||||
{
|
||||
// 'fencs' default value depends on 'encoding'
|
||||
if (options[opt_idx].var == (char_u *)&p_fencs && enc_utf8)
|
||||
set_fencs_unicode();
|
||||
// Use set_string_option_direct() for local options to handle
|
||||
// freeing and allocating the value.
|
||||
if (options[opt_idx].indir != PV_NONE)
|
||||
else if (options[opt_idx].indir != PV_NONE)
|
||||
set_string_option_direct(NULL, opt_idx,
|
||||
options[opt_idx].def_val[dvi], opt_flags, 0);
|
||||
else
|
||||
@ -1684,6 +1700,8 @@ do_set(
|
||||
#endif
|
||||
newval = term_bg_default();
|
||||
}
|
||||
else if ((char_u **)varp == &p_fencs && enc_utf8)
|
||||
newval = fencs_utf8_default;
|
||||
|
||||
// expand environment variables and ~ (since the
|
||||
// default value was already expanded, only
|
||||
|
@ -1,5 +1,6 @@
|
||||
/* option.c */
|
||||
void set_init_1(int clean_arg);
|
||||
void set_fencs_unicode(void);
|
||||
void set_string_default(char *name, char_u *val);
|
||||
void set_number_default(char *name, long val);
|
||||
void set_local_options_default(win_T *wp, int do_buffer);
|
||||
|
@ -1140,6 +1140,14 @@ func Test_opt_default()
|
||||
call assert_equal('vt', &formatoptions)
|
||||
set formatoptions&vim
|
||||
call assert_equal('tcq', &formatoptions)
|
||||
|
||||
call assert_equal('ucs-bom,utf-8,default,latin1', &fencs)
|
||||
set fencs=latin1
|
||||
set fencs&
|
||||
call assert_equal('ucs-bom,utf-8,default,latin1', &fencs)
|
||||
set fencs=latin1
|
||||
set all&
|
||||
call assert_equal('ucs-bom,utf-8,default,latin1', &fencs)
|
||||
endfunc
|
||||
|
||||
" Test for the 'cmdheight' option
|
||||
|
@ -750,6 +750,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
2993,
|
||||
/**/
|
||||
2992,
|
||||
/**/
|
||||
|
Loading…
x
Reference in New Issue
Block a user