mirror of
https://github.com/vim/vim.git
synced 2025-07-26 11:04:33 -04:00
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 #7022)
This commit is contained in:
parent
cfcd011fcd
commit
a5fe91e6dc
@ -570,12 +570,17 @@ mac_lang_init(void)
|
|||||||
{
|
{
|
||||||
if (mch_getenv((char_u *)"LANG") == NULL)
|
if (mch_getenv((char_u *)"LANG") == NULL)
|
||||||
{
|
{
|
||||||
char buf[20];
|
char buf[50];
|
||||||
|
|
||||||
|
// $LANG is not set, either because it was unset or Vim was started
|
||||||
|
// from the Dock. Query the system locale.
|
||||||
if (LocaleRefGetPartString(NULL,
|
if (LocaleRefGetPartString(NULL,
|
||||||
kLocaleLanguageMask | kLocaleLanguageVariantMask |
|
kLocaleLanguageMask | kLocaleLanguageVariantMask |
|
||||||
kLocaleRegionMask | kLocaleRegionVariantMask,
|
kLocaleRegionMask | kLocaleRegionVariantMask,
|
||||||
sizeof buf, buf) == noErr && *buf)
|
sizeof(buf) - 10, buf) == noErr && *buf)
|
||||||
{
|
{
|
||||||
|
if (strcasestr(buf, "utf-8") == NULL)
|
||||||
|
strcat(buf, ".UTF-8");
|
||||||
vim_setenv((char_u *)"LANG", (char_u *)buf);
|
vim_setenv((char_u *)"LANG", (char_u *)buf);
|
||||||
# ifdef HAVE_LOCALE_H
|
# ifdef HAVE_LOCALE_H
|
||||||
setlocale(LC_ALL, "");
|
setlocale(LC_ALL, "");
|
||||||
|
@ -2,6 +2,8 @@
|
|||||||
|
|
||||||
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'))
|
||||||
@ -45,4 +47,23 @@ func Test_external_env()
|
|||||||
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
|
" vim: shiftwidth=2 sts=2 expandtab
|
||||||
|
@ -750,6 +750,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 */
|
||||||
|
/**/
|
||||||
|
1757,
|
||||||
/**/
|
/**/
|
||||||
1756,
|
1756,
|
||||||
/**/
|
/**/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user