From: | Christopher Browne <cbbrowne(at)gmail(dot)com> |
---|---|
To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Cc: | Bruce Momjian <bruce(at)momjian(dot)us>, eda(at)waniasset(dot)com, PostgreSQL Mailing Lists <pgsql-bugs(at)postgresql(dot)org> |
Subject: | Re: BUG #11986: psql uses pager inside Emacs shell buffer (not a terminal) |
Date: | 2014-12-03 03:01:04 |
Message-ID: | CAFNqd5Xf=Q1ojj9NyQ17to5E-10L6XABGjsZN7rZGVa1QTrSMg@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-bugs |
On 2 December 2014 at 21:24, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
>
> Bruce Momjian <bruce(at)momjian(dot)us> writes:
> > On Mon, Nov 17, 2014 at 09:34:34AM +0000, eda(at)waniasset(dot)com wrote:
> >> It would be friendler for psql to be aware of this and not use a pager
if
> >> running inside an Emacs shell buffer, or other dumb terminal: check if
$TERM
> >> is set to 'dumb'.
>
> > This is an interesting idea. What are the odds that a "dumb" terminal
> > is inside Emacs? Is there another environment variable set by Emacs
> > that we can check?
>
> A truly dumb terminal would be where you'd need a pager the most,
> so I'm not enamored of this specific test proposal. If there's some
> more-specific way to detect that stdout is an Emacs buffer, I'd be for it.
>
> A quick check here shows a couple of different possibilities in the
> environment seen in a shell buffer:
>
> EMACS=t
> INSIDE_EMACS=23.1.1,comint
>
> I am not real sure of the properties of either of these variables
> though, in particular not whether they are present in all versions
> of Emacs. (The value of the second one seems to be an Emacs version
> identifier, fwiw.) Another question is whether any effort gets made
> to unset them in processes that are descendants of an Emacs but are
> not connected to a shell-buffer pty.
>
> regards, tom lane
Entertainingly, I just noticed this as an issue with a script I was running
today; when I ran it inside a M-x shell buffer, a psql session stopped,
waiting for input, which was rather annoying.
I wound up setting --pset pager=off, as an extra option to psql. That's
a strategy one might use to work around this.
It sure would be nice if there was an environment variable that
received an "EMACS_BUFFER=t" value or such; that ought to be
a better indicator that psql could let Emacs handle buffering for it.
I do see much the same options as you, albeit with a different version
number.
https://www.gnu.org/software/emacs/manual/html_node/emacs/Interactive-Shell.html
Disappointingly, eshell (a shell implemented in Emacs Lisp) doesn't set
either of those
environment variables.
However, from the documentation, it appears that INSIDE_EMACS is intended
to
provide the sort of functionality that the original poster was after.
BTW, "comint" is intended to indicate "command interpreter inside a
buffer", so
that value is pretty apropos.
--
When confronted by a difficult problem, solve it by reducing it to the
question, "How would the Lone Ranger handle this?"
From | Date | Subject | |
---|---|---|---|
Next Message | Ed Avis | 2014-12-03 03:48:45 | Re: BUG #11986: psql uses pager inside Emacs shell buffer (not a terminal) |
Previous Message | Tom Lane | 2014-12-03 02:24:53 | Re: BUG #11986: psql uses pager inside Emacs shell buffer (not a terminal) |