Subject: bug#26591: closed (Re: bug#26591: 26.0.50; Using local emacs+tramp with remote emacsclient)

From: [email-masked] (GNU bug Tracking System)
Date: Fri, 19 May 2017 08:55:02 +0000

Your bug report

#26591: 26.0.50; Using local emacs+tramp with remote emacsclient

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
26591: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=26591
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#26591: 26.0.50; Using local emacs+tramp with remote emacsclient
From: Eli Zaretskii <[email-masked]>
To: [email-masked] (Peder O. Klingenberg)
Cc: [email-masked]
Date: Fri, 19 May 2017 11:54:18 +0300
List-Id: <debbugs-submit.debbugs.gnu.org>

> From: [email-masked] (Peder O. Klingenberg)
> Cc: [email-masked]
> Date: Sat, 29 Apr 2017 21:45:15 +0200
> 
> Eli Zaretskii <[email-masked]> writes:
> 
> > server-use-tcp is not described in the manual, so I think we should
> > add its description somewhere, and then reference that place from this
> > text.
> 
> I added a new node to the manual, "TCP Emacs server", and
> collected/wrote documentation on the various related variables there.

Thanks.

> Does this type of doc reorganization require its own NEWS entry?

No.

> Jeez, writing good docs is hard.  Criticisms welcome.  :)

I made minor changes in your wording, see the commit for details.

One thing I'd like you to try to remember for the future: any
additional nodes you add need to be added to the master menu in
emacs.texi, otherwise makeinfo might barf (did you run it?).

Thanks for your work, I pushed your changes to the master branch.

Subject: 26.0.50; Using local emacs+tramp with remote emacsclient
From: [email-masked] (Peder O. Klingenberg)
To: [email-masked]
Date: Fri, 21 Apr 2017 18:15:25 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

My workstation is running a bleeding edge emacs full-screen in a
dedicated display.  When working on a server, from time to time I use
programs that invoke the shell EDITOR.  I can set EDITOR to emacsclient,
but that will just open emacs on the remote machine, which is not what I
want.  I want whatever editing job needs doing to pop up in my local
fullscreen emacs.

I can ssh to the server, so obviously I can use my local emacs to edit
files there via Tramp.  And server.el already has functionality for
listening on a TCP port, which is easily forwarded over ssh (there are
various hacks out there for forwarding unix domain sockets as well,
which I haven't tried).

The missing piece is simply a way to let emacsclient instruct emacs that
the files it passes to emacs are remote.  Attached is a patch for your
consideration which accomplishes this.

Additionally, it would be handy to have some tooling for conveniently
forwarding the correct ports and setting up EDITOR with the correct -T
option on the remote machine, but that is outside the scope of emacs
code, I think.

>From 8a9b508809bf5bef2a797340614cbc4cb0c73a5a Mon Sep 17 00:00:00 2001
From: "Peder O. Klingenberg" <[email-masked]>
Date: Fri, 21 Apr 2017 17:16:08 +0200
Subject: [PATCH] New option -T / --tramp for remote editing with emacsclient

In combination with existing functionality for having server.el
listen on tcp ports, enables emacsclient on a remote machine to
instruct the local emacs to open remote files via Tramp.  Useful with
remote programs that invoke EDITOR.

* lib-src/emacsclient.c (main, decode_options)
(print_help_and_exit, longopts): New option --tramp / -T which
specifies how emacs should use tramp to find remote files.
* doc/emacs/misc.texi (emacsclient Options): Document new
--tramp / -T options.
---
 doc/emacs/misc.texi   | 30 ++++++++++++++++++++++++++++++
 etc/NEWS              |  6 ++++++
 lib-src/emacsclient.c | 20 ++++++++++++++++++--
 3 files changed, 54 insertions(+), 2 deletions(-)

diff --git a/doc/emacs/misc.texi b/doc/emacs/misc.texi
index bcc20a6db1..34a9d885bf 100644
--- a/doc/emacs/misc.texi
+++ b/doc/emacs/misc.texi
@@ -1872,6 +1872,36 @@ emacsclient Options
 server is using the graphical display, but if the Emacs server is
 running on a text terminal, it creates a new frame in the current text
 terminal.
+
+@item -T @var{tramp-prefix}
+@itemx --tramp-prefix=@var{tramp-prefix}
+@cindex @env{EMACSCLIENT_TRAMP} environment variable
+Prefix to add to filenames for emacs to locate files on remote
+machines through TRAMP.  This is mostly useful in combination with
+setting @code{server-use-tcp} to non-@code{nil}, ssh-forwarding the
+listening port, and making the @var{server-file} available to
+@command{emacsclient}.  This combination allows programs on a remote
+machine to use @command{emacsclient} as @env{EDITOR}, but instead of
+starting emacs on the remote machine, the files will be opened in the
+local emacs through TRAMP.
+
+Setting the environment variable @env{EMACSCLIENT_TRAMP} has the same
+effect as using this option.  If both are specified, the explicit
+option will take precedence.
+
+For example, assume two hosts, @samp{local} and @samp{remote}, with
+@samp{/home} on a shared file system, and that the local emacs listens
+on tcp port 12345:
+
+@example
+local$ ssh -R12345:localhost:12345 remote
+remote$ export EDITOR="emacsclient \
+        --server-file=server \
+        --tramp=/ssh:remote:'
+remote$ $EDITOR /tmp/foo.txt #Should open in local emacs.
+@end example
+
+@xref{Top, The Tramp Manual,,tramp, The Tramp Manual}
 @end table
 
   The new graphical or text terminal frames created by the @samp{-c}
diff --git a/etc/NEWS b/etc/NEWS
index 76c9dbc331..4599efd7da 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -340,6 +340,12 @@ want to reverse the direction of the scroll, customize
 ** Emacsclient has a new option -u/--suppress-output.  The option
 suppresses display of return values from the server process.
 
++++
+** Emacsclient has a new option -T/--tramp.  This helps with using a
+local emacs as the target for a remote emacsclient.  With appropriate
+setup, one can now set EDITOR on a remote machine to emacsclient, and
+use the local emacs to edit remote files via Tramp.
+
 
 * Editing Changes in Emacs 26.1
 
diff --git a/lib-src/emacsclient.c b/lib-src/emacsclient.c
index 7b735dfb05..0661480f58 100644
--- a/lib-src/emacsclient.c
+++ b/lib-src/emacsclient.c
@@ -149,6 +149,9 @@ const char *socket_name = NULL;
 /* If non-NULL, the filename of the authentication file.  */
 const char *server_file = NULL;
 
+/* If non-NULL, the tramp prefix emacs must use to find the files.  */
+const char *tramp_prefix = NULL;
+
 /* PID of the Emacs server process.  */
 int emacs_pid = 0;
 
@@ -178,6 +181,7 @@ struct option longopts[] =
   { "server-file",	required_argument, NULL, 'f' },
   { "display",	required_argument, NULL, 'd' },
   { "parent-id", required_argument, NULL, 'p' },
+  { "tramp",	required_argument, NULL, 'T' },
   { 0, 0, 0, 0 }
 };
 
@@ -468,14 +472,15 @@ static void
 decode_options (int argc, char **argv)
 {
   alternate_editor = egetenv ("ALTERNATE_EDITOR");
+  tramp_prefix = egetenv ("EMACSCLIENT_TRAMP");
 
   while (1)
     {
       int opt = getopt_long_only (argc, argv,
 #ifndef NO_SOCKETS_IN_FILE_SYSTEM
-			     "VHnequa:s:f:d:F:tc",
+			     "VHnequa:s:f:d:F:tcT:",
 #else
-			     "VHnequa:f:d:F:tc",
+			     "VHnequa:f:d:F:tcT:",
 #endif
 			     longopts, 0);
 
@@ -554,6 +559,10 @@ decode_options (int argc, char **argv)
           frame_parameters = optarg;
           break;
 
+        case 'T':
+          tramp_prefix = optarg;
+          break;
+
 	default:
 	  message (true, "Try '%s --help' for more information\n", progname);
 	  exit (EXIT_FAILURE);
@@ -654,6 +663,9 @@ The following OPTIONS are accepted:\n\
 			Editor to fallback to if the server is not running\n"
 "			If EDITOR is the empty string, start Emacs in daemon\n\
 			mode and try connecting again\n"
+"-T PREFIX, --tramp=PREFIX\n\
+                        PREFIX to filenames emacs needs to use to find files\n\
+                        local to emacsclient\n"
 "\n\
 Report bugs with M-x report-emacs-bug.\n");
   exit (EXIT_SUCCESS);
@@ -1687,6 +1699,8 @@ main (int argc, char **argv)
         }
     }
   send_to_emacs (emacs_socket, "-dir ");
+  if (tramp_prefix)
+    quote_argument (emacs_socket, tramp_prefix);
   quote_argument (emacs_socket, cwd);
   send_to_emacs (emacs_socket, "/");
   send_to_emacs (emacs_socket, " ");
@@ -1791,6 +1805,8 @@ main (int argc, char **argv)
 #endif
 
           send_to_emacs (emacs_socket, "-file ");
+	  if (tramp_prefix && file_name_absolute_p (argv[i]))
+	    quote_argument (emacs_socket, tramp_prefix);
           quote_argument (emacs_socket, argv[i]);
           send_to_emacs (emacs_socket, " ");
         }
-- 
2.11.0

In GNU Emacs 26.0.50 (build 1, x86_64-apple-darwin14.5.0, NS appkit-1348.17 Version 10.10.5 (Build 14F2315))
 of 2017-04-14 built on modesty.local
Repository revision: e6750596ef55352c260c200747bec3303e181fe8
Windowing system distributor 'Apple', version 10.3.1348
Recent messages:
Searching for ‘0000’....
Quit
<C-tab> is undefined
Undo in region!
Mark set
Redo in region!
Undo in region!
previous-line: Beginning of buffer [6 times]
Making completion list...
funcall-interactively: End of buffer

Configured features:
RSVG DBUS NOTIFY ACL GNUTLS LIBXML2 ZLIB TOOLKIT_SCROLL_BARS NS

Important settings:
  value of $LANG: en_NO.UTF-8
  locale-coding-system: utf-8-unix

Major mode: Diff

Minor modes in effect:
  TeX-PDF-mode: t
  magit-auto-revert-mode: t
  global-git-commit-mode: t
  async-bytecomp-package-mode: t
  whitespace-mode: t
  diff-auto-refine-mode: t
  show-paren-mode: t
  yas-global-mode: t
  yas-minor-mode: t
  shell-dirtrack-mode: t
  ido-everywhere: t
  cl-old-struct-compat-mode: t
  global-eldoc-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t
  transient-mark-mode: t

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

Features:
(shadow mail-extr emacsbug texmathp tex-info tex texinfo bug-reference
magit-obsolete magit-blame magit-stash magit-bisect magit-remote
magit-commit magit-sequence magit-notes magit-worktree magit-branch
magit-files magit-refs magit-status magit magit-repos magit-apply
magit-wip magit-log magit-diff smerge-mode magit-core magit-autorevert
autorevert filenotify magit-process magit-margin magit-mode magit-git
crm magit-section magit-popup git-commit magit-utils log-edit message
sendmail dired dired-loaddefs rfc822 mml mml-sec epa epg gnus-util rmail
rmail-loaddefs mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047
rfc2045 mm-util ietf-drums mail-prsvr mailabbrev mail-utils gmm-utils
mailheader with-editor async-bytecomp async dash cus-edit cus-start
cus-load wid-edit cl-print files-x conf-mode sort bubbles gamegrid
whitespace tabify imenu man grep pulse jka-compr tramp-cmds tramp-cache
tramp-sh eieio-opt speedbar sb-image ezimage dframe network-stream puny
nsm starttls tls gnutls slime-indentation slime-cl-indent cl-indent
slime-fancy slime-trace-dialog slime-fontifying-fu slime-package-fu
slime-references slime-compiler-notes-tree slime-scratch
slime-presentations bridge slime-macrostep macrostep slime-mdot-fu
slime-enclosing-context slime-fuzzy slime-fancy-trace
slime-fancy-inspector slime-c-p-c slime-editing-commands slime-autodoc
slime-repl elp slime-parse slime derived gud apropos etags xref project
arc-mode archive-mode pp hyperspec thingatpt browse-url help-fns
radix-tree misearch multi-isearch add-log log-view pcvs-util vc
vc-dispatcher vc-git diff-mode map cc-mode cc-fonts cc-guess cc-menus
cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs linum paren paredit
pok-init yasnippet org-element avl-tree org org-macro org-footnote
org-pcomplete org-list org-faces org-entities noutline outline
easy-mmode org-version ob-emacs-lisp ob ob-tangle org-src ob-ref ob-lob
ob-table ob-keys ob-exp ob-comint tramp tramp-compat tramp-loaddefs
trampver shell pcomplete parse-time advice ob-core ob-eval org-compat
org-macs org-loaddefs format-spec find-func cal-menu calendar
cal-loaddefs gedcom slime-autoloads reftex reftex-loaddefs reftex-vars
edmacro kmacro ido server dmacro cl compile comint ansi-color ring
finder-inf tex-site info package epg-config url-handlers url-parse
auth-source cl-seq eieio eieio-core cl-macs eieio-loaddefs
password-cache url-vars seq byte-opt subr-x gv bytecomp byte-compile
cl-extra help-mode easymenu cconv cl-loaddefs pcase cl-lib time-date
tooltip eldoc electric uniquify ediff-hook vc-hooks lisp-float-type
mwheel term/ns-win ns-win ucs-normalize mule-util term/common-win
tool-bar dnd fontset image regexp-opt fringe tabulated-list replace
newcomment text-mode elisp-mode lisp-mode prog-mode register page
menu-bar rfn-eshadow isearch timer select scroll-bar mouse jit-lock
font-lock syntax facemenu font-core term/tty-colors 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 composite charscript
case-table epa-hook jka-cmpr-hook help simple abbrev obarray 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 dbusbind kqueue cocoa
ns multi-tty make-network-process emacs)

Memory information:
((conses 16 735171 58999)
 (symbols 48 45467 2)
 (miscs 40 2510 1989)
 (strings 32 122722 22141)
 (string-bytes 1 3844625)
 (vectors 16 72407)
 (vector-slots 8 1935160 221273)
 (floats 8 199 921)
 (intervals 56 56856 204)
 (buffers 976 54))