all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: sbaugh@catern.com
To: emacs-devel@gnu.org
Subject: Re: Teaching emacsclient to act as a pager, and more
Date: Fri, 09 Sep 2016 17:13:33 -0400	[thread overview]
Message-ID: <87sht83hfm.fsf@earth.catern.com> (raw)
In-Reply-To: jwvinu47uem.fsf-monnier+gmane.emacs.devel@gnu.org

Stefan Monnier <monnier@iro.umontreal.ca> writes:
>> Couldn't we still do that anyway, even if current Emacs does not
>> misbehave when getting FDs? As long as it's opt-in.
> - emacsclient connects to emacs daemon in pretty much the normal way.
> - then (after warning the emacs daemon appropriately), turn the
>   emacsclient into a simple proxy which reads from its stdin and passes
>   that straight to the daemon's socket (and vice versa for the daemon
>   socket's output).
>
> This last strategy has the potential to be usable/useful even through
> TCP connections.

That is indeed an elegant API for solving this specific problem, and I
could implement it as a fallback for when fd-passing is not available.

It does have the issue that it adds another hop for the data to go
through, and needs more complicated polling/non-blocking logic in
emacsclient.

But besides those issues, I still think an fd-based approach is useful.

First, I think (as I said in another mail) that Emacs should learn to
talk about file descriptors as a native Elisp type, since that would
open up a lot of capabilities which would be useful for (among other
things) improving Eshell.

So, assuming that Emacs knows how to talk about file descriptors, and
Emacs can act as a real Unix shell, it would be useful and interesting
to be able to pass in arbitrary file descriptors into a single Emacs
process. My patches use this capability to make a pager, of course. You
could also, say, pass in a file descriptor pointing to a file opened
with escalated privileges, and then manipulate it without needing to go
through sudo/su/TRAMP. Or the ability to pass around file descriptors in
this way could unlock novel shell features, since this is definitely not
something traditional Unix shells can do.

Anyway, the easiest way to pass an arbitrary file descriptor into Emacs
is by putting that file descriptor in emacsclient's stdin or stdout and
using these patches. And as I mentioned, this makes it trivially easy to
use emacsclient as a pager or filter.

So, even if the pager use case ends up always done through
emacsclient-as-a-proxy, I would still like some guidance on how (as a
first step) an FD type could be added to Emacs.




  parent reply	other threads:[~2016-09-09 21:13 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-06-07  1:25 Teaching emacsclient to act as a pager, and more Spencer Baugh
2016-06-07  1:25 ` [PATCH 1/5] process: add features for direct use of FDs Spencer Baugh
2016-06-07  1:25 ` [PATCH 2/5] server.el: accept FDs from emacsclient Spencer Baugh
2016-06-07  1:25 ` [PATCH 3/5] emacsclient: support passing stdin/out/err to emacs Spencer Baugh
2016-06-07  1:25 ` [PATCH 4/5] server: add pager tapping and show-active Spencer Baugh
2016-06-07  1:25 ` [PATCH 5/5] emacsclient: add extra-quiet mode Spencer Baugh
2016-06-08 15:51 ` Teaching emacsclient to act as a pager, and more Tassilo Horn
2016-06-08 16:13   ` Anders Lindgren
2016-06-08 17:30     ` Tassilo Horn
2016-06-09  0:25   ` raman
2016-06-09 11:31 ` H. Dieter Wilhelm
2016-06-27 22:42 ` Ole JørgenBrønner
2016-07-24 18:22 ` sbaugh
2016-09-09 13:42   ` Noam Postavsky
2016-09-09 14:14     ` sbaugh
2016-09-09 14:59       ` Stefan Monnier
2016-09-09 15:58         ` sbaugh
2016-09-09 19:26           ` Stefan Monnier
2016-09-09 19:42             ` Eli Zaretskii
2016-09-09 21:13             ` sbaugh [this message]
2016-09-10  6:37               ` Using file descriptors in Emacs (was: Teaching emacsclient to act as a pager, and more) Eli Zaretskii
2016-09-10 20:15             ` Teaching emacsclient to act as a pager, and more sbaugh
2016-09-11  2:11               ` Leo Liu
2018-02-16 23:14               ` Kaushal Modi
2018-02-17 15:46                 ` Göktuğ Kayaalp
2016-09-09 15:53       ` Eli Zaretskii
2016-09-09 17:16         ` sbaugh
2016-09-09 18:50           ` Eli Zaretskii
2016-09-09 19:03             ` sbaugh
2016-09-09 19:26               ` Eli Zaretskii
2016-09-09 20:38                 ` sbaugh
2016-09-10  7:12                   ` Using file descriptors in Emacs Eli Zaretskii
2016-09-10 14:28                     ` sbaugh
2016-09-11 15:28                       ` Eli Zaretskii
2016-09-11 16:00                         ` sbaugh
2016-09-11 16:39                           ` Eli Zaretskii
2016-09-11 16:57                             ` sbaugh
2016-09-11 17:13                               ` Eli Zaretskii
2016-09-12 15:40                               ` Davis Herring
2016-09-09 13:27 ` Teaching emacsclient to act as a pager, and more sbaugh

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87sht83hfm.fsf@earth.catern.com \
    --to=sbaugh@catern.com \
    --cc=emacs-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.