>From 85d5d2f0213e052d1eccb6dc9e00f090b894ef90 Mon Sep 17 00:00:00 2001 From: Alan Third Date: Sun, 17 Jan 2016 13:56:12 +0000 Subject: [PATCH] Set locale when run from OS X GUI * configure.ac: Add nsinit.o to NS_OBJC_OBJ and link the Foundation framework. * src/emacs.c (main): Include nsinit.h and run init_environment. * src/nsinit.c (init_environment): Get locale from OS and set LANG. * src/nsinit.h: header for including nsinit.c. --- configure.ac | 4 ++-- src/emacs.c | 8 ++++++++ src/nsinit.h | 20 ++++++++++++++++++++ src/nsinit.m | 33 +++++++++++++++++++++++++++++++++ 4 files changed, 63 insertions(+), 2 deletions(-) create mode 100644 src/nsinit.h create mode 100644 src/nsinit.m diff --git a/configure.ac b/configure.ac index 6c9b621..7f61344 100644 --- a/configure.ac +++ b/configure.ac @@ -1892,7 +1892,7 @@ if test "${HAVE_NS}" = yes; then INSTALL_ARCH_INDEP_EXTRA= fi - NS_OBJC_OBJ="nsterm.o nsfns.o nsmenu.o nsselect.o nsimage.o $ns_fontfile" + NS_OBJC_OBJ="nsterm.o nsfns.o nsmenu.o nsselect.o nsimage.o nsinit.o $ns_fontfile" fi CFLAGS="$tmp_CFLAGS" CPPFLAGS="$tmp_CPPFLAGS" @@ -5083,7 +5083,7 @@ case "$opsys" in ## only costs about 1.5K of wasted binary space. headerpad_extra=1000 if test "$HAVE_NS" = "yes"; then - libs_nsgui="-framework AppKit" + libs_nsgui="-framework AppKit -framework Foundation" if test "$NS_IMPL_COCOA" = "yes"; then libs_nsgui="$libs_nsgui -framework IOKit" fi diff --git a/src/emacs.c b/src/emacs.c index b1b2170..9473bcd 100644 --- a/src/emacs.c +++ b/src/emacs.c @@ -56,6 +56,10 @@ along with GNU Emacs. If not, see . */ #include #endif +#ifdef HAVE_NS +#include "nsinit.h" +#endif + #ifdef HAVE_WINDOW_SYSTEM #include TERM_HEADER #endif /* HAVE_WINDOW_SYSTEM */ @@ -1371,6 +1375,10 @@ 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 + init_environment(); +#endif + /* Initialize and GC-protect Vinitial_environment and Vprocess_environment before set_initial_environment fills them in. */ diff --git a/src/nsinit.h b/src/nsinit.h new file mode 100644 index 0000000..41b79c8 --- /dev/null +++ b/src/nsinit.h @@ -0,0 +1,20 @@ +/* Definitions for initialising NeXT/Open/GNUstep environment + Copyright (C) 2016 Free Software Foundation, + Inc. + +This file is part of GNU Emacs. + +GNU Emacs is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +GNU Emacs is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GNU Emacs. If not, see . */ + +void init_environment (void); diff --git a/src/nsinit.m b/src/nsinit.m new file mode 100644 index 0000000..32281a6 --- /dev/null +++ b/src/nsinit.m @@ -0,0 +1,33 @@ +/* NeXT/Open/GNUstep / MacOSX initialisation functions. -*- coding: utf-8 -*- + +Copyright (C) 1989, 1993-1994, 2005-2006, 2008-2016 Free Software +Foundation, Inc. + +This file is part of GNU Emacs. + +GNU Emacs is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +GNU Emacs is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GNU Emacs. If not, see . */ + +#include +#include + +/* Set up the environment in cases where Emacs has been run from the + GUI and therefore has missing environment variables. */ +void +init_environment (void) +{ + const char * locale = [[[NSLocale currentLocale] localeIdentifier] UTF8String]; + + /* Set LANG to locale, but not if LANG is already set. */ + setenv("LANG", locale, 0); +} -- 2.5.4 (Apple Git-61)