all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* Adding with-editor to Emacs?
       [not found] ` <E1qbslO-0006oK-RA@fencepost.gnu.org>
@ 2023-09-01 14:38   ` Jonas Bernoulli
  2023-09-01 16:12     ` Eli Zaretskii
  0 siblings, 1 reply; 46+ messages in thread
From: Jonas Bernoulli @ 2023-09-01 14:38 UTC (permalink / raw)
  To: emacs-devel; +Cc: rms

Richard Stallman <rms@gnu.org> writes:

> Are you involved in developing this?

Yes, I am the primary author.  Contributions by other people are pretty
minor, or by people who have already done the copyright paperwork, so
that should not be a problem.

> It seems to me that this would fit best in emacsclient and its
> associated Lisp code -- that having it as a separate package
> is extra baggage.
>
> WDYT?

Adding this to Emacs would make sense.  We would have to determine to
what extend existing code should be updated to do what this package does
and what parts should remain in a package/library in its own right.

For example, it would make sense to deprecate variable `server-window'
with a new `server-window-alist', even if the rest of with-editor.el
remained a separate library, or even outside of Emacs.  (The new
variable would give packages more control over how their windows should
be displayed, if they have special needs, while still allowing users
to customize the default, or even to override the packages' wishes.)

I think the next step is to ask Eli and others, how they would want to
integrate the library / the functionality it provides.

An obstacle in getting this done quickly, is that I am getting requests
to do work in areas that I wasn't planning on touching any time soon,
with a higher than usual frequency.  So the process of integrating this
into Emacs could be somewhat slow, depending on how much we diverge from
just merging this as-is in the form of a separate library/package.

> having it as a separate package is extra baggage.

Maybe.  As far as adding `server-window-alist' goes, that would
certainly be a win.

But other than that, this package is basically "done" in its current
form.  Work is only really required when someone found yet another way
to package Emacs, without thinking too much about emacsclient, if at
all.  So I must point out that the primary effect for my personally
will be extra work, and not just in the short term.

     Cheers,
     Jonas



^ permalink raw reply	[flat|nested] 46+ messages in thread

* Re: Adding with-editor to Emacs?
  2023-09-01 14:38   ` Adding with-editor to Emacs? Jonas Bernoulli
@ 2023-09-01 16:12     ` Eli Zaretskii
  2023-09-01 17:25       ` Jim Porter
  2023-09-01 17:44       ` Jonas Bernoulli
  0 siblings, 2 replies; 46+ messages in thread
From: Eli Zaretskii @ 2023-09-01 16:12 UTC (permalink / raw)
  To: Jonas Bernoulli, Stefan Kangas; +Cc: emacs-devel, rms

> From: Jonas Bernoulli <jonas@bernoul.li>
> Cc: rms@gnu.org
> Date: Fri, 01 Sep 2023 16:38:02 +0200
> 
> I think the next step is to ask Eli and others, how they would want to
> integrate the library / the functionality it provides.

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.  Emacs knows very well where to find its corresponding
emacsclient.  Why is there a need for a separate library?

> As far as adding `server-window-alist' goes, that would certainly be
> a win.

If we want to extend server-window in some ways, that could be a
separate change.  It sounds like its utility is not necessarily
specific to with-editor or to its main feature of allowing
sub-processes use the parent Emacs as their editor.

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



^ permalink raw reply	[flat|nested] 46+ messages in thread

* Re: Adding with-editor to Emacs?
  2023-09-01 16:12     ` Eli Zaretskii
@ 2023-09-01 17:25       ` Jim Porter
  2023-09-01 17:44       ` Jonas Bernoulli
  1 sibling, 0 replies; 46+ messages in thread
From: Jim Porter @ 2023-09-01 17:25 UTC (permalink / raw)
  To: Eli Zaretskii, Jonas Bernoulli, Stefan Kangas; +Cc: emacs-devel, rms

On 9/1/2023 9:12 AM, Eli Zaretskii wrote:
>> From: Jonas Bernoulli <jonas@bernoul.li>
>> Cc: rms@gnu.org
>> Date: Fri, 01 Sep 2023 16:38:02 +0200
>>
>> I think the next step is to ask Eli and others, how they would want to
>> integrate the library / the functionality it provides.
> 
> 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.  Emacs knows very well where to find its corresponding
> emacsclient.  Why is there a need for a separate library?

I'm not totally sure *all* of what with-editor does, but it does let you 
do this over Tramp too (still using your local emacsclient). That 
requires a bit more magic to get it work.



^ permalink raw reply	[flat|nested] 46+ messages in thread

* Re: Adding with-editor to Emacs?
  2023-09-01 16:12     ` Eli Zaretskii
  2023-09-01 17:25       ` Jim Porter
@ 2023-09-01 17:44       ` Jonas Bernoulli
  2023-09-01 18:42         ` Eli Zaretskii
  1 sibling, 1 reply; 46+ messages in thread
From: Jonas Bernoulli @ 2023-09-01 17:44 UTC (permalink / raw)
  To: Eli Zaretskii, Stefan Kangas; +Cc: emacs-devel, rms

Eli Zaretskii <eliz@gnu.org> writes:

>> From: Jonas Bernoulli <jonas@bernoul.li>
>> Cc: rms@gnu.org
>> Date: Fri, 01 Sep 2023 16:38:02 +0200
>> 
>> I think the next step is to ask Eli and others, how they would want to
>> integrate the library / the functionality it provides.
>
> 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.

- 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.

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

> 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"?

> 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.

Maybe I miss something, but I concluded that emacs does *not* know
its corresponding emacsclient.  Once I know how to make use of that
knowledge, I can simplify with-editor quite a bit, with will benefit
the packages that already use it.  And if that really is fail-safe,
then Emacs doesn't have much to gain from integrating with-editor.

>> As far as adding `server-window-alist' goes, that would certainly be
>> a win.
>
> If we want to extend server-window in some ways, that could be a
> separate change.  It sounds like its utility is not necessarily
> specific to with-editor or to its main feature of allowing
> sub-processes use the parent Emacs as their editor.

Agreed and that is something I was planning to suggest eventually,
while I had no plan to suggest merging all of with-editor.el.

> (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.



^ permalink raw reply	[flat|nested] 46+ messages in thread

* Re: Adding with-editor to Emacs?
  2023-09-01 17:44       ` Jonas Bernoulli
@ 2023-09-01 18:42         ` Eli Zaretskii
  2023-09-01 20:23           ` Jonas Bernoulli
  2023-09-03 14:36           ` Adding with-editor to Emacs? Manuel Giraud via Emacs development discussions.
  0 siblings, 2 replies; 46+ messages in thread
From: Eli Zaretskii @ 2023-09-01 18:42 UTC (permalink / raw)
  To: Jonas Bernoulli; +Cc: stefankangas, emacs-devel, rms

> 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?



^ permalink raw reply	[flat|nested] 46+ messages in thread

* Re: Adding with-editor to Emacs?
  2023-09-01 18:42         ` Eli Zaretskii
@ 2023-09-01 20:23           ` Jonas Bernoulli
  2023-09-02  6:19             ` Eli Zaretskii
                               ` (2 more replies)
  2023-09-03 14:36           ` Adding with-editor to Emacs? Manuel Giraud via Emacs development discussions.
  1 sibling, 3 replies; 46+ messages in thread
From: Jonas Bernoulli @ 2023-09-01 20:23 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: stefankangas, emacs-devel, rms

Eli Zaretskii <eliz@gnu.org> writes:

>> 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:

>> - 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.

Probably and it would be great if Tramp did handle that, but I don't
even use Tramp except when users report that there is an issue when
using Tramp with one of my packages.  So I am not the right person to
implement it there, but if Michael were to tackle this, then maybe I
would have some insights that could be useful.  Or not.

>> - 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.

Essentially what it does is "export EDITOR=emacsclient" without as if
that line existed in the shells init file.  When summarized like that,
this is of course a bit of a silly feature -- users can just put that
line in their init file instead.  (Also I should point out that I did
not actually want to add support for this, but got talked into it.)

The reason why people wanted me to this is that simply using
"emacsclient" as the value turned out not to be good enough.

>> > 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.

"I have seen things you wouldn't believe..."

I wish this was true, but unfortunately keep coming up with new and
innovative ways of not doing that.  The worst platform is macOS, but I
also had to add a special case for Debian.  Users or distributions may
install emacs in a weird location, and then symlink emacs onto $PATH
(but without doing the same for emacsclient).  It is also possible to
install multiple versions of emacs in the same directory and append
version strings to the installed binaries.  To select one of these
versions a user/distribution may add a symlink named symlink in the
same directory.  One may or may not do the same for emacsclient.  If
emacsclient isn't a symlink, then an ancient emacsclient may still be
leftover from an earlier manual installed that was not properly
uninstalled. ...

> 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.

... and that too.

> 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.

Sadly that isn't the case, see above.

Normally these complications are the user's problem.  They may not even
use emacsclient.  If they don't actively choose to use emacsclient, they
will never know it is actually broken for them.  If they try to use it
and it doesn't work, they can decide whether it is worth trying to
figure out to work around those mistakes.  If they want to use it but
cannot fix it for themselves, they can contact the people who packaged
Emacs for them.

For me the situation was different, I started with something like this
in one of my packages, effectively forcing users to use "emacsclient":

  (let ((process-environment process-environment))
    (setenv "EDITOR"
            (expand-file-name "emacsclient" invocation-directory))
    (call-process "git" nil nil nil "commit"))

Like you I assumed this was a solved problem.

And then the "I cannot commit anymore" reports started pouring in.

I decided to implement with-editor, and to once in a while add a new
heuristic to detect the correct emacsclient, instead of having to
support users 1on1 for evermore, to figure out how exactly emacsclient
isn't located and/or named what it is supposed to be, in their
particular case.

>> > (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?

Except

> [[[ To any NSA and FBI agents reading my email: please consider    ]]]
> [[[ whether defending the US Constitution against all enemies,     ]]]
> [[[ foreign or domestic, requires you to follow Snowden's example. ]]]

and the signature?

No, the text I quoted is all of it.



^ permalink raw reply	[flat|nested] 46+ messages in thread

* Re: Adding with-editor to Emacs?
  2023-09-01 20:23           ` Jonas Bernoulli
@ 2023-09-02  6:19             ` Eli Zaretskii
  2023-09-02 18:12               ` Jonas Bernoulli
  2023-09-02 11:39             ` Michael Albinus
  2023-10-17 10:23             ` Michael Albinus
  2 siblings, 1 reply; 46+ messages in thread
From: Eli Zaretskii @ 2023-09-02  6:19 UTC (permalink / raw)
  To: Jonas Bernoulli; +Cc: stefankangas, emacs-devel, rms

> From: Jonas Bernoulli <jonas@bernoul.li>
> Cc: stefankangas@gmail.com, emacs-devel@gnu.org, rms@gnu.org
> Date: Fri, 01 Sep 2023 22:23:43 +0200
> 
> Eli Zaretskii <eliz@gnu.org> writes:
> 
> >> > 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.
> 
> "I have seen things you wouldn't believe..."
> 
> I wish this was true, but unfortunately keep coming up with new and
> innovative ways of not doing that.  The worst platform is macOS, but I
> also had to add a special case for Debian.  Users or distributions may
> install emacs in a weird location, and then symlink emacs onto $PATH
> (but without doing the same for emacsclient).  It is also possible to
> install multiple versions of emacs in the same directory and append
> version strings to the installed binaries.  To select one of these
> versions a user/distribution may add a symlink named symlink in the
> same directory.  One may or may not do the same for emacsclient.  If
> emacsclient isn't a symlink, then an ancient emacsclient may still be
> leftover from an earlier manual installed that was not properly
> uninstalled. ...

Then I guess you should describe all those atrocities in detail, so
that we could perhaps devise ways of handling it.

Also, since the client-server protocol doesn't change much, there's
usually no need to insist on invoking the emacsclient that came with
this particular Emacs, you can use any other.

> > 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.
> 
> ... and that too.

What do you mean? the value of installation-directory is calculated
internally by Emacs.

> >> 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.
> 
> Sadly that isn't the case, see above.

In what ways does "the above" mean that emacsclient doesn't work OOTB?
Do you mean that emacsclient is installed in a place that just typing
"emacsclient RET" at the shell prompt fails to run it?  If so, that's
a broken installation, and Emacs shouldn't really try to fix that.  Or
do you mean something else?

> Normally these complications are the user's problem.  They may not even
> use emacsclient.  If they don't actively choose to use emacsclient, they
> will never know it is actually broken for them.  If they try to use it
> and it doesn't work, they can decide whether it is worth trying to
> figure out to work around those mistakes.  If they want to use it but
> cannot fix it for themselves, they can contact the people who packaged
> Emacs for them.
> 
> For me the situation was different, I started with something like this
> in one of my packages, effectively forcing users to use "emacsclient":
> 
>   (let ((process-environment process-environment))
>     (setenv "EDITOR"
>             (expand-file-name "emacsclient" invocation-directory))
>     (call-process "git" nil nil nil "commit"))
> 
> Like you I assumed this was a solved problem.
> 
> And then the "I cannot commit anymore" reports started pouring in.

We need to understand better the problems which caused this.  The
usual fallback for

  (expand-file-name "emacsclient" invocation-directory)

is

  (expand-file-name "emacsclient"
                    (expand-file-name "../lib-src/" invocation-directory))

and if that also fails, just use "emacsclient", i.e. find some version
of the client on PATH.  If you are saying this doesn't work, either,
then we need to understand why and in what cases, and then decide
what, if anything, to do about that.



^ permalink raw reply	[flat|nested] 46+ messages in thread

* Re: Adding with-editor to Emacs?
  2023-09-01 20:23           ` Jonas Bernoulli
  2023-09-02  6:19             ` Eli Zaretskii
@ 2023-09-02 11:39             ` Michael Albinus
  2023-09-02 16:52               ` Jonas Bernoulli
  2023-10-17 10:23             ` Michael Albinus
  2 siblings, 1 reply; 46+ messages in thread
From: Michael Albinus @ 2023-09-02 11:39 UTC (permalink / raw)
  To: Jonas Bernoulli; +Cc: Eli Zaretskii, stefankangas, emacs-devel, rms

Jonas Bernoulli <jonas@bernoul.li> writes:

Hi Jonas,

> Probably and it would be great if Tramp did handle that, but I don't
> even use Tramp except when users report that there is an issue when
> using Tramp with one of my packages.  So I am not the right person to
> implement it there, but if Michael were to tackle this, then maybe I
> would have some insights that could be useful.  Or not.

I will check what's possible, but not the next week (I'm occupied
otherwise). I'll come back with questions to you ...

Best regards, Michael.



^ permalink raw reply	[flat|nested] 46+ messages in thread

* Re: Adding with-editor to Emacs?
  2023-09-02 11:39             ` Michael Albinus
@ 2023-09-02 16:52               ` Jonas Bernoulli
  0 siblings, 0 replies; 46+ messages in thread
From: Jonas Bernoulli @ 2023-09-02 16:52 UTC (permalink / raw)
  To: Michael Albinus; +Cc: Eli Zaretskii, stefankangas, emacs-devel, rms

Michael Albinus <michael.albinus@gmx.de> writes:

> Jonas Bernoulli <jonas@bernoul.li> writes:
>
> Hi Jonas,
>
>> Probably and it would be great if Tramp did handle that, but I don't
>> even use Tramp except when users report that there is an issue when
>> using Tramp with one of my packages.  So I am not the right person to
>> implement it there, but if Michael were to tackle this, then maybe I
>> would have some insights that could be useful.  Or not.
>
> I will check what's possible, but not the next week (I'm occupied
> otherwise). I'll come back with questions to you ...
>
> Best regards, Michael.

There is absolutely no hurry.  I am also very much occupied and don't
really have the bandwidth to also deal with this right now.



^ permalink raw reply	[flat|nested] 46+ messages in thread

* Re: Adding with-editor to Emacs?
  2023-09-02  6:19             ` Eli Zaretskii
@ 2023-09-02 18:12               ` Jonas Bernoulli
  2023-09-02 18:57                 ` Eli Zaretskii
  2023-09-02 19:56                 ` Stefan Kangas
  0 siblings, 2 replies; 46+ messages in thread
From: Jonas Bernoulli @ 2023-09-02 18:12 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: stefankangas, emacs-devel, rms

Eli Zaretskii <eliz@gnu.org> writes:

>> From: Jonas Bernoulli <jonas@bernoul.li>
>> Cc: stefankangas@gmail.com, emacs-devel@gnu.org, rms@gnu.org
>> Date: Fri, 01 Sep 2023 22:23:43 +0200
>> 
>> Eli Zaretskii <eliz@gnu.org> writes:
>> 
>> >> > 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.
>> 
>> "I have seen things you wouldn't believe..."
>> 
>> I wish this was true, but unfortunately keep coming up with new and
>> innovative ways of not doing that.  The worst platform is macOS, but I
>> also had to add a special case for Debian.  Users or distributions may
>> install emacs in a weird location, and then symlink emacs onto $PATH
>> (but without doing the same for emacsclient).  It is also possible to
>> install multiple versions of emacs in the same directory and append
>> version strings to the installed binaries.  To select one of these
>> versions a user/distribution may add a symlink named symlink in the
>> same directory.  One may or may not do the same for emacsclient.  If
>> emacsclient isn't a symlink, then an ancient emacsclient may still be
>> leftover from an earlier manual installed that was not properly
>> uninstalled. ...
>
> Then I guess you should describe all those atrocities in detail, so
> that we could perhaps devise ways of handling it.

I do not have a list of those atrocities and I do not have the bandwidth
and motivation to compile that in the next few months.  I have code that
deals with it though (with-editor-locate-emacsclient and the functions
it uses).  Using git to trace the history of that code, would give you
commits with explanations and/or links to places were the issues that
are being addressed were described.

> Also, since the client-server protocol doesn't change much, there's
> usually no need to insist on invoking the emacsclient that came with
> this particular Emacs, you can use any other.

True, but because breaking changes have happened, this doesn't *always*
work.

By the way, my code does not insist on an exact match.  It first tries
to find an emacsclient with matching x.y.z, if that fails x.y, and if
that fails too, just x is also accepted.

Maybe, if that too failed, it would work in 99% of cases to just use
whatever emacsclient was found, completely ignoring what its version is.

I have decided to not do that because I have not enough experience
debugging particular client/server incompatibilities, to do that
efficiently, when confronted with a potentially bad user report.  I do
however have a lot of experience asking the right questions when a user
shows up saying "I cannot commit, the emacsclient cannot be found".

I am not saying this is the right way.  It is the approach I arrived at,
because it allows me to waste less time remote debugging other people's
messed up Emacs installations.

>> > 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.
>> 
>> ... and that too.
>
> What do you mean? the value of installation-directory is calculated
> internally by Emacs.

All I meant to say, is that, even if nobody messed up their Emacs
installations, we would still have to try two different approaches to
find the "correct" emacsclient.  Having to handle two cases is not a
biggie, the messed up installations are.

This was supposed to be my fun way of saying that.  It wasn't important.
I also considered leaving that part unanswered.

>> >> 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.
>> 
>> Sadly that isn't the case, see above.
>
> In what ways does "the above" mean that emacsclient doesn't work OOTB?

Yes.

> Do you mean that emacsclient is installed in a place that just typing
> "emacsclient RET" at the shell prompt fails to run it?

Yes.

> If so, that's
> a broken installation, and Emacs shouldn't really try to fix that.  Or
> do you mean something else?

That's a reasonable decision, and I tend to agree.

However, I personally had no choice but to find a workaround.  I
switched my package from "git commit -m 'message that has already been
written from scratch'" to using "EDITOR=emacsclient git commit" as
intended by Git.  That made it possible to use messages (resp. message
templates) generated by Git and/or user/project git-hooks.  That's a
very useful feature, one could even say that not allowing the user to
do that, was a bug in my package.

I also was under the impression that it would be safe to do that, after
all EDITOR=emacsclient is all that is need, and surely we can rely on
emacsclient being located somewhere on PATH.  Little did I know how many
messed up Emacs installations there are in the wild.

And then the bug reports started coming in.  The workflows of a lot of
people were disrupted, and to some them it seemed like it was all my
fault.  Most people were respectful but there were also two or three
complete !@$!@#$!@#.

I had to come up with a solution, fast.  I chose to implement kludges.

Identifying the authors of the broken Emacs installations, contacting
them and explaining the issue to them, and then waiting for months/years
until the updates trickle down to users, was not an option.  I need a
solution now.  And this was such an exhausting experience, I did not
have the energy to *also* contact everyone who had messed up their Emacs
package.  And it is such a bad memory (it was the first time I got
massively attacked for publishing free software), that I am also not
volunteering to do that work now.

I am quite happy with with-editor in its current form.  It solves my
problem; users can commit using my code, even when their Emacs
installations are messed up.  Occasionally, maybe two or three times a
year, someone comes up with a new strange way to package Emacs; and when
I deal with it, adding yet another special case.  That's good enough for
me.

I never claimed with-editor should be added to Emacs and don't really
have any desire to do so.  Richard wants to add it, and I decided to
not stand in the way.  If you decide that this isn't the right fit for
Emacs, I am perfectly fine with that, and actually agree.

If you decide that with-editor isn't the right fit, but Emacs needs
something like it, that is also not completely unreasonable.  But I
am not volunteering to do that work.

But let's repeat what you said above:

> Do you mean that emacsclient is installed in a place that just typing
> "emacsclient RET" at the shell prompt fails to run it?  If so, that's
> a broken installation, and Emacs shouldn't really try to fix that.

I think this is a very reasonable for Emacs.  In other words, the best
course of action is to just forget the suggestion that with-editor is
added to Emacs.  There is no real need and nobody volunteering to do the
work anyway.

>> Normally these complications are the user's problem.  They may not even
>> use emacsclient.  If they don't actively choose to use emacsclient, they
>> will never know it is actually broken for them.  If they try to use it
>> and it doesn't work, they can decide whether it is worth trying to
>> figure out to work around those mistakes.  If they want to use it but
>> cannot fix it for themselves, they can contact the people who packaged
>> Emacs for them.
>> 
>> For me the situation was different, I started with something like this
>> in one of my packages, effectively forcing users to use "emacsclient":
>> 
>>   (let ((process-environment process-environment))
>>     (setenv "EDITOR"
>>             (expand-file-name "emacsclient" invocation-directory))
>>     (call-process "git" nil nil nil "commit"))
>> 
>> Like you I assumed this was a solved problem.
>> 
>> And then the "I cannot commit anymore" reports started pouring in.
>
> We need to understand better the problems which caused this.  The
> usual fallback for
>
>   (expand-file-name "emacsclient" invocation-directory)
>
> is
>
>   (expand-file-name "emacsclient"
>                     (expand-file-name "../lib-src/" invocation-directory))
>
> and if that also fails, just use "emacsclient", i.e. find some version
> of the client on PATH.  If you are saying this doesn't work, either,
> then we need to understand why and in what cases, and then decide
> what, if anything, to do about that.

The worst offenders are various "Emacs for macOS" packages, that
do "package Emacs the way we are supposed to do that on macOS".

I think it works something like this: All files that make up an Emacs
installation are put in a single tarball (or probably some other archive
format).  The tarball contains everything starting at "usr", though some
things get added and moved around (but not everyone does that the same
way).  Additionally the tarball contains some xml file that says which
of the contained binaries should be executed when the user clicks on the
tarball (aka "application") in the Finder.  There appears to be a
convention to relocate the primary binary to the top-level of the
tarball, and other binaries to a "bin" directory, which itself is
located at the top-level.



^ permalink raw reply	[flat|nested] 46+ messages in thread

* Re: Adding with-editor to Emacs?
  2023-09-02 18:12               ` Jonas Bernoulli
@ 2023-09-02 18:57                 ` Eli Zaretskii
  2023-09-02 21:04                   ` Jonas Bernoulli
  2023-09-03 17:02                   ` Lynn Winebarger
  2023-09-02 19:56                 ` Stefan Kangas
  1 sibling, 2 replies; 46+ messages in thread
From: Eli Zaretskii @ 2023-09-02 18:57 UTC (permalink / raw)
  To: Jonas Bernoulli; +Cc: stefankangas, emacs-devel, rms

> From: Jonas Bernoulli <jonas@bernoul.li>
> Cc: stefankangas@gmail.com, emacs-devel@gnu.org, rms@gnu.org
> Date: Sat, 02 Sep 2023 20:12:40 +0200
> 
> > Then I guess you should describe all those atrocities in detail, so
> > that we could perhaps devise ways of handling it.
> 
> I do not have a list of those atrocities and I do not have the bandwidth
> and motivation to compile that in the next few months.  I have code that
> deals with it though (with-editor-locate-emacsclient and the functions
> it uses).  Using git to trace the history of that code, would give you
> commits with explanations and/or links to places were the issues that
> are being addressed were described.

It's not that easy: AFAIU, with-editor was part of Magit, and was
separated into a repository of its own not very long ago.  And the
answers to my questions seem to be before the split.

I also looked at the present code and found it to have quite a few
non-trivial parts whose purpose I couldn't easily explain or guess,
and which are not explained in the comments, either.

So, if you have no time or motivation to describe the problems you
tried to solve with that code, I guess someone else will need to find
out and describe the problems in a way that we could then consider for
inclusion.  I cannot myself afford digging through the Magit's Git
repository to find the description of these problems, sorry.

Or maybe Richard already knows the answers, since he thought this
should be added to Emacs.



^ permalink raw reply	[flat|nested] 46+ messages in thread

* Re: Adding with-editor to Emacs?
  2023-09-02 18:12               ` Jonas Bernoulli
  2023-09-02 18:57                 ` Eli Zaretskii
@ 2023-09-02 19:56                 ` Stefan Kangas
  2023-09-02 21:26                   ` Jonas Bernoulli
  2023-09-03  5:00                   ` Eli Zaretskii
  1 sibling, 2 replies; 46+ messages in thread
From: Stefan Kangas @ 2023-09-02 19:56 UTC (permalink / raw)
  To: Jonas Bernoulli, Eli Zaretskii; +Cc: emacs-devel, rms

Jonas Bernoulli <jonas@bernoul.li> writes:

> Identifying the authors of the broken Emacs installations, contacting
> them and explaining the issue to them, and then waiting for months/years
> until the updates trickle down to users, was not an option.  I need a
> solution now.  And this was such an exhausting experience, I did not
> have the energy to *also* contact everyone who had messed up their Emacs
> package.  And it is such a bad memory (it was the first time I got
> massively attacked for publishing free software), that I am also not
> volunteering to do that work now.

Wow, what a ride.  I admire your patience, is all I can say.

>> Do you mean that emacsclient is installed in a place that just typing
>> "emacsclient RET" at the shell prompt fails to run it?  If so, that's
>> a broken installation, and Emacs shouldn't really try to fix that.
>
> I think this is a very reasonable for Emacs.  In other words, the best
> course of action is to just forget the suggestion that with-editor is
> added to Emacs.  There is no real need and nobody volunteering to do the
> work anyway.

It sounds like with-editor for the most part contains workarounds for
broken Emacs installations?  Is there anything in use-package that does
not belong to that category, and that you therefore think *should*
really be fixed in Emacs?

Perhaps it would be worth focusing on just that part.



^ permalink raw reply	[flat|nested] 46+ messages in thread

* Re: Adding with-editor to Emacs?
  2023-09-02 18:57                 ` Eli Zaretskii
@ 2023-09-02 21:04                   ` Jonas Bernoulli
  2023-09-03 17:02                   ` Lynn Winebarger
  1 sibling, 0 replies; 46+ messages in thread
From: Jonas Bernoulli @ 2023-09-02 21:04 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: stefankangas, emacs-devel, rms

Eli Zaretskii <eliz@gnu.org> writes:

>> From: Jonas Bernoulli <jonas@bernoul.li>
>> Cc: stefankangas@gmail.com, emacs-devel@gnu.org, rms@gnu.org
>> Date: Sat, 02 Sep 2023 20:12:40 +0200
>> 
>> > Then I guess you should describe all those atrocities in detail, so
>> > that we could perhaps devise ways of handling it.
>> 
>> I do not have a list of those atrocities and I do not have the bandwidth
>> and motivation to compile that in the next few months.  I have code that
>> deals with it though (with-editor-locate-emacsclient and the functions
>> it uses).  Using git to trace the history of that code, would give you
>> commits with explanations and/or links to places were the issues that
>> are being addressed were described.
>
> It's not that easy: AFAIU, with-editor was part of Magit, and was
> separated into a repository of its own not very long ago.  And the
> answers to my questions seem to be before the split.

That doesn't really complicate the archaeology, we would just have to
run "git log ..." twice instead of just once.  But yes, the history
is more ancient as the first casual "git log ..." in the with-editor
repository suggests.

> I also looked at the present code and found it to have quite a few
> non-trivial parts whose purpose I couldn't easily explain or guess,
> and which are not explained in the comments, either.

Yes and IMO it would even be fair to say the code is a bit weird, and
we likely could do a better job by first listing all the cases we have
to address and then start over.  Doing that would also risk breaking
something that was previously fixed.

> So, if you have no time or motivation to describe the problems you
> tried to solve with that code, I guess someone else will need to find
> out and describe the problems in a way that we could then consider for
> inclusion.  I cannot myself afford digging through the Magit's Git
> repository to find the description of these problems, sorry.

I don't expect you to do that.  And you don't expect me to do it either.
If someone else decides to do it, that would be great, but if not,
that's what it is.

That would change once a (future) package that is part of Emacs, needs
to something like with-editor's emacsclient kludge or the additional
features it provides.

Until then, I think we can shelve this.  Hell, I might even one day
decide to produce the list myself after all.  But for the last few
months "just one more thing" has just kept popping up, and I really want
to finally get around to work on the things that I actually want to work
on again.  It has been a while.

The server-window-alist thing is a different story, and as you said,
should be handled separately.  But that too is "just one more thing"
in a long sequence of "just one more"...

(Hm, in February I got a bit burnouty and took a break, which did
wonders.  It seem I am again approaching a point where that is the
logical course of action.  Sorry, if some of my "don't assign me any
more work, I did not volunteer" was a bit rude.)

> Or maybe Richard already knows the answers, since he thought this
> should be added to Emacs.



^ permalink raw reply	[flat|nested] 46+ messages in thread

* Re: Adding with-editor to Emacs?
  2023-09-02 19:56                 ` Stefan Kangas
@ 2023-09-02 21:26                   ` Jonas Bernoulli
  2023-09-02 23:07                     ` Stefan Kangas
  2023-09-03  5:00                   ` Eli Zaretskii
  1 sibling, 1 reply; 46+ messages in thread
From: Jonas Bernoulli @ 2023-09-02 21:26 UTC (permalink / raw)
  To: Stefan Kangas, Eli Zaretskii; +Cc: emacs-devel, rms

Stefan Kangas <stefankangas@gmail.com> writes:

> Jonas Bernoulli <jonas@bernoul.li> writes:
>
>> Identifying the authors of the broken Emacs installations, contacting
>> them and explaining the issue to them, and then waiting for months/years
>> until the updates trickle down to users, was not an option.  I need a
>> solution now.  And this was such an exhausting experience, I did not
>> have the energy to *also* contact everyone who had messed up their Emacs
>> package.  And it is such a bad memory (it was the first time I got
>> massively attacked for publishing free software), that I am also not
>> volunteering to do that work now.
>
> Wow, what a ride.  I admire your patience, is all I can say.

Thanks.  Sometimes I have to vent a bit, even if I usually end up
regretting to have done so in public.  It helps to hear some
understanding words.  We've all been there, sometimes things just
get to stressful.

>>> Do you mean that emacsclient is installed in a place that just typing
>>> "emacsclient RET" at the shell prompt fails to run it?  If so, that's
>>> a broken installation, and Emacs shouldn't really try to fix that.
>>
>> I think this is a very reasonable for Emacs.  In other words, the best
>> course of action is to just forget the suggestion that with-editor is
>> added to Emacs.  There is no real need and nobody volunteering to do the
>> work anyway.
>
> It sounds like with-editor for the most part contains workarounds for
> broken Emacs installations?

That was the original feature but now it also contains a poorman's
substitute for emacsclient/server that works processes started from
Emacs (but also including processes running on remote machines).

As far as I am concerned, the package was done then.  Then requests to
support various emacs shells came in, and of course this could also be
useful for async-shell-command, and it became complex enough to warrant
a manual.  I wrote the in org and export it to texi, and of course once
(if) with-editor is added to Emacs, I will be informed that the
generated texi is not up to snuff....

This all started with a rather reasonable feature that just depended on
things not being broken, and then spiraled completely out of control,
with people asking me to add just add one more feature, again and again,
because after all with-editor would be the logical place to implement it.

Oh no!  Some memory is coming back.  When it was originally suggested
that we switch from "git commit -m 'done'" to "EDITOR=emacsclient git
commit", I agreed that this was obviously the right thing to do, but I
actually also realized that doing so would be risky and wanted to do it
slowly as an opt-in feature to avoid breakage, but everyone was "no no,
that is totally safe" and talked me into just pulling the plug.

So I hope you all understand now why I get a bit touchy when being
asked to work on this just a little more.

> Is there anything in use-package that does
> not belong to that category, and that you therefore think *should*
> really be fixed in Emacs?
>
> Perhaps it would be worth focusing on just that part.

(use-package?  I'll assume you meant with-editor.)

Replacing server-window with server-window-alist or something like that.



^ permalink raw reply	[flat|nested] 46+ messages in thread

* Re: Adding with-editor to Emacs?
  2023-09-02 21:26                   ` Jonas Bernoulli
@ 2023-09-02 23:07                     ` Stefan Kangas
  0 siblings, 0 replies; 46+ messages in thread
From: Stefan Kangas @ 2023-09-02 23:07 UTC (permalink / raw)
  To: Jonas Bernoulli, Eli Zaretskii; +Cc: emacs-devel, rms

Jonas Bernoulli <jonas@bernoul.li> writes:

> Replacing server-window with server-window-alist or something like that.

If you could file a feature request with the details, that'd be
appreciated.  No rush, of course.



^ permalink raw reply	[flat|nested] 46+ messages in thread

* Re: Adding with-editor to Emacs?
  2023-09-02 19:56                 ` Stefan Kangas
  2023-09-02 21:26                   ` Jonas Bernoulli
@ 2023-09-03  5:00                   ` Eli Zaretskii
  1 sibling, 0 replies; 46+ messages in thread
From: Eli Zaretskii @ 2023-09-03  5:00 UTC (permalink / raw)
  To: Stefan Kangas; +Cc: jonas, emacs-devel, rms

> From: Stefan Kangas <stefankangas@gmail.com>
> Date: Sat, 2 Sep 2023 12:56:32 -0700
> Cc: emacs-devel@gnu.org, rms@gnu.org
> 
> Jonas Bernoulli <jonas@bernoul.li> writes:
> 
> > Identifying the authors of the broken Emacs installations, contacting
> > them and explaining the issue to them, and then waiting for months/years
> > until the updates trickle down to users, was not an option.  I need a
> > solution now.  And this was such an exhausting experience, I did not
> > have the energy to *also* contact everyone who had messed up their Emacs
> > package.  And it is such a bad memory (it was the first time I got
> > massively attacked for publishing free software), that I am also not
> > volunteering to do that work now.
> 
> Wow, what a ride.  I admire your patience, is all I can say.
> 
> >> Do you mean that emacsclient is installed in a place that just typing
> >> "emacsclient RET" at the shell prompt fails to run it?  If so, that's
> >> a broken installation, and Emacs shouldn't really try to fix that.
> >
> > I think this is a very reasonable for Emacs.  In other words, the best
> > course of action is to just forget the suggestion that with-editor is
> > added to Emacs.  There is no real need and nobody volunteering to do the
> > work anyway.
> 
> It sounds like with-editor for the most part contains workarounds for
> broken Emacs installations?  Is there anything in use-package that does
> not belong to that category, and that you therefore think *should*
> really be fixed in Emacs?

I was thinking about a function that would attempt to produce the best
guess for how to invoke the version of emacsclient which corresponds
to the running Emacs binary.  It is probably only important for
features like Magit, which invoke programs known to need $EDITOR.
That is quite a special case, which I think explains why no one
requested this before.  Still, it could be a useful addition.

To support the "usual" cases, Emacs running installed and uninstalled,
is easy enough.  Supporting program-name transformations specified by
the --program-prefix/suffix and --program-transform-name
configure-time option is a bit trickier, but still reasonably
straightforward, at least for some values of transformations.  The
final fallback should be just "emacsclient", to be found by the
system's program loader using its rules (which could include more than
just searching PATH).

However, to cover all the cases that with-editor supports now, we need
to understand them, because I'm not sure we want to support all of
them, or if we do, do it in the same way as with-editor does.  I
couldn't find that explanation in with-editor.el, and the code there
doesn't always explain itself, in particular where it alludes to macOS
and Debian quirks.



^ permalink raw reply	[flat|nested] 46+ messages in thread

* Re: Adding with-editor to Emacs?
  2023-09-01 18:42         ` Eli Zaretskii
  2023-09-01 20:23           ` Jonas Bernoulli
@ 2023-09-03 14:36           ` Manuel Giraud via Emacs development discussions.
  2023-09-03 15:34             ` Eli Zaretskii
  1 sibling, 1 reply; 46+ messages in thread
From: Manuel Giraud via Emacs development discussions. @ 2023-09-03 14:36 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: Jonas Bernoulli, stefankangas, emacs-devel, rms

Eli Zaretskii <eliz@gnu.org> writes:

>> 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.

Just my one 2 cents datapoint:

I have this line in my init.el
(add-hook 'eshell-mode-hook 'with-editor-export-editor)

and now, I can do a standard Unix "crontab -e" or "vipw" to edit those
special files from a remote eshell (be it via sudo, ssh whatever).
-- 
Manuel Giraud



^ permalink raw reply	[flat|nested] 46+ messages in thread

* Re: Adding with-editor to Emacs?
  2023-09-03 14:36           ` Adding with-editor to Emacs? Manuel Giraud via Emacs development discussions.
@ 2023-09-03 15:34             ` Eli Zaretskii
  2023-09-03 18:54               ` Manuel Giraud via Emacs development discussions.
  0 siblings, 1 reply; 46+ messages in thread
From: Eli Zaretskii @ 2023-09-03 15:34 UTC (permalink / raw)
  To: Manuel Giraud; +Cc: jonas, stefankangas, emacs-devel, rms

> From: Manuel Giraud <manuel@ledu-giraud.fr>
> Cc: Jonas Bernoulli <jonas@bernoul.li>,  stefankangas@gmail.com,
>   emacs-devel@gnu.org,  rms@gnu.org
> Date: Sun, 03 Sep 2023 16:36:17 +0200
> 
> >> - 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.
> 
> Just my one 2 cents datapoint:
> 
> I have this line in my init.el
> (add-hook 'eshell-mode-hook 'with-editor-export-editor)
> 
> and now, I can do a standard Unix "crontab -e" or "vipw" to edit those
> special files from a remote eshell (be it via sudo, ssh whatever).

So we are talking about EDITOR settings missing from the shell init
files?

(I believe "M-x shell" does read the shell's init file, doesn't it?)



^ permalink raw reply	[flat|nested] 46+ messages in thread

* Re: Adding with-editor to Emacs?
  2023-09-02 18:57                 ` Eli Zaretskii
  2023-09-02 21:04                   ` Jonas Bernoulli
@ 2023-09-03 17:02                   ` Lynn Winebarger
  2023-09-03 17:21                     ` Eli Zaretskii
  1 sibling, 1 reply; 46+ messages in thread
From: Lynn Winebarger @ 2023-09-03 17:02 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: Jonas Bernoulli, stefankangas, emacs-devel, rms

On Sat, Sep 2, 2023 at 2:58 PM Eli Zaretskii <eliz@gnu.org> wrote:
> > From: Jonas Bernoulli <jonas@bernoul.li>
> > Cc: stefankangas@gmail.com, emacs-devel@gnu.org, rms@gnu.org
> > Date: Sat, 02 Sep 2023 20:12:40 +0200
> >
> > > Then I guess you should describe all those atrocities in detail, so
> > > that we could perhaps devise ways of handling it.
> >
> > I do not have a list of those atrocities and I do not have the bandwidth
> > and motivation to compile that in the next few months.  I have code that
> > deals with it though (with-editor-locate-emacsclient and the functions
> > it uses).  Using git to trace the history of that code, would give you
> > commits with explanations and/or links to places were the issues that
> > are being addressed were described.
>
> It's not that easy: AFAIU, with-editor was part of Magit, and was
> separated into a repository of its own not very long ago.  And the
> answers to my questions seem to be before the split.
>
> I also looked at the present code and found it to have quite a few
> non-trivial parts whose purpose I couldn't easily explain or guess,
> and which are not explained in the comments, either.
>
> So, if you have no time or motivation to describe the problems you
> tried to solve with that code, I guess someone else will need to find
> out and describe the problems in a way that we could then consider for
> inclusion.  I cannot myself afford digging through the Magit's Git
> repository to find the description of these problems, sorry.
>
> Or maybe Richard already knows the answers, since he thought this
> should be added to Emacs.
>

Just to put it out there, wouldn't putting the basic function in core
emacs, without all the workarounds for packaging fails, put the onus
on the packager to either adhere to the standard layout or patch their
distribution to make the function work accordingly?  That seems like
one of the benefits of a package being included in the core.

Lynn



^ permalink raw reply	[flat|nested] 46+ messages in thread

* Re: Adding with-editor to Emacs?
  2023-09-03 17:02                   ` Lynn Winebarger
@ 2023-09-03 17:21                     ` Eli Zaretskii
  2023-09-03 18:21                       ` Lynn Winebarger
  0 siblings, 1 reply; 46+ messages in thread
From: Eli Zaretskii @ 2023-09-03 17:21 UTC (permalink / raw)
  To: Lynn Winebarger; +Cc: jonas, stefankangas, emacs-devel, rms

> From: Lynn Winebarger <owinebar@gmail.com>
> Date: Sun, 3 Sep 2023 13:02:49 -0400
> Cc: Jonas Bernoulli <jonas@bernoul.li>, stefankangas@gmail.com, emacs-devel@gnu.org, 
> 	rms@gnu.org
> 
> Just to put it out there, wouldn't putting the basic function in core
> emacs, without all the workarounds for packaging fails, put the onus
> on the packager to either adhere to the standard layout or patch their
> distribution to make the function work accordingly?  That seems like
> one of the benefits of a package being included in the core.

I don't think I understand what you are saying here.  At least one
sentence failed to parse.



^ permalink raw reply	[flat|nested] 46+ messages in thread

* Re: Adding with-editor to Emacs?
  2023-09-03 17:21                     ` Eli Zaretskii
@ 2023-09-03 18:21                       ` Lynn Winebarger
  2023-09-03 18:37                         ` Eli Zaretskii
  0 siblings, 1 reply; 46+ messages in thread
From: Lynn Winebarger @ 2023-09-03 18:21 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: jonas, stefankangas, emacs-devel, rms

On Sun, Sep 3, 2023 at 1:22 PM Eli Zaretskii <eliz@gnu.org> wrote:
> > From: Lynn Winebarger <owinebar@gmail.com>
> >
> > Just to put it out there, wouldn't putting the basic function in core
> > emacs, without all the workarounds for packaging fails, put the onus
> > on the packager to either adhere to the standard layout or patch their
> > distribution to make the function work accordingly?  That seems like
> > one of the benefits of a package being included in the core.
>
> I don't think I understand what you are saying here.  At least one
> sentence failed to parse.

It seemed to me the problems Jonas described with finding the correct
emacsclient binary resulted from the library being in an external
package rather than part of the GNU Emacs distribution.
That is, if the "with-editor" function were
* implemented in a core emacs library following the simple approach
you suggested, based on the built-in expected location of emacsclient
* had a test to verify this function works when installed
then failures due to odd packaging conventions or plain oversight
would be the responsibility of the emacs packager/distribution.  The
failures could be fixed either by adopting the standard layout or by
patching the emacs distribution.  Either way, it would not be the
concern of the core emacs maintainer of the library containing the
with-editor function.

That is one of the benefits of being upstream  from emacs
distributions (as a GNU emacs contributor) instead of "downstream" of
the distribution as a package author.  At least, it would seem that
way.

Lynn



^ permalink raw reply	[flat|nested] 46+ messages in thread

* Re: Adding with-editor to Emacs?
  2023-09-03 18:21                       ` Lynn Winebarger
@ 2023-09-03 18:37                         ` Eli Zaretskii
  0 siblings, 0 replies; 46+ messages in thread
From: Eli Zaretskii @ 2023-09-03 18:37 UTC (permalink / raw)
  To: Lynn Winebarger; +Cc: jonas, stefankangas, emacs-devel, rms

> From: Lynn Winebarger <owinebar@gmail.com>
> Date: Sun, 3 Sep 2023 14:21:46 -0400
> Cc: jonas@bernoul.li, stefankangas@gmail.com, emacs-devel@gnu.org, rms@gnu.org
> 
> On Sun, Sep 3, 2023 at 1:22 PM Eli Zaretskii <eliz@gnu.org> wrote:
> > > From: Lynn Winebarger <owinebar@gmail.com>
> > >
> > > Just to put it out there, wouldn't putting the basic function in core
> > > emacs, without all the workarounds for packaging fails, put the onus
> > > on the packager to either adhere to the standard layout or patch their
> > > distribution to make the function work accordingly?  That seems like
> > > one of the benefits of a package being included in the core.
> >
> > I don't think I understand what you are saying here.  At least one
> > sentence failed to parse.
> 
> It seemed to me the problems Jonas described with finding the correct
> emacsclient binary resulted from the library being in an external
> package rather than part of the GNU Emacs distribution.

That's not how I understood what Jonas was saying.  He said he started
with the simple approach I suggested, but it wasn't enough, it still
failed in some cases.



^ permalink raw reply	[flat|nested] 46+ messages in thread

* Re: Adding with-editor to Emacs?
  2023-09-03 15:34             ` Eli Zaretskii
@ 2023-09-03 18:54               ` Manuel Giraud via Emacs development discussions.
  2023-09-03 19:26                 ` Eli Zaretskii
  0 siblings, 1 reply; 46+ messages in thread
From: Manuel Giraud via Emacs development discussions. @ 2023-09-03 18:54 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: jonas, stefankangas, emacs-devel, rms

Eli Zaretskii <eliz@gnu.org> writes:

>> From: Manuel Giraud <manuel@ledu-giraud.fr>
>> Cc: Jonas Bernoulli <jonas@bernoul.li>,  stefankangas@gmail.com,
>>   emacs-devel@gnu.org,  rms@gnu.org
>> Date: Sun, 03 Sep 2023 16:36:17 +0200
>> 
>> >> - 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.
>> 
>> Just my one 2 cents datapoint:
>> 
>> I have this line in my init.el
>> (add-hook 'eshell-mode-hook 'with-editor-export-editor)
>> 
>> and now, I can do a standard Unix "crontab -e" or "vipw" to edit those
>> special files from a remote eshell (be it via sudo, ssh whatever).
>
> So we are talking about EDITOR settings missing from the shell init
> files?
>
> (I believe "M-x shell" does read the shell's init file, doesn't it?)

Not really I guess.  I don't know how to set EDITOR correctly to do the
following:

   - M-x shell
   - ssh remote-server
   - su -l
   - vipw  --> open a new buffer in *this* Emacs

But, I could do this with with-editor and eshell (maybe it could work
for M-x shell also, I don't know) as follow:

   - C-x C-f /ssh:remote-server|su::
   - M-x eshell
   - vipw  --> and here it works, opening an Emacs buffer through
               emacsclient so I could edit and C-c C-c when done

I am not an expert of with-editor but it is one that it does well.
-- 
Manuel Giraud



^ permalink raw reply	[flat|nested] 46+ messages in thread

* Re: Adding with-editor to Emacs?
  2023-09-03 18:54               ` Manuel Giraud via Emacs development discussions.
@ 2023-09-03 19:26                 ` Eli Zaretskii
  2023-09-04  8:21                   ` Manuel Giraud via Emacs development discussions.
  2023-09-05  0:27                   ` Richard Stallman
  0 siblings, 2 replies; 46+ messages in thread
From: Eli Zaretskii @ 2023-09-03 19:26 UTC (permalink / raw)
  To: Manuel Giraud; +Cc: jonas, stefankangas, emacs-devel, rms

> From: Manuel Giraud <manuel@ledu-giraud.fr>
> Cc: jonas@bernoul.li,  stefankangas@gmail.com,  emacs-devel@gnu.org,
>   rms@gnu.org
> Date: Sun, 03 Sep 2023 20:54:47 +0200
> 
> Eli Zaretskii <eliz@gnu.org> writes:
> 
> >> From: Manuel Giraud <manuel@ledu-giraud.fr>
> >> Cc: Jonas Bernoulli <jonas@bernoul.li>,  stefankangas@gmail.com,
> >>   emacs-devel@gnu.org,  rms@gnu.org
> >> Date: Sun, 03 Sep 2023 16:36:17 +0200
> >> 
> >> >> - 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.
> >> 
> >> Just my one 2 cents datapoint:
> >> 
> >> I have this line in my init.el
> >> (add-hook 'eshell-mode-hook 'with-editor-export-editor)
> >> 
> >> and now, I can do a standard Unix "crontab -e" or "vipw" to edit those
> >> special files from a remote eshell (be it via sudo, ssh whatever).
> >
> > So we are talking about EDITOR settings missing from the shell init
> > files?
> >
> > (I believe "M-x shell" does read the shell's init file, doesn't it?)
> 
> Not really I guess.  I don't know how to set EDITOR correctly to do the
> following:
> 
>    - M-x shell
>    - ssh remote-server
>    - su -l
>    - vipw  --> open a new buffer in *this* Emacs
> 
> But, I could do this with with-editor and eshell (maybe it could work
> for M-x shell also, I don't know) as follow:
> 
>    - C-x C-f /ssh:remote-server|su::
>    - M-x eshell
>    - vipw  --> and here it works, opening an Emacs buffer through
>                emacsclient so I could edit and C-c C-c when done

You've lost me here.  You assume I know what with-editor does?




^ permalink raw reply	[flat|nested] 46+ messages in thread

* Re: Adding with-editor to Emacs?
  2023-09-03 19:26                 ` Eli Zaretskii
@ 2023-09-04  8:21                   ` Manuel Giraud via Emacs development discussions.
  2023-09-04 12:18                     ` Eli Zaretskii
  2023-09-06  0:59                     ` Richard Stallman
  2023-09-05  0:27                   ` Richard Stallman
  1 sibling, 2 replies; 46+ messages in thread
From: Manuel Giraud via Emacs development discussions. @ 2023-09-04  8:21 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: jonas, stefankangas, emacs-devel, rms

Eli Zaretskii <eliz@gnu.org> writes:

[...]

>> Not really I guess.  I don't know how to set EDITOR correctly to do the
>> following:
>> 
>>    - M-x shell
>>    - ssh remote-server
>>    - su -l
>>    - vipw  --> open a new buffer in *this* Emacs
>> 
>> But, I could do this with with-editor and eshell (maybe it could work
>> for M-x shell also, I don't know) as follow:
>> 
>>    - C-x C-f /ssh:remote-server|su::
>>    - M-x eshell
>>    - vipw  --> and here it works, opening an Emacs buffer through
>>                emacsclient so I could edit and C-c C-c when done
>
> You've lost me here.  You assume I know what with-editor does?

Ok, I might be lost also (as I said I'm not an expert of everything
with-editor does).  I'll try to rephrase.  with-editor is able to
correctly set EDITOR to have any shell command that need editing appear
into an Emacs buffer locally.  Such command might be over a ssh session
or into a sudo for instance.

So I guess you're right it is just a matter of setting EDITOR after all.
But I think that this is the hard part that with-editor does for you.
-- 
Manuel Giraud



^ permalink raw reply	[flat|nested] 46+ messages in thread

* Re: Adding with-editor to Emacs?
  2023-09-04  8:21                   ` Manuel Giraud via Emacs development discussions.
@ 2023-09-04 12:18                     ` Eli Zaretskii
  2023-09-04 12:44                       ` Manuel Giraud via Emacs development discussions.
  2023-09-04 13:18                       ` Manuel Giraud via Emacs development discussions.
  2023-09-06  0:59                     ` Richard Stallman
  1 sibling, 2 replies; 46+ messages in thread
From: Eli Zaretskii @ 2023-09-04 12:18 UTC (permalink / raw)
  To: Manuel Giraud; +Cc: jonas, stefankangas, emacs-devel, rms

> From: Manuel Giraud <manuel@ledu-giraud.fr>
> Cc: jonas@bernoul.li,  stefankangas@gmail.com,  emacs-devel@gnu.org,
>   rms@gnu.org
> Date: Mon, 04 Sep 2023 10:21:15 +0200
> 
> Eli Zaretskii <eliz@gnu.org> writes:
> 
> [...]
> 
> >> Not really I guess.  I don't know how to set EDITOR correctly to do the
> >> following:
> >> 
> >>    - M-x shell
> >>    - ssh remote-server
> >>    - su -l
> >>    - vipw  --> open a new buffer in *this* Emacs
> >> 
> >> But, I could do this with with-editor and eshell (maybe it could work
> >> for M-x shell also, I don't know) as follow:
> >> 
> >>    - C-x C-f /ssh:remote-server|su::
> >>    - M-x eshell
> >>    - vipw  --> and here it works, opening an Emacs buffer through
> >>                emacsclient so I could edit and C-c C-c when done
> >
> > You've lost me here.  You assume I know what with-editor does?
> 
> Ok, I might be lost also (as I said I'm not an expert of everything
> with-editor does).  I'll try to rephrase.  with-editor is able to
> correctly set EDITOR to have any shell command that need editing appear
> into an Emacs buffer locally.  Such command might be over a ssh session
> or into a sudo for instance.

And it provides a separate value for EDITOR to each one of these
cases?

> So I guess you're right it is just a matter of setting EDITOR after all.
> But I think that this is the hard part that with-editor does for you.



^ permalink raw reply	[flat|nested] 46+ messages in thread

* Re: Adding with-editor to Emacs?
  2023-09-04 12:18                     ` Eli Zaretskii
@ 2023-09-04 12:44                       ` Manuel Giraud via Emacs development discussions.
  2023-09-04 13:18                       ` Manuel Giraud via Emacs development discussions.
  1 sibling, 0 replies; 46+ messages in thread
From: Manuel Giraud via Emacs development discussions. @ 2023-09-04 12:44 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: jonas, stefankangas, emacs-devel, rms

Eli Zaretskii <eliz@gnu.org> writes:

>> From: Manuel Giraud <manuel@ledu-giraud.fr>
>> Cc: jonas@bernoul.li,  stefankangas@gmail.com,  emacs-devel@gnu.org,
>>   rms@gnu.org
>> Date: Mon, 04 Sep 2023 10:21:15 +0200
>> 
>> Eli Zaretskii <eliz@gnu.org> writes:
>> 
>> [...]
>> 
>> >> Not really I guess.  I don't know how to set EDITOR correctly to do the
>> >> following:
>> >> 
>> >>    - M-x shell
>> >>    - ssh remote-server
>> >>    - su -l
>> >>    - vipw  --> open a new buffer in *this* Emacs
>> >> 
>> >> But, I could do this with with-editor and eshell (maybe it could work
>> >> for M-x shell also, I don't know) as follow:
>> >> 
>> >>    - C-x C-f /ssh:remote-server|su::
>> >>    - M-x eshell
>> >>    - vipw  --> and here it works, opening an Emacs buffer through
>> >>                emacsclient so I could edit and C-c C-c when done
>> >
>> > You've lost me here.  You assume I know what with-editor does?
>> 
>> Ok, I might be lost also (as I said I'm not an expert of everything
>> with-editor does).  I'll try to rephrase.  with-editor is able to
>> correctly set EDITOR to have any shell command that need editing appear
>> into an Emacs buffer locally.  Such command might be over a ssh session
>> or into a sudo for instance.
>
> And it provides a separate value for EDITOR to each one of these
> cases?

This I'm not sure.  I have tested on two different machines and on a
local "doas" and echo $EDITOR always returns this:

sh -c 'printf "\nWITH-EDITOR: $$ OPEN $0\037$1\037 IN $(pwd)\n"; sleep 604800 & sleep=$!; trap "kill $sleep; exit 0" USR1; trap "kill $sleep; exit 1" USR2; wait $sleep'

So it seems there is some shell hackery going on.
-- 
Manuel Giraud



^ permalink raw reply	[flat|nested] 46+ messages in thread

* Re: Adding with-editor to Emacs?
  2023-09-04 12:18                     ` Eli Zaretskii
  2023-09-04 12:44                       ` Manuel Giraud via Emacs development discussions.
@ 2023-09-04 13:18                       ` Manuel Giraud via Emacs development discussions.
  1 sibling, 0 replies; 46+ messages in thread
From: Manuel Giraud via Emacs development discussions. @ 2023-09-04 13:18 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: jonas, stefankangas, emacs-devel, rms

Hi,

FWIW, I've just made the following test with the bundle VC support
of Emacs:

        ⋅ 'C-x C-f' /ssh:remote-server:/tmp/
        ⋅ '+' new-project
        ⋅ 'C-x C-f' new-project/new-file
            … enter some text … 
        ⋅ 'C-x v v' choose the Git backend
        ⋅ 'C-x v v' enter the first log message
        ⋅ 'C-c C-c'

AFAIK, there is no use of with-editor here.  So as with-editor seems to
be used to do such remote editing into Magit maybe there is difference
in philosophy at play.
-- 
Manuel Giraud



^ permalink raw reply	[flat|nested] 46+ messages in thread

* Re: Adding with-editor to Emacs?
  2023-09-03 19:26                 ` Eli Zaretskii
  2023-09-04  8:21                   ` Manuel Giraud via Emacs development discussions.
@ 2023-09-05  0:27                   ` Richard Stallman
  2023-09-15 21:59                     ` Björn Bidar
  1 sibling, 1 reply; 46+ messages in thread
From: Richard Stallman @ 2023-09-05  0:27 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel

[[[ To any NSA and FBI agents reading my email: please consider    ]]]
[[[ whether defending the US Constitution against all enemies,     ]]]
[[[ foreign or domestic, requires you to follow Snowden's example. ]]]

  > You've lost me here.  You assume I know what with-editor does?

I've been puzzled because I thought that the editor in Emacs was Emacs.

-- 
Dr Richard Stallman (https://stallman.org)
Chief GNUisance of the GNU Project (https://gnu.org)
Founder, Free Software Foundation (https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)





^ permalink raw reply	[flat|nested] 46+ messages in thread

* Re: Adding with-editor to Emacs?
  2023-09-04  8:21                   ` Manuel Giraud via Emacs development discussions.
  2023-09-04 12:18                     ` Eli Zaretskii
@ 2023-09-06  0:59                     ` Richard Stallman
  1 sibling, 0 replies; 46+ messages in thread
From: Richard Stallman @ 2023-09-06  0:59 UTC (permalink / raw)
  To: Manuel Giraud; +Cc: eliz, jonas, stefankangas, emacs-devel

[[[ To any NSA and FBI agents reading my email: please consider    ]]]
[[[ whether defending the US Constitution against all enemies,     ]]]
[[[ foreign or domestic, requires you to follow Snowden's example. ]]]

  > Ok, I might be lost also (as I said I'm not an expert of everything
  > with-editor does).  I'll try to rephrase.  with-editor is able to
  > correctly set EDITOR to have any shell command that need editing appear
  > into an Emacs buffer locally.  Such command might be over a ssh session
  > or into a sudo for instance.

Now I understand the idea -- but that _name_ does not explain it well.
How about renaming it to something easier to understand.

Maybe with-editor-envvar-to-edit-cmd-in-emacs?

Perhaps it could be a little shorter tan that, but at least
that one will be clear.  If I haven't misunderstood the meaning myself;-{
-- 
Dr Richard Stallman (https://stallman.org)
Chief GNUisance of the GNU Project (https://gnu.org)
Founder, Free Software Foundation (https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)





^ permalink raw reply	[flat|nested] 46+ messages in thread

* Re: Adding with-editor to Emacs?
  2023-09-05  0:27                   ` Richard Stallman
@ 2023-09-15 21:59                     ` Björn Bidar
  2023-09-17 23:03                       ` Richard Stallman
  0 siblings, 1 reply; 46+ messages in thread
From: Björn Bidar @ 2023-09-15 21:59 UTC (permalink / raw)
  To: Richard Stallman; +Cc: Eli Zaretskii, emacs-devel

Richard Stallman <rms@gnu.org> writes:

>   > You've lost me here.  You assume I know what with-editor does?
>
> I've been puzzled because I thought that the editor in Emacs was Emacs.

It's about telling the external programs to do THING /with-editor/,
editor because the $EDITOR environment that is used.
Externally be it remote or locally. I think doing the guess work to set
$EDITOR correctly in each instance is to difficult to be done in the
individual shells configuration, especially since they don't know about and
can't assume tramp.



^ permalink raw reply	[flat|nested] 46+ messages in thread

* Re: Adding with-editor to Emacs?
  2023-09-15 21:59                     ` Björn Bidar
@ 2023-09-17 23:03                       ` Richard Stallman
  2023-09-18  8:59                         ` Philip Kaludercic
  0 siblings, 1 reply; 46+ messages in thread
From: Richard Stallman @ 2023-09-17 23:03 UTC (permalink / raw)
  To: Björn Bidar; +Cc: eliz, emacs-devel

[[[ To any NSA and FBI agents reading my email: please consider    ]]]
[[[ whether defending the US Constitution against all enemies,     ]]]
[[[ foreign or domestic, requires you to follow Snowden's example. ]]]

  > It's about telling the external programs to do THING /with-editor/,
  > editor because the $EDITOR environment that is used.

Now I see how it is useful, but I suggest we change its name before
installing it in Emacs or either ELPA.  If we call it
`with-EDITOR-envvar' it purpose will be much clearer.

-- 
Dr Richard Stallman (https://stallman.org)
Chief GNUisance of the GNU Project (https://gnu.org)
Founder, Free Software Foundation (https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)





^ permalink raw reply	[flat|nested] 46+ messages in thread

* Re: Adding with-editor to Emacs?
  2023-09-17 23:03                       ` Richard Stallman
@ 2023-09-18  8:59                         ` Philip Kaludercic
  2023-09-20 18:35                           ` Richard Stallman
  0 siblings, 1 reply; 46+ messages in thread
From: Philip Kaludercic @ 2023-09-18  8:59 UTC (permalink / raw)
  To: Richard Stallman; +Cc: Björn Bidar, eliz, emacs-devel

Richard Stallman <rms@gnu.org> writes:

> [[[ To any NSA and FBI agents reading my email: please consider    ]]]
> [[[ whether defending the US Constitution against all enemies,     ]]]
> [[[ foreign or domestic, requires you to follow Snowden's example. ]]]
>
>   > It's about telling the external programs to do THING /with-editor/,
>   > editor because the $EDITOR environment that is used.
>
> Now I see how it is useful, but I suggest we change its name before
> installing it in Emacs or either ELPA.  If we call it
> `with-EDITOR-envvar' it purpose will be much clearer.

As someone who also frequently has difficulties understanding how people
come up with package names, I don't see how your suggestion is clearer
than the current name.

-- 
Philip Kaludercic



^ permalink raw reply	[flat|nested] 46+ messages in thread

* Re: Adding with-editor to Emacs?
  2023-09-18  8:59                         ` Philip Kaludercic
@ 2023-09-20 18:35                           ` Richard Stallman
  0 siblings, 0 replies; 46+ messages in thread
From: Richard Stallman @ 2023-09-20 18:35 UTC (permalink / raw)
  To: Philip Kaludercic; +Cc: emacs-devel

[[[ To any NSA and FBI agents reading my email: please consider    ]]]
[[[ whether defending the US Constitution against all enemies,     ]]]
[[[ foreign or domestic, requires you to follow Snowden's example. ]]]

  > > Now I see how it is useful, but I suggest we change its name before
  > > installing it in Emacs or either ELPA.  If we call it
  > > `with-EDITOR-envvar' it purpose will be much clearer.

  > As someone who also frequently has difficulties understanding how people
  > come up with package names, I don't see how your suggestion is clearer
  > than the current name.

I'm suggesting a new name for the macro, primarily, but it could
be used for the package too.

The purpose of the construct is to bind the envvar EDITOR for an
invocation of another process.  `with-editor' is unclear -- when I saw
it, I could not begin to imagine what that could mean.
`with-EDITOR-envvar' says that it has to do with binding the envvar
named EDITOR.

If someone presents a better suggestion, that is good.
I'm only saying that this name is better than `with-editor'.


-- 
Dr Richard Stallman (https://stallman.org)
Chief GNUisance of the GNU Project (https://gnu.org)
Founder, Free Software Foundation (https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)





^ permalink raw reply	[flat|nested] 46+ messages in thread

* Re: Adding with-editor to Emacs?
  2023-09-01 20:23           ` Jonas Bernoulli
  2023-09-02  6:19             ` Eli Zaretskii
  2023-09-02 11:39             ` Michael Albinus
@ 2023-10-17 10:23             ` Michael Albinus
  2023-10-17 17:18               ` Manuel Giraud via Emacs development discussions.
  2023-10-17 18:24               ` bug#66598: Missing options from emacsclient man page Peter Oliver
  2 siblings, 2 replies; 46+ messages in thread
From: Michael Albinus @ 2023-10-17 10:23 UTC (permalink / raw)
  To: Jonas Bernoulli; +Cc: Eli Zaretskii, stefankangas, emacs-devel, rms

Jonas Bernoulli <jonas@bernoul.li> writes:

Hi Jonas,

>>> - 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.
>
> Probably and it would be great if Tramp did handle that, but I don't
> even use Tramp except when users report that there is an issue when
> using Tramp with one of my packages.  So I am not the right person to
> implement it there, but if Michael were to tackle this, then maybe I
> would have some insights that could be useful.  Or not.

Finally, I've found a free time slot to check with-editor. In fact,
emacsclient can also be called on a remote machine in order to reach the
local Emacs server instance. What is needed is, that emacsclient must
tell the Emacs server where it is located.

Since Emacs 26, emacsclient is prepared for this. If you call
"emacsclient --tramp=<PREFIX>", all file names on the server side,
emacsclient sends as "/path/to/file", are "<PREFIX>/path/to/file".

If you detect a remote directory in with-editor, you can add the option
(concat "--tramp=" (file-remote-p default-directory)) to the emacsclient
call, because file-remote-p returns exactly the needed prefix.

Best regards, Michael.



^ permalink raw reply	[flat|nested] 46+ messages in thread

* Re: Adding with-editor to Emacs?
  2023-10-17 10:23             ` Michael Albinus
@ 2023-10-17 17:18               ` Manuel Giraud via Emacs development discussions.
  2023-10-17 18:09                 ` Michael Albinus
  2023-10-17 18:24               ` bug#66598: Missing options from emacsclient man page Peter Oliver
  1 sibling, 1 reply; 46+ messages in thread
From: Manuel Giraud via Emacs development discussions. @ 2023-10-17 17:18 UTC (permalink / raw)
  To: Michael Albinus
  Cc: Jonas Bernoulli, Eli Zaretskii, stefankangas, emacs-devel, rms

Michael Albinus <michael.albinus@gmx.de> writes:

> Jonas Bernoulli <jonas@bernoul.li> writes:
>
> Hi Jonas,
>
>>>> - 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.
>>
>> Probably and it would be great if Tramp did handle that, but I don't
>> even use Tramp except when users report that there is an issue when
>> using Tramp with one of my packages.  So I am not the right person to
>> implement it there, but if Michael were to tackle this, then maybe I
>> would have some insights that could be useful.  Or not.
>
> Finally, I've found a free time slot to check with-editor. In fact,
> emacsclient can also be called on a remote machine in order to reach the
> local Emacs server instance. What is needed is, that emacsclient must
> tell the Emacs server where it is located.

Do you an emacsclient on the server to do this?  AFAIU, with-editor does
not need this.
-- 
Manuel Giraud



^ permalink raw reply	[flat|nested] 46+ messages in thread

* Re: Adding with-editor to Emacs?
  2023-10-17 17:18               ` Manuel Giraud via Emacs development discussions.
@ 2023-10-17 18:09                 ` Michael Albinus
  2023-10-17 19:26                   ` Manuel Giraud via Emacs development discussions.
  0 siblings, 1 reply; 46+ messages in thread
From: Michael Albinus @ 2023-10-17 18:09 UTC (permalink / raw)
  To: Manuel Giraud
  Cc: Jonas Bernoulli, Eli Zaretskii, stefankangas, emacs-devel, rms

Manuel Giraud <manuel@ledu-giraud.fr> writes:

Hi Manuel,

>>>> If we want a better/safer client-server connections for remote hosts,
>>>> it should be handled in Tramp, I think.
>>>
>>> Probably and it would be great if Tramp did handle that, but I don't
>>> even use Tramp except when users report that there is an issue when
>>> using Tramp with one of my packages.  So I am not the right person to
>>> implement it there, but if Michael were to tackle this, then maybe I
>>> would have some insights that could be useful.  Or not.
>>
>> Finally, I've found a free time slot to check with-editor. In fact,
>> emacsclient can also be called on a remote machine in order to reach the
>> local Emacs server instance. What is needed is, that emacsclient must
>> tell the Emacs server where it is located.
>
> Do you an emacsclient on the server to do this?  AFAIU, with-editor does
> not need this.

with-editor has its own implementation (a shell script) for communication
between the local Emacs server and a remote host. I have been asked how
this could be replaced by using a remote emacsclient and
Tramp. Especially, how the file names should look like. IIUC the
with-editor code, emacsclient is not used in the remote case.

Best regards, Michael.



^ permalink raw reply	[flat|nested] 46+ messages in thread

* bug#66598: Missing options from emacsclient man page
  2023-10-17 10:23             ` Michael Albinus
  2023-10-17 17:18               ` Manuel Giraud via Emacs development discussions.
@ 2023-10-17 18:24               ` Peter Oliver
  2023-10-18  5:16                 ` Michael Albinus
  1 sibling, 1 reply; 46+ messages in thread
From: Peter Oliver @ 2023-10-17 18:24 UTC (permalink / raw)
  To: 66598

[-- Attachment #1: Type: text/plain, Size: 350 bytes --]

On Tue, 17 Oct 2023, Michael Albinus wrote:

> Since Emacs 26, emacsclient is prepared for this. If you call
> "emacsclient --tramp=<PREFIX>", all file names on the server side,
> emacsclient sends as "/path/to/file", are "<PREFIX>/path/to/file".

Attached is a patch to mention this (and other) options in the emacsclient man page.

-- 
Peter Oliver

[-- Attachment #2: Type: text/plain, Size: 1915 bytes --]

From c96e974073556d24da93332b4edb30da88a3ea8a Mon Sep 17 00:00:00 2001
From: Peter Oliver <git@mavit.org.uk>
Date: Tue, 17 Oct 2023 19:11:33 +0100
Subject: [PATCH] Document all emacsclient options in its man page

* doc/man/emacsclient.1: Document omitted options.
---
 doc/man/emacsclient.1 | 27 +++++++++++++++++++++++++--
 1 file changed, 25 insertions(+), 2 deletions(-)

diff --git a/doc/man/emacsclient.1 b/doc/man/emacsclient.1
index 83c8a366f8b..a72e75129f9 100644
--- a/doc/man/emacsclient.1
+++ b/doc/man/emacsclient.1
@@ -94,13 +94,36 @@ Emacs.  If combined with --eval, this option is ignored.
 How long to wait, in seconds, for Emacs to respond before giving up.
 The default is 0, which means to wait forever.
 .TP
-.B \-nw, \-t, \-\-tty
-Open a new Emacs frame on the current terminal.
+.B \-\-parent-id=ID
+Open an
+.B emacsclient
+frame as a client frame in the parent X window with id ID, via the
+XEmbed protocol.
+.TP
+.B \-q, \-\-quiet
+Do not display messages about waiting for Emacs or connecting to
+remote server sockets.
+.TP
+.B \-u, \-\-suppress-output
+Do not display results returned from the server.
 .TP
 .B \-s, \-\-socket-name=FILENAME
 Use socket named FILENAME for communication.
 This can also be specified via the EMACS_SOCKET_NAME environment variable.
 .TP
+.B \-t, \-\-tty, \-nw
+Open a new Emacs frame on the current terminal.
+.TP
+.B \-T, \-\-tramp-prefix=TRAMP-PREFIX’
+Set the prefix to add to filenames for Emacs to locate files on
+remote machines using TRAMP.  This is mostly useful in combination with
+using the Emacs server over a forwarded port or socket.
+
+Setting the environment variable
+.B EMACSCLIENT_TRAMP
+has the same effect as using this option.  If both are specified, the
+command-line option takes precedence.
+.TP
 .B \-V, \-\-version
 Print version information and exit.
 .TP
-- 
2.41.0


^ permalink raw reply related	[flat|nested] 46+ messages in thread

* Re: Adding with-editor to Emacs?
  2023-10-17 18:09                 ` Michael Albinus
@ 2023-10-17 19:26                   ` Manuel Giraud via Emacs development discussions.
  0 siblings, 0 replies; 46+ messages in thread
From: Manuel Giraud via Emacs development discussions. @ 2023-10-17 19:26 UTC (permalink / raw)
  To: Michael Albinus
  Cc: Jonas Bernoulli, Eli Zaretskii, stefankangas, emacs-devel, rms

Michael Albinus <michael.albinus@gmx.de> writes:

Hi Michael,

>>>>> If we want a better/safer client-server connections for remote hosts,
>>>>> it should be handled in Tramp, I think.
>>>>
>>>> Probably and it would be great if Tramp did handle that, but I don't
>>>> even use Tramp except when users report that there is an issue when
>>>> using Tramp with one of my packages.  So I am not the right person to
>>>> implement it there, but if Michael were to tackle this, then maybe I
>>>> would have some insights that could be useful.  Or not.
>>>
>>> Finally, I've found a free time slot to check with-editor. In fact,
>>> emacsclient can also be called on a remote machine in order to reach the
>>> local Emacs server instance. What is needed is, that emacsclient must
>>> tell the Emacs server where it is located.
>>
>> Do you an emacsclient on the server to do this?  AFAIU, with-editor does
>> not need this.
>
> with-editor has its own implementation (a shell script) for communication
> between the local Emacs server and a remote host. I have been asked how
> this could be replaced by using a remote emacsclient and
> Tramp. Especially, how the file names should look like.

Ok, thanks for this explanation.  But I don't think that requiring
emacsclient on the server will be very convenient.

> IIUC the with-editor code, emacsclient is not used in the remote case.

I understood the same: in the remote case, EDITOR is set to a shell
script hack.  BTW, I don't know what is the use case of with-editor if
it is not remote: in the local case, "export EDITOR=emacsclient" should
be sufficient.
-- 
Manuel Giraud



^ permalink raw reply	[flat|nested] 46+ messages in thread

* bug#66598: Missing options from emacsclient man page
  2023-10-17 18:24               ` bug#66598: Missing options from emacsclient man page Peter Oliver
@ 2023-10-18  5:16                 ` Michael Albinus
  2023-10-21 13:05                   ` Peter Oliver
  0 siblings, 1 reply; 46+ messages in thread
From: Michael Albinus @ 2023-10-18  5:16 UTC (permalink / raw)
  To: Peter Oliver; +Cc: 66598

Peter Oliver <p.d.oliver@mavit.org.uk> writes:

Hi Peter,

>> Since Emacs 26, emacsclient is prepared for this. If you call
>> "emacsclient --tramp=<PREFIX>", all file names on the server side,
>> emacsclient sends as "/path/to/file", are "<PREFIX>/path/to/file".
>
> Attached is a patch to mention this (and other) options in the emacsclient man page.

Thanks for the report. Yes, the recent options haven't been added to the
man page. I've seen this while writing my message you've quoted, and
I've fixed this in the emacs-29 branch two days ago.

Since I'm not that fluent with the nroff format, you might cross-check
whether everything is right. And perhaps we could also add an
ENVIRONMENT section.

> Peter Oliver

Best regards, Michael.





^ permalink raw reply	[flat|nested] 46+ messages in thread

* bug#66598: Missing options from emacsclient man page
  2023-10-18  5:16                 ` Michael Albinus
@ 2023-10-21 13:05                   ` Peter Oliver
  2023-10-21 13:31                     ` Eli Zaretskii
  2023-10-21 14:35                     ` Michael Albinus
  0 siblings, 2 replies; 46+ messages in thread
From: Peter Oliver @ 2023-10-21 13:05 UTC (permalink / raw)
  To: Michael Albinus; +Cc: 66598

[-- Attachment #1: Type: text/plain, Size: 564 bytes --]

On Wed, 18 Oct 2023, Michael Albinus wrote:

> Peter Oliver <p.d.oliver@mavit.org.uk> writes:
>
> Yes, the recent options haven't been added to the
> man page. I've seen this while writing my message you've quoted, and
> I've fixed this in the emacs-29 branch two days ago.

Ah, sorry, I didn’t think to look on the emacs-29 branch.

> Since I'm not that fluent with the nroff format, you might cross-check
> whether everything is right.

Looks good to me.

> And perhaps we could also add an ENVIRONMENT section.

Attached is a patch to do that.

-- 
Peter Oliver

[-- Attachment #2: Type: text/plain, Size: 3536 bytes --]

From f492af1a75e8f47ca6e50a1f59b0922ce24907de Mon Sep 17 00:00:00 2001
From: Peter Oliver <git@mavit.org.uk>
Date: Sat, 21 Oct 2023 14:02:06 +0100
Subject: [PATCH] * doc/man/emacsclient.1: Add an ENVIRONMENT section.

---
 doc/man/emacsclient.1 | 34 ++++++++++++++++++++++++++++------
 1 file changed, 28 insertions(+), 6 deletions(-)

diff --git a/doc/man/emacsclient.1 b/doc/man/emacsclient.1
index acc2edd4609..42312f24fb3 100644
--- a/doc/man/emacsclient.1
+++ b/doc/man/emacsclient.1
@@ -62,8 +62,8 @@ This option applies only to the next file specified.
 .TP
 .B \-a, \-\-alternate-editor=COMMAND
 If the Emacs server is not running, run the specified shell command instead.
-This can also be specified via the ALTERNATE_EDITOR environment variable.
-If the value of ALTERNATE_EDITOR is the empty string, run "emacs \-\-daemon" to
+This takes precedence over the ALTERNATE_EDITOR environment variable.
+If the empty string is specified, run "emacs \-\-daemon" to
 start Emacs in daemon mode, and try to connect to it.
 .TP
 .B -c, \-\-create-frame
@@ -84,7 +84,9 @@ Lisp expressions.
 .TP
 .B \-f, \-\-server-file=FILENAME
 Use TCP configuration file FILENAME for communication.
-This can also be specified via the EMACS_SERVER_FILE environment variable.
+This takes precedence over the EMACS_SERVER_FILE environment variable.
+Relative filenames are relative to "~/.emacs.d/server/", and the
+default is "server".
 .TP
 .B \-n, \-\-no-wait
 Return immediately without waiting for you to "finish" the buffer in
@@ -114,7 +116,7 @@ side-effect rather than result.
 .TP
 .B \-s, \-\-socket-name=FILENAME
 Use socket named FILENAME for communication.
-This can also be specified via the EMACS_SOCKET_NAME environment variable.
+This takes precedence over the EMACS_SOCKET_NAME environment variable.
 .TP
 .B \-nw, \-t, \-\-tty
 Open a new Emacs frame on the current terminal.
@@ -122,8 +124,9 @@ Open a new Emacs frame on the current terminal.
 .B \-T, \-\-tramp-prefix=PREFIX
 Set PREFIX to add to filenames for Emacs to locate files on remote
 machines using TRAMP.  This is mostly useful in combination with using
-the Emacs server over TCP with --server-file.  This can also be
-specified via the EMACSCLIENT_TRAMP environment variable.
+the Emacs server on a remote host (either using TCP with
+--server-file, or a socket forwarded over SSH).  This takes precedence
+over the EMACSCLIENT_TRAMP environment variable.
 .TP
 .B \-V, \-\-version
 Print version information and exit.
@@ -133,6 +136,25 @@ Print this usage information message and exit.
 .SH "EXIT STATUS"
 Normally, the exit status is 0.  If emacsclient shuts down due to
 Emacs signaling an error, the exit status is 1.
+.SH ENVIRONMENT
+.TP
+.B ALTERNATE_EDITOR
+If the Emacs server is not running, run the shell command in this
+environment variable instead.  If set to the empty string, run
+"emacs \-\-daemon" to start Emacs in daemon mode, and try to connect
+to it.
+.TP
+.B EMACSCLIENT_TRAMP
+A prefix to add to filenames, intended to allow Emacs to locate files
+on remote machines using TRAMP.
+.TP
+.B EMACS_SERVER_FILE
+Look in this file to discover where to find a TCP Emacs server.
+Relative filenames are relative to "~/.emacs.d/server/", and the
+default is "server".
+.TP
+.B EMACS_SOCKET_NAME
+The filename of the socket to use for communication with the Emacs server.
 .SH "SEE ALSO"
 The program is documented fully in
 .IR "Using Emacs as a Server"
-- 
2.41.0


^ permalink raw reply related	[flat|nested] 46+ messages in thread

* bug#66598: Missing options from emacsclient man page
  2023-10-21 13:05                   ` Peter Oliver
@ 2023-10-21 13:31                     ` Eli Zaretskii
  2023-10-21 14:35                     ` Michael Albinus
  1 sibling, 0 replies; 46+ messages in thread
From: Eli Zaretskii @ 2023-10-21 13:31 UTC (permalink / raw)
  To: Peter Oliver; +Cc: 66598, michael.albinus

> Cc: 66598@debbugs.gnu.org
> Date: Sat, 21 Oct 2023 14:05:40 +0100 (BST)
> From: Peter Oliver <p.d.oliver@mavit.org.uk>
> 
> On Wed, 18 Oct 2023, Michael Albinus wrote:
> 
> > Since I'm not that fluent with the nroff format, you might cross-check
> > whether everything is right.
> 
> Looks good to me.
> 
> > And perhaps we could also add an ENVIRONMENT section.
> 
> Attached is a patch to do that.

Thanks, a couple of comments below.

> @@ -62,8 +62,8 @@ This option applies only to the next file specified.
>  .TP
>  .B \-a, \-\-alternate-editor=COMMAND
>  If the Emacs server is not running, run the specified shell command instead.
> -This can also be specified via the ALTERNATE_EDITOR environment variable.
> -If the value of ALTERNATE_EDITOR is the empty string, run "emacs \-\-daemon" to
> +This takes precedence over the ALTERNATE_EDITOR environment variable.
> +If the empty string is specified, run "emacs \-\-daemon" to
>  start Emacs in daemon mode, and try to connect to it.

This talks about precedence between the variable and the command-line
option without first introducing the environment variable.  The
precedence part should be not _instead_ of the description of the
variable, but _in_addition_ to it.  It's okay that there's now the
ENVIRONMENT section, but it's too far away, so at least something like
"see ENVIRONMENT below" should be here.

> @@ -84,7 +84,9 @@ Lisp expressions.
>  .TP
>  .B \-f, \-\-server-file=FILENAME
>  Use TCP configuration file FILENAME for communication.
> -This can also be specified via the EMACS_SERVER_FILE environment variable.
> +This takes precedence over the EMACS_SERVER_FILE environment variable.
> +Relative filenames are relative to "~/.emacs.d/server/", and the
> +default is "server".

Same here.

> @@ -114,7 +116,7 @@ side-effect rather than result.
>  .TP
>  .B \-s, \-\-socket-name=FILENAME
>  Use socket named FILENAME for communication.
> -This can also be specified via the EMACS_SOCKET_NAME environment variable.
> +This takes precedence over the EMACS_SOCKET_NAME environment variable.

And here.

> @@ -122,8 +124,9 @@ Open a new Emacs frame on the current terminal.
>  .B \-T, \-\-tramp-prefix=PREFIX
>  Set PREFIX to add to filenames for Emacs to locate files on remote
>  machines using TRAMP.  This is mostly useful in combination with using
> -the Emacs server over TCP with --server-file.  This can also be
> -specified via the EMACSCLIENT_TRAMP environment variable.
> +the Emacs server on a remote host (either using TCP with
> +--server-file, or a socket forwarded over SSH).  This takes precedence
> +over the EMACSCLIENT_TRAMP environment variable.

And here.

> @@ -133,6 +136,25 @@ Print this usage information message and exit.
>  .SH "EXIT STATUS"
>  Normally, the exit status is 0.  If emacsclient shuts down due to
>  Emacs signaling an error, the exit status is 1.
> +.SH ENVIRONMENT
> +.TP
> +.B ALTERNATE_EDITOR
> +If the Emacs server is not running, run the shell command in this
> +environment variable instead.  If set to the empty string, run
> +"emacs \-\-daemon" to start Emacs in daemon mode, and try to connect
> +to it.
> +.TP
> +.B EMACSCLIENT_TRAMP
> +A prefix to add to filenames, intended to allow Emacs to locate files
> +on remote machines using TRAMP.
> +.TP
> +.B EMACS_SERVER_FILE
> +Look in this file to discover where to find a TCP Emacs server.
> +Relative filenames are relative to "~/.emacs.d/server/", and the
> +default is "server".
> +.TP
> +.B EMACS_SOCKET_NAME
> +The filename of the socket to use for communication with the Emacs server.

And this section should say that the corresponding command-line
arguments override the environment variables.





^ permalink raw reply	[flat|nested] 46+ messages in thread

* bug#66598: Missing options from emacsclient man page
  2023-10-21 13:05                   ` Peter Oliver
  2023-10-21 13:31                     ` Eli Zaretskii
@ 2023-10-21 14:35                     ` Michael Albinus
  2023-10-29 11:27                       ` Eli Zaretskii
  1 sibling, 1 reply; 46+ messages in thread
From: Michael Albinus @ 2023-10-21 14:35 UTC (permalink / raw)
  To: Peter Oliver; +Cc: 66598

Peter Oliver <p.d.oliver@mavit.org.uk> writes:

Hi Peter,

>> And perhaps we could also add an ENVIRONMENT section.
>
> Attached is a patch to do that.

Thanks for this. Eli gave you already comments, so here are just my
additional ones.

>  .B \-T, \-\-tramp-prefix=PREFIX
>  Set PREFIX to add to filenames for Emacs to locate files on remote
>  machines using TRAMP.  This is mostly useful in combination with using
> -the Emacs server over TCP with --server-file.  This can also be
> -specified via the EMACSCLIENT_TRAMP environment variable.
> +the Emacs server on a remote host (either using TCP with
> +--server-file, or a socket forwarded over SSH).  This takes precedence
> +over the EMACSCLIENT_TRAMP environment variable.

I'm not sure whether we shall mention here the alternative "socket
forwarded over SSH". This is indeed the only existing alternative for
the --server-file option in Emacs 29, but I have rough plans to offer
also network processes in Tramp, which would add more flexibility, and
less configuration need for users. But this is in an early phase of
thinking only ATM.

So perhaps it is OK to mention "socket forwarded over SSH" here in Emacs 29.

> +.SH ENVIRONMENT
> +.TP
> +.B ALTERNATE_EDITOR
> +.TP
> +.B EMACSCLIENT_TRAMP
> +.TP
> +.B EMACS_SERVER_FILE
> +.TP
> +.B EMACS_SOCKET_NAME

Reading emacsclient.c, there are also further environment variables:

XDG_CONFIG_HOME
XDG_RUNTIME_DIR

I'm undecided whether we shall mention them. Eli?

> Peter Oliver

Best regards, Michael.





^ permalink raw reply	[flat|nested] 46+ messages in thread

* bug#66598: Missing options from emacsclient man page
  2023-10-21 14:35                     ` Michael Albinus
@ 2023-10-29 11:27                       ` Eli Zaretskii
  2023-12-17 12:58                         ` Peter Oliver
  0 siblings, 1 reply; 46+ messages in thread
From: Eli Zaretskii @ 2023-10-29 11:27 UTC (permalink / raw)
  To: Michael Albinus; +Cc: 66598, p.d.oliver

> From: Michael Albinus <michael.albinus@gmx.de>
> Date: Sat, 21 Oct 2023 16:35:05 +0200
> Cc: 66598@debbugs.gnu.org
> 
> > +.SH ENVIRONMENT
> > +.TP
> > +.B ALTERNATE_EDITOR
> > +.TP
> > +.B EMACSCLIENT_TRAMP
> > +.TP
> > +.B EMACS_SERVER_FILE
> > +.TP
> > +.B EMACS_SOCKET_NAME
> 
> Reading emacsclient.c, there are also further environment variables:
> 
> XDG_CONFIG_HOME
> XDG_RUNTIME_DIR
> 
> I'm undecided whether we shall mention them. Eli?

I don't see how it could cause any harm to mention them as well.





^ permalink raw reply	[flat|nested] 46+ messages in thread

* bug#66598: Missing options from emacsclient man page
  2023-10-29 11:27                       ` Eli Zaretskii
@ 2023-12-17 12:58                         ` Peter Oliver
  2023-12-23  9:51                           ` Eli Zaretskii
  0 siblings, 1 reply; 46+ messages in thread
From: Peter Oliver @ 2023-12-17 12:58 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 66598, Michael Albinus

[-- Attachment #1: Type: text/plain, Size: 626 bytes --]

On Sun, 29 Oct 2023, Eli Zaretskii wrote:

>> From: Michael Albinus <michael.albinus@gmx.de>
>> Date: Sat, 21 Oct 2023 16:35:05 +0200
>> Cc: 66598@debbugs.gnu.org
>>
>>> +.SH ENVIRONMENT
>>> +.TP
>>> +.B ALTERNATE_EDITOR
>>> +.TP
>>> +.B EMACSCLIENT_TRAMP
>>> +.TP
>>> +.B EMACS_SERVER_FILE
>>> +.TP
>>> +.B EMACS_SOCKET_NAME
>>
>> Reading emacsclient.c, there are also further environment variables:
>>
>> XDG_CONFIG_HOME
>> XDG_RUNTIME_DIR
>>
>> I'm undecided whether we shall mention them. Eli?
>
> I don't see how it could cause any harm to mention them as well.

Here is an updated patch that does that.

-- 
Peter Oliver

[-- Attachment #2: Type: text/plain, Size: 4620 bytes --]

From 77c38e54a75c0e16e41e047d213e41b3374161e1 Mon Sep 17 00:00:00 2001
From: Peter Oliver <git@mavit.org.uk>
Date: Sat, 21 Oct 2023 14:02:06 +0100
Subject: [PATCH] * doc/man/emacsclient.1: Add an ENVIRONMENT section.

---
 doc/man/emacsclient.1 | 60 ++++++++++++++++++++++++++++++++++++++-----
 1 file changed, 54 insertions(+), 6 deletions(-)

diff --git a/doc/man/emacsclient.1 b/doc/man/emacsclient.1
index 0acf3dd339e..b04923262de 100644
--- a/doc/man/emacsclient.1
+++ b/doc/man/emacsclient.1
@@ -62,9 +62,11 @@ This option applies only to the next file specified.
 .TP
 .B \-a, \-\-alternate-editor=COMMAND
 If the Emacs server is not running, run the specified shell command instead.
-This can also be specified via the ALTERNATE_EDITOR environment variable.
-If the value of ALTERNATE_EDITOR is the empty string, run "emacs \-\-daemon" to
+If the empty string is specified, run "emacs \-\-daemon" to
 start Emacs in daemon mode, and try to connect to it.
+
+See also the ALTERNATE_EDITOR environment variable, over which this
+option takes precedence.
 .TP
 .B -c, \-\-create-frame
 Create a new frame instead of trying to use the current Emacs frame.
@@ -84,7 +86,11 @@ Lisp expressions.
 .TP
 .B \-f, \-\-server-file=FILENAME
 Use TCP configuration file FILENAME for communication.
-This can also be specified via the EMACS_SERVER_FILE environment variable.
+Relative filenames are relative to "~/.emacs.d/server/" or
+"$XDG_CONFIG_HOME/emacs/server/", and the default is "server".
+
+See also the EMACS_SERVER_FILE environment variable, over which this
+option takes precedence.
 .TP
 .B \-n, \-\-no-wait
 Return immediately without waiting for you to "finish" the buffer in
@@ -114,7 +120,10 @@ side-effect rather than result.
 .TP
 .B \-s, \-\-socket-name=FILENAME
 Use socket named FILENAME for communication.
-This can also be specified via the EMACS_SOCKET_NAME environment variable.
+Relative filenames are relative to "$XDG_RUNTIME_DIR/emacs/" or "$TMPDIR/".
+
+See also the EMACS_SOCKET_NAME environment variable, over which this
+option takes precedence.
 .TP
 .B \-nw, \-t, \-\-tty
 Open a new Emacs frame on the current terminal.
@@ -122,8 +131,11 @@ Open a new Emacs frame on the current terminal.
 .B \-T, \-\-tramp=PREFIX
 Set PREFIX to add to filenames for Emacs to locate files on remote
 machines using TRAMP.  This is mostly useful in combination with using
-the Emacs server over TCP with --server-file.  This can also be
-specified via the EMACSCLIENT_TRAMP environment variable.
+the Emacs server on a remote host (either using TCP with
+--server-file, or a socket forwarded over SSH).
+
+See also the EMACSCLIENT_TRAMP environment variable, over which this
+option takes precedence.
 .TP
 .B \-V, \-\-version
 Print version information and exit.
@@ -133,10 +145,46 @@ Print this usage information message and exit.
 .SH "EXIT STATUS"
 Normally, the exit status is 0.  If emacsclient shuts down due to
 Emacs signaling an error, the exit status is 1.
+.SH ENVIRONMENT
+.TP
+.B ALTERNATE_EDITOR
+If the Emacs server is not running, run the shell command in this
+environment variable instead.  If set to the empty string, run
+"emacs \-\-daemon" to start Emacs in daemon mode, and try to connect
+to it.  Will be overridden by the
+.B \-\-alternate-editor
+option, if present.
+.TP
+.B EMACSCLIENT_TRAMP
+A prefix to add to filenames, intended to allow Emacs to locate files
+on remote machines using TRAMP.  Will be overridden by the
+.B \-\-tramp-prefix
+option, if present.
+.TP
+.B EMACS_SERVER_FILE
+Look in this file to discover where to find a TCP Emacs server.
+Relative filenames are relative to "~/.emacs.d/server/" or
+"$XDG_CONFIG_HOME/emacs/server/", and the
+default is "server".  Will be overridden by the
+.B \-\-server-file
+option, if present.
+.TP
+.B EMACS_SOCKET_NAME
+The filename of the socket to use for communication with the Emacs server.
+Relative filenames are relative to "$XDG_RUNTIME_DIR/emacs/" or "$TMPDIR/".
+Will be overridden by the
+.B \-\-socket-name
+option, if present.
 .SH "SEE ALSO"
 The program is documented fully in
 .IR "Using Emacs as a Server"
 available via the Info system.
+
+The XDG_ environment variables are described in detail in the
+.UR https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
+XDG Base Directory Specification
+.UE .
+
 .SH AUTHOR
 This manual page was originally written by Stephane Bortzmeyer
 <bortzmeyer@debian.org>, for the Debian GNU/Linux system, but is not
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 46+ messages in thread

* bug#66598: Missing options from emacsclient man page
  2023-12-17 12:58                         ` Peter Oliver
@ 2023-12-23  9:51                           ` Eli Zaretskii
  0 siblings, 0 replies; 46+ messages in thread
From: Eli Zaretskii @ 2023-12-23  9:51 UTC (permalink / raw)
  To: Peter Oliver; +Cc: 66598-done, michael.albinus

> Date: Sun, 17 Dec 2023 12:58:47 +0000 (GMT)
> From: Peter Oliver <p.d.oliver@mavit.org.uk>
> cc: Michael Albinus <michael.albinus@gmx.de>, 66598@debbugs.gnu.org
> 
> On Sun, 29 Oct 2023, Eli Zaretskii wrote:
> 
> >> Reading emacsclient.c, there are also further environment variables:
> >>
> >> XDG_CONFIG_HOME
> >> XDG_RUNTIME_DIR
> >>
> >> I'm undecided whether we shall mention them. Eli?
> >
> > I don't see how it could cause any harm to mention them as well.
> 
> Here is an updated patch that does that.

Thanks, installed on the emacs-29 branch, and closing the bug.

Btw, I don't see your copyright assignment on file; did you sign one?
If not, would you like to start your legal paperwork at this time, so
that we could accept your contributions in the future without
limitations?





^ permalink raw reply	[flat|nested] 46+ messages in thread

end of thread, other threads:[~2023-12-23  9:51 UTC | newest]

Thread overview: 46+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <85msy98sni.fsf@elpa.gnu.org>
     [not found] ` <E1qbslO-0006oK-RA@fencepost.gnu.org>
2023-09-01 14:38   ` Adding with-editor to Emacs? Jonas Bernoulli
2023-09-01 16:12     ` Eli Zaretskii
2023-09-01 17:25       ` Jim Porter
2023-09-01 17:44       ` Jonas Bernoulli
2023-09-01 18:42         ` Eli Zaretskii
2023-09-01 20:23           ` Jonas Bernoulli
2023-09-02  6:19             ` Eli Zaretskii
2023-09-02 18:12               ` Jonas Bernoulli
2023-09-02 18:57                 ` Eli Zaretskii
2023-09-02 21:04                   ` Jonas Bernoulli
2023-09-03 17:02                   ` Lynn Winebarger
2023-09-03 17:21                     ` Eli Zaretskii
2023-09-03 18:21                       ` Lynn Winebarger
2023-09-03 18:37                         ` Eli Zaretskii
2023-09-02 19:56                 ` Stefan Kangas
2023-09-02 21:26                   ` Jonas Bernoulli
2023-09-02 23:07                     ` Stefan Kangas
2023-09-03  5:00                   ` Eli Zaretskii
2023-09-02 11:39             ` Michael Albinus
2023-09-02 16:52               ` Jonas Bernoulli
2023-10-17 10:23             ` Michael Albinus
2023-10-17 17:18               ` Manuel Giraud via Emacs development discussions.
2023-10-17 18:09                 ` Michael Albinus
2023-10-17 19:26                   ` Manuel Giraud via Emacs development discussions.
2023-10-17 18:24               ` bug#66598: Missing options from emacsclient man page Peter Oliver
2023-10-18  5:16                 ` Michael Albinus
2023-10-21 13:05                   ` Peter Oliver
2023-10-21 13:31                     ` Eli Zaretskii
2023-10-21 14:35                     ` Michael Albinus
2023-10-29 11:27                       ` Eli Zaretskii
2023-12-17 12:58                         ` Peter Oliver
2023-12-23  9:51                           ` Eli Zaretskii
2023-09-03 14:36           ` Adding with-editor to Emacs? Manuel Giraud via Emacs development discussions.
2023-09-03 15:34             ` Eli Zaretskii
2023-09-03 18:54               ` Manuel Giraud via Emacs development discussions.
2023-09-03 19:26                 ` Eli Zaretskii
2023-09-04  8:21                   ` Manuel Giraud via Emacs development discussions.
2023-09-04 12:18                     ` Eli Zaretskii
2023-09-04 12:44                       ` Manuel Giraud via Emacs development discussions.
2023-09-04 13:18                       ` Manuel Giraud via Emacs development discussions.
2023-09-06  0:59                     ` Richard Stallman
2023-09-05  0:27                   ` Richard Stallman
2023-09-15 21:59                     ` Björn Bidar
2023-09-17 23:03                       ` Richard Stallman
2023-09-18  8:59                         ` Philip Kaludercic
2023-09-20 18:35                           ` Richard Stallman

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.