Patch 8.2.1757
Problem: Mac: default locale is lacking the encoding.
Solution: Add ".UTF-8 to the locale. (Yee Cheng Chin, closes #7022)
Files: src/os_mac_conv.c, src/testdir/test_environ.vim
*** ../vim-8.2.1756/src/os_mac_conv.c 2020-09-24 23:08:11.132478783 +0200
--- src/os_mac_conv.c 2020-09-27 15:51:03.699171047 +0200
***************
*** 570,581 ****
{
if (mch_getenv((char_u *)"LANG") == NULL)
{
! char buf[20];
if (LocaleRefGetPartString(NULL,
kLocaleLanguageMask | kLocaleLanguageVariantMask |
kLocaleRegionMask | kLocaleRegionVariantMask,
! sizeof buf, buf) == noErr && *buf)
{
vim_setenv((char_u *)"LANG", (char_u *)buf);
# ifdef HAVE_LOCALE_H
setlocale(LC_ALL, "");
--- 570,586 ----
{
if (mch_getenv((char_u *)"LANG") == NULL)
{
! 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,
kLocaleLanguageMask | kLocaleLanguageVariantMask |
kLocaleRegionMask | kLocaleRegionVariantMask,
! sizeof(buf) - 10, buf) == noErr && *buf)
{
+ if (strcasestr(buf, "utf-8") == NULL)
+ strcat(buf, ".UTF-8");
vim_setenv((char_u *)"LANG", (char_u *)buf);
# ifdef HAVE_LOCALE_H
setlocale(LC_ALL, "");
*** ../vim-8.2.1756/src/testdir/test_environ.vim 2020-08-12
18:50:31.875655822 +0200
--- src/testdir/test_environ.vim 2020-09-27 16:02:21.800727786 +0200
***************
*** 2,7 ****
--- 2,9 ----
scriptencoding utf-8
+ source check.vim
+
func Test_environ()
unlet! $TESTENV
call assert_equal(0, has_key(environ(), 'TESTENV'))
***************
*** 45,48 ****
--- 47,69 ----
call assert_equal('', result)
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-8.2.1756/src/version.c 2020-09-27 15:19:23.642118924 +0200
--- src/version.c 2020-09-27 16:02:39.080663293 +0200
***************
*** 752,753 ****
--- 752,755 ----
{ /* Add new patch number below this line */
+ /**/
+ 1757,
/**/
--
Often you're less important than your furniture. If you think about it, you
can get fired but your furniture stays behind, gainfully employed at the
company that didn't need _you_ anymore.
(Scott Adams - The Dilbert principle)
/// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/vim_dev/202009271404.08RE4H0I165821%40masaka.moolenaar.net.