mirror of
https://github.com/neovim/neovim.git
synced 2025-10-13 13:26:06 +00:00
vim-patch:8.2.1757: Mac: default locale is lacking the encoding (#12994)
vim-patch:8.2.1757: Mac: default locale is lacking the encoding
Problem: Mac: default locale is lacking the encoding.
Solution: Add ".UTF-8 to the locale. (Yee Cheng Chin, closes vim/vim#7022)
a5fe91e6dc
Cherry-pick test_environ.vim changes from patch 8.2.1432.
This commit is contained in:
@@ -43,14 +43,20 @@ void lang_init(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char buf[50] = { 0 };
|
||||||
|
bool set_lang;
|
||||||
if (lang_region) {
|
if (lang_region) {
|
||||||
os_setenv("LANG", lang_region, true);
|
set_lang = true;
|
||||||
|
xstrlcpy(buf, lang_region, sizeof(buf));
|
||||||
} else {
|
} else {
|
||||||
char buf[20] = { 0 };
|
set_lang = CFStringGetCString(cf_lang_region, buf, 40,
|
||||||
if (CFStringGetCString(cf_lang_region, buf, 20,
|
kCFStringEncodingUTF8);
|
||||||
kCFStringEncodingUTF8)) {
|
}
|
||||||
os_setenv("LANG", buf, true);
|
if (set_lang) {
|
||||||
|
if (strcasestr(buf, "utf-8") == NULL) {
|
||||||
|
xstrlcat(buf, ".UTF-8", sizeof(buf));
|
||||||
}
|
}
|
||||||
|
os_setenv("LANG", buf, true);
|
||||||
}
|
}
|
||||||
CFRelease(cf_lang_region);
|
CFRelease(cf_lang_region);
|
||||||
# ifdef HAVE_LOCALE_H
|
# ifdef HAVE_LOCALE_H
|
||||||
|
@@ -1,5 +1,9 @@
|
|||||||
|
" Test for environment variables.
|
||||||
|
|
||||||
scriptencoding utf-8
|
scriptencoding utf-8
|
||||||
|
|
||||||
|
source check.vim
|
||||||
|
|
||||||
func Test_environ()
|
func Test_environ()
|
||||||
unlet! $TESTENV
|
unlet! $TESTENV
|
||||||
call assert_equal(0, has_key(environ(), 'TESTENV'))
|
call assert_equal(0, has_key(environ(), 'TESTENV'))
|
||||||
@@ -42,3 +46,24 @@ func Test_external_env()
|
|||||||
endif
|
endif
|
||||||
call assert_equal('', result)
|
call assert_equal('', result)
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
func Test_mac_locale()
|
||||||
|
CheckFeature osxdarwin
|
||||||
|
|
||||||
|
" If $LANG is not set then the system locale will be used.
|
||||||
|
" Run Vim after unsetting all the locale environmental vars, and capture the
|
||||||
|
" output of :lang.
|
||||||
|
let lang_results = system("unset LANG; unset LC_MESSAGES; " ..
|
||||||
|
\ shellescape(v:progpath) ..
|
||||||
|
\ " --clean -esX -c 'redir @a' -c 'lang' -c 'put a' -c 'print' -c 'qa!' ")
|
||||||
|
|
||||||
|
" Check that:
|
||||||
|
" 1. The locale is the form of <locale>.UTF-8.
|
||||||
|
" 2. Check that fourth item (LC_NUMERIC) is properly set to "C".
|
||||||
|
" Example match: "en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8"
|
||||||
|
call assert_match('"\([a-zA-Z_]\+\.UTF-8/\)\{3}C\(/[a-zA-Z_]\+\.UTF-8\)\{2}"',
|
||||||
|
\ lang_results,
|
||||||
|
\ "Default locale should have UTF-8 encoding set, and LC_NUMERIC set to 'C'")
|
||||||
|
endfunc
|
||||||
|
|
||||||
|
" vim: shiftwidth=2 sts=2 expandtab
|
||||||
|
Reference in New Issue
Block a user