Subject: 25.0.50; NS Emacs run from OS X GUI doesn't set locale

From: Alan Third <[email-masked]>
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.

>From 85d5d2f0213e052d1eccb6dc9e00f090b894ef90 Mon Sep 17 00:00:00 2001
From: Alan Third <[email-masked]>
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 <http://www.gnu.org/licenses/>.  */
 #include <binary-io.h>
 #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 <http://www.gnu.org/licenses/>.  */
+
+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 <http://www.gnu.org/licenses/>.  */
+
+#include <config.h>
+#include <Foundation/Foundation.h>
+
+/* 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)

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