Re: BUG #11986: psql uses pager inside Emacs shell buffer (not a terminal)
От | Christopher Browne |
---|---|
Тема | Re: BUG #11986: psql uses pager inside Emacs shell buffer (not a terminal) |
Дата | |
Msg-id | CAFNqd5Xf=Q1ojj9NyQ17to5E-10L6XABGjsZN7rZGVa1QTrSMg@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: BUG #11986: psql uses pager inside Emacs shell buffer (not a terminal) (Tom Lane <tgl@sss.pgh.pa.us>) |
Список | pgsql-bugs |
On 2 December 2014 at 21:24, Tom Lane <tgl@sss.pgh.pa.us> wrote: > > Bruce Momjian <bruce@momjian.us> writes: > > On Mon, Nov 17, 2014 at 09:34:34AM +0000, eda@waniasset.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?"
В списке pgsql-bugs по дате отправления: