aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/nvim/globals.h2
-rw-r--r--src/nvim/mbyte.c12
-rw-r--r--src/nvim/option.c77
-rw-r--r--src/nvim/options.lua9
4 files changed, 17 insertions, 83 deletions
diff --git a/src/nvim/globals.h b/src/nvim/globals.h
index d68e952693..40994d20b5 100644
--- a/src/nvim/globals.h
+++ b/src/nvim/globals.h
@@ -798,6 +798,8 @@ EXTERN bool enc_utf8 INIT(= false); /* UTF-8 encoded Unicode */
EXTERN int enc_latin1like INIT(= TRUE); /* 'encoding' is latin1 comp. */
EXTERN int has_mbyte INIT(= 0); /* any multi-byte encoding */
+/// Encoding used when 'fencs' is set to "default"
+EXTERN char_u *fenc_default INIT(= NULL);
/*
* To speed up BYTELEN() we fill a table with the byte lengths whenever
diff --git a/src/nvim/mbyte.c b/src/nvim/mbyte.c
index b02c18c53b..fdd83f9dac 100644
--- a/src/nvim/mbyte.c
+++ b/src/nvim/mbyte.c
@@ -568,11 +568,6 @@ char_u * mb_init(void)
/* When enc_utf8 is set or reset, (de)allocate ScreenLinesUC[] */
screenalloc(false);
- /* 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);
-
#ifdef HAVE_WORKING_LIBINTL
/* GNU gettext 0.10.37 supports this feature: set the codeset used for
* translated messages independently from the current locale. */
@@ -2417,11 +2412,8 @@ char_u *enc_canonize(char_u *enc) FUNC_ATTR_NONNULL_RET
int i;
if (STRCMP(enc, "default") == 0) {
- /* Use the default encoding as it's found by set_init_1(). */
- char_u *r = get_encoding_default();
- if (r == NULL)
- r = (char_u *)"latin1";
- return vim_strsave(r);
+ // Use the default encoding as found by set_init_1().
+ return vim_strsave(fenc_default);
}
/* copy "enc" to allocated memory, with room for two '-' */
diff --git a/src/nvim/option.c b/src/nvim/option.c
index 486f2083a6..2ac1abeeba 100644
--- a/src/nvim/option.c
+++ b/src/nvim/option.c
@@ -233,12 +233,6 @@ typedef struct vimoption {
#define P_CURSWANT 0x2000000U /* update curswant required; not needed when
* there is a redraw flag */
-#define ISK_LATIN1 (char_u *)"@,48-57,_,192-255"
-
-/* 'isprint' for latin1 is also used for MS-Windows cp1252, where 0x80 is used
- * for the currency sign. */
-# define ISP_LATIN1 (char_u *)"@,161-255"
-
#define HIGHLIGHT_INIT \
"8:SpecialKey,~:EndOfBuffer,z:TermCursor,Z:TermCursorNC,@:NonText," \
"d:Directory,e:ErrorMsg,i:IncSearch,l:Search,m:MoreMsg,M:ModeMsg,n:LineNr," \
@@ -776,59 +770,18 @@ void set_init_1(void)
/* Parse default for 'listchars'. */
(void)set_chars_option(&p_lcs);
- /* enc_locale() will try to find the encoding of the current locale. */
+ // enc_locale() will try to find the encoding of the current locale.
+ // This will be used when 'default' is used as encoding specifier
+ // in 'fileencodings'
char_u *p = enc_locale();
- if (p != NULL) {
- char_u *save_enc;
-
- /* Try setting 'encoding' and check if the value is valid.
- * If not, go back to the default "utf-8". */
- save_enc = p_enc;
- p_enc = (char_u *) p;
- if (STRCMP(p_enc, "gb18030") == 0) {
- /* We don't support "gb18030", but "cp936" is a good substitute
- * for practical purposes, thus use that. It's not an alias to
- * still support conversion between gb18030 and utf-8. */
- p_enc = vim_strsave((char_u *)"cp936");
- xfree(p);
- }
- if (mb_init() == NULL) {
- opt_idx = findoption((char_u *)"encoding");
- if (opt_idx >= 0) {
- options[opt_idx].def_val[VI_DEFAULT] = p_enc;
- options[opt_idx].flags |= P_DEF_ALLOCED;
- }
-
-#if defined(MSWIN) || defined(MACOS)
- if (STRCMP(p_enc, "latin1") == 0
- || enc_utf8
- ) {
- /* Adjust the default for 'isprint' and 'iskeyword' to match
- * latin1. */
- set_string_option_direct((char_u *)"isp", -1,
- ISP_LATIN1, OPT_FREE, SID_NONE);
- set_string_option_direct((char_u *)"isk", -1,
- ISK_LATIN1, OPT_FREE, SID_NONE);
- opt_idx = findoption((char_u *)"isp");
- if (opt_idx >= 0)
- options[opt_idx].def_val[VIM_DEFAULT] = ISP_LATIN1;
- opt_idx = findoption((char_u *)"isk");
- if (opt_idx >= 0)
- options[opt_idx].def_val[VIM_DEFAULT] = ISK_LATIN1;
- (void)init_chartab();
- }
-#endif
-
- } else {
- xfree(p_enc);
- // mb_init() failed; fallback to utf8 and try again.
- p_enc = save_enc;
- mb_init();
- }
- } else {
- // enc_locale() failed; initialize the default (utf8).
- mb_init();
+ if (p == NULL) {
+ // use utf-8 as 'default' if locale encoding can't be detected.
+ p = vim_strsave((char_u *)"utf-8");
}
+ fenc_default = p;
+
+ // Initialize multibyte (utf-8) handling
+ mb_init();
// Don't change &encoding when resetting to defaults with ":set all&".
opt_idx = findoption((char_u *)"encoding");
@@ -4669,16 +4622,6 @@ char_u *get_highlight_default(void)
return (char_u *)NULL;
}
-char_u *get_encoding_default(void)
-{
- int i;
-
- i = findoption((char_u *)"enc");
- if (i >= 0)
- return options[i].def_val[VI_DEFAULT];
- return (char_u *)NULL;
-}
-
/*
* Translate a string like "t_xx", "<t_xx>" or "<S-Tab>" to a key number.
*/
diff --git a/src/nvim/options.lua b/src/nvim/options.lua
index e485b90394..945626ff79 100644
--- a/src/nvim/options.lua
+++ b/src/nvim/options.lua
@@ -748,7 +748,7 @@ return {
type='string', list='comma', scope={'global'},
vi_def=true,
varname='p_fencs',
- defaults={if_true={vi="ucs-bom"}}
+ defaults={if_true={vi="ucs-bom,utf-8,default,latin1"}}
},
{
full_name='fileformat', abbreviation='ff',
@@ -1285,7 +1285,7 @@ return {
vim=true,
alloced=true,
varname='p_isk',
- defaults={if_true={vi="@,48-57,_", vim=macros('ISK_LATIN1')}}
+ defaults={if_true={vi="@,48-57,_", vim="@,48-57,_,192-255"}}
},
{
full_name='isprint', abbreviation='isp',
@@ -1294,10 +1294,7 @@ return {
vi_def=true,
redraw={'all_windows'},
varname='p_isp',
- defaults={
- condition='MSWIN',
- if_true={vi="@,~-255"},
- if_false={vi=macros("ISP_LATIN1")}
+ defaults={if_true={vi="@,161-255"}
}
},
{