[Top][All Lists]

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

Re: Adding with-editor to Emacs?

From: Eli Zaretskii
Subject: Re: Adding with-editor to Emacs?
Date: Fri, 01 Sep 2023 21:42:20 +0300

> From: Jonas Bernoulli <jonas@bernoul.li>
> Cc: emacs-devel@gnu.org, rms@gnu.org
> Date: Fri, 01 Sep 2023 19:44:53 +0200
> Eli Zaretskii <eliz@gnu.org> writes:
> > I'm probably missing something because if all we want is to allow
> > child processes to use the current Emacs session as their editor, we
> > just need to inject some environment variables into
> > process-environment when running those child processes, and start the
> > server.
> That's the core of what with-editor does.  Additionally
> - It tries hard to find the correct emacsclient to use.

See below: I don't think I understand why this has to be "hard".

> - It implements a "sleeping editor".  This is a shell script, which
>   outputs a request on stdout and then waits to be told to return.
>   With-editor use a process filter too look for that output and when
>   it sees it, it responds in a similar fashion to server.el.  This
>   is useful because makes it possible to do this over Tramp.  (I
>   believe this could also be done using regular emacsclient+server.el,
>   but that is difficult to setup and a security risk if not done
>   correctly.

If we want a better/safer client-server connections for remote hosts,
it should be handled in Tramp, I think.

> - It provides some convenience functionality to use this from various
>   shells running inside Emacs.

Can you provide details?  The above is too terse for me to understand
the functionality.

> > Emacs knows very well where to find its corresponding emacsclient.
> I wasn't aware of that.  How can I make use of that knowledge?  I.e.,
> is there a function that answers the question "what is the path of the
> emacsclient that was installed with this version of emacs"?

When Emacs runs installed, emacsclient is in the same directory where
we install the Emacs binary, so emacsclient should be in
invocation-directory.  If Emacs runs uninstalled, emacsclient is in
../lib-src/ relative to invocation-directory.  Whether Emacs runs
installed or not is determined by the value of installation-directory:
if it's nil, Emacs runs installed.

There could be a complication if the programs were renamed when
installed (see TRANSFORM in the top-level Makefile).  When that
happens, emacsclient's name is also TRANSFORMed in the same way.  You
can find out what was the actual name under which Emacs was invoked
from the value of invocation-name, and then apply the same TRANSFORM
to the name of emacsclient.

> > Why is there a need for a separate library?
> I agree that there theoretically isn't a need for this library, but it
> turned out that just setting EDITOR=emacsclient in the environment of
> the sub process also doesn't cut it, because for many users (who never
> use emacsclient directly), would have to add some configuration to make
> it work.  The core and original functionality provided by with-editor,
> is making the configuration unnecessary by using heuristics.

Can you elaborate on the configuration that is needed?  I always
thought that emacsclient worked for everybody OOTB.

> > (I couldn't find the beginning of this discussion, so maybe I missed
> > some of the relevant context, in which case I apologize.)
> The text I quoted, was the very beginning of this discussion.

Yes, but did RMS write anything that you haven't quoted?

reply via email to

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