bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#22392: 25.0.50; NS Emacs run from OS X GUI doesn't set locale


From: Alan Third
Subject: bug#22392: 25.0.50; NS Emacs run from OS X GUI doesn't set locale
Date: Sun, 17 Jan 2016 14:27:37 +0000

When Emacs is run from the OS X GUI (the dock, spotlight, finder, etc.)
in OS X it doesn't set the locale correctly.

Here's the output of C-h C RET on my machine with no user configuration:

Coding system for saving this buffer:
  Not set locally, use the default.
Default coding system (for new files):
  nil
Coding system for keyboard input:
  = -- no-conversion (alias: binary)

Coding system for terminal output:
  nil
Coding system for inter-client cut and paste:
  nil
Defaults for subprocess I/O:
  decoding: U -- utf-8-unix (alias: mule-utf-8-unix)

  encoding: U -- utf-8-unix (alias: mule-utf-8-unix)


Priority order for recognizing coding systems when reading files:
  1. utf-8 (alias: mule-utf-8)
  2. iso-2022-7bit 
  3. iso-latin-1 (alias: iso-8859-1 latin-1)
  4. iso-2022-7bit-lock (alias: iso-2022-int-1)
  5. iso-2022-8bit-ss2 

I've snipped off the rest, if you want it I can provide it.

Emacs relies on LC_ALL, LC_CTYPE or LANG being set, and OS X's terminal
application sets the LANG environment variable. OS X doesn't set any of
these variables when the application is run from the GUI.

Additionally, Emacs detects when it's being run from the OS X terminal
(mule-cmds.el line 2722) and hard-codes some settings.

The Windows version of Emacs has a similar problem and solves this by
running an "init_environment" function from main in emacs.c that uses
the Windows APIs to set the LANG variable. (as described at
https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3221#32)

I've written a patch that copies this functionality but for NextStep.
c-h C RET gives:

Coding system for saving this buffer:
  Not set locally, use the default.
Default coding system (for new files):
  1 -- iso-latin-1-unix (alias: iso-8859-1-unix latin-1-unix)

Coding system for keyboard input:
  1 -- iso-latin-1-unix (alias: iso-8859-1-unix latin-1-unix)

Coding system for terminal output:
  1 -- iso-latin-1-unix (alias: iso-8859-1-unix latin-1-unix)

Coding system for inter-client cut and paste:
  nil
Defaults for subprocess I/O:
  decoding: U -- utf-8-unix (alias: mule-utf-8-unix)

  encoding: U -- utf-8-unix (alias: mule-utf-8-unix)


Priority order for recognizing coding systems when reading files:
  1. iso-latin-1 (alias: iso-8859-1 latin-1)
  2. utf-8 (alias: mule-utf-8)
  3. iso-2022-7bit 
  4. iso-2022-7bit-lock (alias: iso-2022-int-1)
  5. iso-2022-8bit-ss2 

Which looks better to me. It also gives me A4 paper instead of legal and
ispell/hunspell is better behaved.

Attachment: 0001-Set-locale-when-run-from-OS-X-GUI.patch
Description: NS environment patch



In GNU Emacs 25.0.50.1 (x86_64-apple-darwin15.2.0, NS appkit-1404.34 Version 
10.11.2 (Build 15C50))
 of 2016-01-16 built on galloway.idiocy.org
Repository revision: a0d5b7ae3bb014bb0b1c205d123c597df0e76411
Windowing system distributor 'Apple', version 10.3.1404
Configured features:
JPEG IMAGEMAGICK ACL LIBXML2 ZLIB TOOLKIT_SCROLL_BARS NS

Important settings:
  locale-coding-system: utf-8

Major mode: Text

Minor modes in effect:
  global-flycheck-mode: t
  flycheck-mode: t
  show-paren-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  column-number-mode: t
  line-number-mode: t
  transient-mark-mode: t

Recent messages:
.emacs.d/elpa/seq-20151028.759/seq.el: Pattern t is deprecated.  Use `_' 
instead [4 times]
For information about GNU Emacs and the GNU system, type C-h C-a.
Quit
Making completion list...
Quit
Making completion list...

Load-path shadows:
/Users/alan/.emacs.d/elpa/magit-20160116.333/magit-popup hides 
/Users/alan/.emacs.d/elpa/magit-popup-20160107.437/magit-popup
/Users/alan/.emacs.d/elpa/org-20160111/ox hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/ox
/Users/alan/.emacs.d/elpa/org-20160111/ox-texinfo hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/ox-texinfo
/Users/alan/.emacs.d/elpa/org-20160111/ox-publish hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/ox-publish
/Users/alan/.emacs.d/elpa/org-20160111/ox-org hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/ox-org
/Users/alan/.emacs.d/elpa/org-20160111/ox-odt hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/ox-odt
/Users/alan/.emacs.d/elpa/org-20160111/ox-md hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/ox-md
/Users/alan/.emacs.d/elpa/org-20160111/ox-man hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/ox-man
/Users/alan/.emacs.d/elpa/org-20160111/ox-latex hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/ox-latex
/Users/alan/.emacs.d/elpa/org-20160111/ox-icalendar hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/ox-icalendar
/Users/alan/.emacs.d/elpa/org-20160111/ox-html hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/ox-html
/Users/alan/.emacs.d/elpa/org-20160111/ox-beamer hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/ox-beamer
/Users/alan/.emacs.d/elpa/org-20160111/ox-ascii hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/ox-ascii
/Users/alan/.emacs.d/elpa/org-20160111/org hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/org
/Users/alan/.emacs.d/elpa/org-20160111/org-w3m hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/org-w3m
/Users/alan/.emacs.d/elpa/org-20160111/org-version hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/org-version
/Users/alan/.emacs.d/elpa/org-20160111/org-timer hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/org-timer
/Users/alan/.emacs.d/elpa/org-20160111/org-table hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/org-table
/Users/alan/.emacs.d/elpa/org-20160111/org-src hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/org-src
/Users/alan/.emacs.d/elpa/org-20160111/org-rmail hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/org-rmail
/Users/alan/.emacs.d/elpa/org-20160111/org-protocol hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/org-protocol
/Users/alan/.emacs.d/elpa/org-20160111/org-plot hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/org-plot
/Users/alan/.emacs.d/elpa/org-20160111/org-pcomplete hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/org-pcomplete
/Users/alan/.emacs.d/elpa/org-20160111/org-mouse hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/org-mouse
/Users/alan/.emacs.d/elpa/org-20160111/org-mobile hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/org-mobile
/Users/alan/.emacs.d/elpa/org-20160111/org-mhe hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/org-mhe
/Users/alan/.emacs.d/elpa/org-20160111/org-macs hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/org-macs
/Users/alan/.emacs.d/elpa/org-20160111/org-macro hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/org-macro
/Users/alan/.emacs.d/elpa/org-20160111/org-loaddefs hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/org-loaddefs
/Users/alan/.emacs.d/elpa/org-20160111/org-list hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/org-list
/Users/alan/.emacs.d/elpa/org-20160111/org-irc hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/org-irc
/Users/alan/.emacs.d/elpa/org-20160111/org-install hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/org-install
/Users/alan/.emacs.d/elpa/org-20160111/org-inlinetask hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/org-inlinetask
/Users/alan/.emacs.d/elpa/org-20160111/org-info hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/org-info
/Users/alan/.emacs.d/elpa/org-20160111/org-indent hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/org-indent
/Users/alan/.emacs.d/elpa/org-20160111/org-id hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/org-id
/Users/alan/.emacs.d/elpa/org-20160111/org-habit hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/org-habit
/Users/alan/.emacs.d/elpa/org-20160111/org-gnus hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/org-gnus
/Users/alan/.emacs.d/elpa/org-20160111/org-footnote hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/org-footnote
/Users/alan/.emacs.d/elpa/org-20160111/org-feed hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/org-feed
/Users/alan/.emacs.d/elpa/org-20160111/org-faces hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/org-faces
/Users/alan/.emacs.d/elpa/org-20160111/org-eshell hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/org-eshell
/Users/alan/.emacs.d/elpa/org-20160111/org-entities hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/org-entities
/Users/alan/.emacs.d/elpa/org-20160111/org-element hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/org-element
/Users/alan/.emacs.d/elpa/org-20160111/org-docview hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/org-docview
/Users/alan/.emacs.d/elpa/org-20160111/org-datetree hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/org-datetree
/Users/alan/.emacs.d/elpa/org-20160111/org-ctags hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/org-ctags
/Users/alan/.emacs.d/elpa/org-20160111/org-crypt hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/org-crypt
/Users/alan/.emacs.d/elpa/org-20160111/org-compat hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/org-compat
/Users/alan/.emacs.d/elpa/org-20160111/org-colview hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/org-colview
/Users/alan/.emacs.d/elpa/org-20160111/org-clock hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/org-clock
/Users/alan/.emacs.d/elpa/org-20160111/org-capture hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/org-capture
/Users/alan/.emacs.d/elpa/org-20160111/org-bibtex hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/org-bibtex
/Users/alan/.emacs.d/elpa/org-20160111/org-bbdb hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/org-bbdb
/Users/alan/.emacs.d/elpa/org-20160111/org-attach hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/org-attach
/Users/alan/.emacs.d/elpa/org-20160111/org-archive hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/org-archive
/Users/alan/.emacs.d/elpa/org-20160111/org-agenda hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/org-agenda
/Users/alan/.emacs.d/elpa/org-20160111/ob hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/ob
/Users/alan/.emacs.d/elpa/org-20160111/ob-tangle hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-tangle
/Users/alan/.emacs.d/elpa/org-20160111/ob-table hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-table
/Users/alan/.emacs.d/elpa/org-20160111/ob-sqlite hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-sqlite
/Users/alan/.emacs.d/elpa/org-20160111/ob-sql hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-sql
/Users/alan/.emacs.d/elpa/org-20160111/ob-shen hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-shen
/Users/alan/.emacs.d/elpa/org-20160111/ob-screen hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-screen
/Users/alan/.emacs.d/elpa/org-20160111/ob-scheme hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-scheme
/Users/alan/.emacs.d/elpa/org-20160111/ob-scala hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-scala
/Users/alan/.emacs.d/elpa/org-20160111/ob-sass hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-sass
/Users/alan/.emacs.d/elpa/org-20160111/ob-ruby hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-ruby
/Users/alan/.emacs.d/elpa/org-20160111/ob-ref hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-ref
/Users/alan/.emacs.d/elpa/org-20160111/ob-R hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-R
/Users/alan/.emacs.d/elpa/org-20160111/ob-python hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-python
/Users/alan/.emacs.d/elpa/org-20160111/ob-plantuml hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-plantuml
/Users/alan/.emacs.d/elpa/org-20160111/ob-picolisp hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-picolisp
/Users/alan/.emacs.d/elpa/org-20160111/ob-perl hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-perl
/Users/alan/.emacs.d/elpa/org-20160111/ob-org hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-org
/Users/alan/.emacs.d/elpa/org-20160111/ob-octave hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-octave
/Users/alan/.emacs.d/elpa/org-20160111/ob-ocaml hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-ocaml
/Users/alan/.emacs.d/elpa/org-20160111/ob-mscgen hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-mscgen
/Users/alan/.emacs.d/elpa/org-20160111/ob-maxima hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-maxima
/Users/alan/.emacs.d/elpa/org-20160111/ob-matlab hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-matlab
/Users/alan/.emacs.d/elpa/org-20160111/ob-makefile hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-makefile
/Users/alan/.emacs.d/elpa/org-20160111/ob-lob hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-lob
/Users/alan/.emacs.d/elpa/org-20160111/ob-lisp hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-lisp
/Users/alan/.emacs.d/elpa/org-20160111/ob-lilypond hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-lilypond
/Users/alan/.emacs.d/elpa/org-20160111/ob-ledger hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-ledger
/Users/alan/.emacs.d/elpa/org-20160111/ob-latex hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-latex
/Users/alan/.emacs.d/elpa/org-20160111/ob-keys hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-keys
/Users/alan/.emacs.d/elpa/org-20160111/ob-js hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-js
/Users/alan/.emacs.d/elpa/org-20160111/ob-java hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-java
/Users/alan/.emacs.d/elpa/org-20160111/ob-io hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-io
/Users/alan/.emacs.d/elpa/org-20160111/ob-haskell hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-haskell
/Users/alan/.emacs.d/elpa/org-20160111/ob-gnuplot hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-gnuplot
/Users/alan/.emacs.d/elpa/org-20160111/ob-fortran hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-fortran
/Users/alan/.emacs.d/elpa/org-20160111/ob-exp hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-exp
/Users/alan/.emacs.d/elpa/org-20160111/ob-eval hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-eval
/Users/alan/.emacs.d/elpa/org-20160111/ob-emacs-lisp hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-emacs-lisp
/Users/alan/.emacs.d/elpa/org-20160111/ob-dot hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-dot
/Users/alan/.emacs.d/elpa/org-20160111/ob-ditaa hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-ditaa
/Users/alan/.emacs.d/elpa/org-20160111/ob-css hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-css
/Users/alan/.emacs.d/elpa/org-20160111/ob-core hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-core
/Users/alan/.emacs.d/elpa/org-20160111/ob-comint hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-comint
/Users/alan/.emacs.d/elpa/org-20160111/ob-clojure hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-clojure
/Users/alan/.emacs.d/elpa/org-20160111/ob-calc hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-calc
/Users/alan/.emacs.d/elpa/org-20160111/ob-C hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-C
/Users/alan/.emacs.d/elpa/org-20160111/ob-awk hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-awk
/Users/alan/.emacs.d/elpa/org-20160111/ob-asymptote hides 
/Applications/Emacs.app/Contents/Resources/lisp/org/ob-asymptote
/Users/alan/.emacs.d/elpa/seq-20151028.759/seq hides 
/Applications/Emacs.app/Contents/Resources/lisp/emacs-lisp/seq

Features:
(shadow sort mail-extr emacsbug message dired format-spec rfc822 mml
mml-sec epg gnus-util mm-decode mm-bodies mm-encode mail-parse rfc2231
mailabbrev gmm-utils mailheader sendmail rfc2047 rfc2045 ietf-drums
mm-util help-fns mail-prsvr mail-utils paredit flycheck find-func
help-mode rx subr-x seq gv dash exec-path-from-shell finder-inf
autoinsert csv-mode-autoloads gnuplot-autoloads go-mode-autoloads
paredit-autoloads quack-autoloads queue-autoloads typopunct-autoloads
info package epg-config wombat-theme cl-seq unichar easy-mmode
powershell-mode derived compile comint ansi-color ring speedbar sb-image
ezimage dframe easymenu edmacro kmacro cl-loaddefs pcase cl-lib windmove
paren server time-date mule-util tooltip eldoc electric uniquify
ediff-hook vc-hooks lisp-float-type mwheel ns-win ucs-normalize
term/common-win tool-bar dnd fontset image regexp-opt fringe
tabulated-list newcomment elisp-mode lisp-mode prog-mode register page
menu-bar rfn-eshadow timer select scroll-bar mouse jit-lock font-lock
syntax facemenu font-core frame cl-generic cham georgian utf-8-lang
misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms
cp51932 hebrew greek romanian slovak czech european ethiopic indian
cyrillic chinese charscript case-table epa-hook jka-cmpr-hook help
simple abbrev minibuffer cl-preloaded nadvice loaddefs button faces
cus-face macroexp files text-properties overlay sha1 md5 base64 format
env code-pages mule custom widget hashtable-print-readable backquote
cocoa ns multi-tty make-network-process emacs)

Memory information:
((conses 16 292894 11471)
 (symbols 48 27242 0)
 (miscs 40 65 228)
 (strings 32 44073 8751)
 (string-bytes 1 1326190)
 (vectors 16 43065)
 (vector-slots 8 757477 4748)
 (floats 8 188 150)
 (intervals 56 211 79)
 (buffers 976 14))

-- 
Alan Third

reply via email to

[Prev in Thread] Current Thread [Next in Thread]