diff src/os_mac_conv.c @ 22417:68115baaf9e4 v8.2.1757

patch 8.2.1757: Mac: default locale is lacking the encoding Commit: https://github.com/vim/vim/commit/a5fe91e6dc610bc823bc3201e2c88179989b13fb Author: Bram Moolenaar <Bram@vim.org> Date: Sun Sep 27 16:03:15 2020 +0200 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 https://github.com/vim/vim/issues/7022)
author Bram Moolenaar <Bram@vim.org>
date Sun, 27 Sep 2020 16:15:03 +0200
parents e1e24b1dba6e
children fc859aea8cec
line wrap: on
line diff
--- a/src/os_mac_conv.c
+++ b/src/os_mac_conv.c
@@ -570,12 +570,17 @@ mac_lang_init(void)
 {
     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,
 		    kLocaleLanguageMask | kLocaleLanguageVariantMask |
 		    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);
 #   ifdef HAVE_LOCALE_H
 	    setlocale(LC_ALL, "");