[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] emacs-25 eb4a18c 1/2: Set locale when run from OS X GUI
From: |
Paul Eggert |
Subject: |
[Emacs-diffs] emacs-25 eb4a18c 1/2: Set locale when run from OS X GUI |
Date: |
Thu, 11 Feb 2016 02:36:57 +0000 |
branch: emacs-25
commit eb4a18c7db2286bcb9d9ea8f392175a28a86772c
Author: Alan Third <address@hidden>
Commit: Paul Eggert <address@hidden>
Set locale when run from OS X GUI
* src/emacs.c (main): Call ns_init_locale.
* src/nsterm.m (ns_init_locale): Get locale from OS and set LANG.
* src/nsterm.h: Include ns_init_locale.
---
src/emacs.c | 5 +++++
src/nsterm.h | 2 ++
src/nsterm.m | 21 +++++++++++++++++++++
3 files changed, 28 insertions(+), 0 deletions(-)
diff --git a/src/emacs.c b/src/emacs.c
index e3cfad0..ab5d777 100644
--- a/src/emacs.c
+++ b/src/emacs.c
@@ -1310,6 +1310,11 @@ Using an Emacs configured with --with-x-toolkit=lucid
does not have this problem
init_ntproc (dumping); /* must precede init_editfns. */
#endif
+#ifdef HAVE_NS
+ /* Initialise the locale from user defaults. */
+ ns_init_locale();
+#endif
+
/* Initialize and GC-protect Vinitial_environment and
Vprocess_environment before set_initial_environment fills them
in. */
diff --git a/src/nsterm.h b/src/nsterm.h
index 6ca584e..fa5399c 100644
--- a/src/nsterm.h
+++ b/src/nsterm.h
@@ -1141,6 +1141,8 @@ extern void ns_retain_object (void *obj);
extern void *ns_alloc_autorelease_pool (void);
extern void ns_release_autorelease_pool (void *);
extern const char *ns_get_defaults_value (const char *key);
+extern void ns_init_locale (void);
+
/* in nsmenu */
extern void update_frame_tool_bar (struct frame *f);
diff --git a/src/nsterm.m b/src/nsterm.m
index f77aadb..43d1377 100644
--- a/src/nsterm.m
+++ b/src/nsterm.m
@@ -586,6 +586,27 @@ ns_load_path (void)
void
+ns_init_locale (void)
+/* OS X doesn't set any environment variables for the locale when run
+ from the GUI. Get the locale from the OS and set LANG. */
+{
+ NSLocale *locale = [NSLocale currentLocale];
+
+ NSTRACE ("ns_init_locale");
+
+ @try
+ {
+ /* Set LANG to locale, but not if LANG is already set. */
+ setenv("LANG", [[locale localeIdentifier] UTF8String], 0);
+ }
+ @catch (NSException *e)
+ {
+ NSLog (@"Locale detection failed: %@: %@", [e name], [e reason]);
+ }
+}
+
+
+void
ns_release_object (void *obj)
/* --------------------------------------------------------------------------
Release an object (callable from C)