[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Compile Mode and "host" Emacs
From: |
chad |
Subject: |
Re: Compile Mode and "host" Emacs |
Date: |
Tue, 29 Oct 2013 10:22:22 -0700 |
On 29 Oct 2013, at 06:18, Sebastian Wiesner <address@hidden> wrote:
>>
>> I don't think there's any portable way.
>
> That's unfortunate.
It was (is?) an early design principle of unix systems that there isn't
necessarily any such thing as `the path' or even `a path' to anything. This has
a number of positive benefits surrounding hard links, soft links, movable
files, and [un/re]mountable filesystems. Instead, we got conventions (not
rules) about where things should be, and how to find them. It also has a cost,
but it's relatively low - most of the time, when someone said "I want my
program to know its place in the filesystem.", they really didn't need to know
that, and there were better ways to accomplish their goals. For example, often
these requests are an effort to work around the user's configuration choices,
and that desire gets things wrong at least as often as it gets things right -
even if it seems better in the short-term, narrow-focus view.
That said, there are times when the program really does want to know that data,
so emacs provides a way to find it (invocation-*, mentioned above). Under
macosx, for example, if you build a relocatable bundle, it really wants to be
able to find its lisp libraries.
> I cannot but wonder what (stupid?) rationale let to the design of
> "$EMACS" and "$INSIDE_EMACS", if I have no chance to find out *what*
> Emacs I am actually inside of…
In most cases, programs don't care at all. When they do care, in most cases
they care if they're running inside any sort of emacs at all or not. Your case
appears to care inside which specific filesystem invocation of emacs it was
run, which is unusual. Most cases, when examined, really are better off using
rather than bypassing the user's configuration (PATH in this case). If I were
using some code that wanted to know where emacs was installed, and I changed
PATH for that code, I wouldn't want it poking around and guessing that it
should ignore PATH. Conversely, if the user hasn't set PATH, but wants to
interact with emacs, they generally will get similar sorts of wrong behavior if
they're shell uses the wrong programs from bin and libexec (ctags, etags,
emacsclient, etc).
In most cases, then, the right thing to do is to get/help the user configure
emacs on their system correctly, rather than second-guess their intentions -
it's harder to do, but gives the right result in more cases.
>> A better way would probably be to set some environment variable to the
>> full path in your init file, and then using that from the compile
>> process:
>>
>> ;;;; .emacs
>>
>> (setenv "EMACS_EXE_PATH"
>> (file-truename (concat (file-name-as-directory
>> invocation-directory)
>> invocation-name)))
>
> I am not in control of my users' configurations, nor can I reasonably
> demand them to change their "init.el" just to support a single script.
> Besides, if I tell them to change their "init.el", I might just as
> well tell them to select the target Emacs via the corresponding option
> of my script right away.
That's a good idea; you can also have your script run emacs (probably -batch)
and have that emacs stash the info you need somewhere. I'll point out that if
you expect your users to interact with emacs both from a gui launcher and from
the command-line, it's almost never a bad idea to suggest and/or help them to
configure their environment so that emacs works well in both situations.
Hopefully that helps explain why what seemed like a simple question wasn't
quite as simple as you'd thought. If you can explain a bit more what it is
you're actually trying to do, we can probably provide some helpful suggestions
about how to accomplish your goals.
Thanks,
~Chad
- Re: Compile Mode and "host" Emacs, (continued)
- Re: Compile Mode and "host" Emacs, Nathan Trapuzzano, 2013/10/29
- Re: Compile Mode and "host" Emacs, Sebastian Wiesner, 2013/10/29
- Re: Compile Mode and "host" Emacs, Nathan Trapuzzano, 2013/10/29
- Re: Compile Mode and "host" Emacs, Sebastian Wiesner, 2013/10/29
- Re: Compile Mode and "host" Emacs, Nathan Trapuzzano, 2013/10/29
- Re: Compile Mode and "host" Emacs, Sebastian Wiesner, 2013/10/29
- Re: Compile Mode and "host" Emacs, Nathan Trapuzzano, 2013/10/29
- Re: Compile Mode and "host" Emacs, Stephen J. Turnbull, 2013/10/30
- Re: Compile Mode and "host" Emacs, Jorgen Schaefer, 2013/10/30
- Re: Compile Mode and "host" Emacs, Stephen J. Turnbull, 2013/10/30
- Re: Compile Mode and "host" Emacs,
chad <=
Re: Compile Mode and "host" Emacs, Stefan Monnier, 2013/10/29