On Mon, Dec 8, 2014 at 11:39:12AM +0000, Ed Avis wrote:
> Tom Lane <tgl <at> sss.pgh.pa.us> writes:
>
> >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
>
> Apparently EMACS=t is deprecated and INSIDE_EMACS is the one to use.
> However, Emacs being Emacs, it has more than one way to run interactive
> subprocesses. This bug report was about 'shell' mode, where a text editing
> buffer provides a simple dumb terminal without cursor movement escape
> sequences (and sets TERM=dumb). But there is also 'term', providing a
> reasonably good terminal emulator inside Emacs. Inside that, a pager does
> work (even sophisticated ones such as 'less') and it makes sense to use a
> pager since you don't have a scrollable text buffer with all output, but
> just a fixed-size terminal window.
>
> 'term' mode sets the environment variables to something like
>
> TERM=eterm-color
> INSIDE_EMACS=24.4.1,term:0.96
>
> So if INSIDE_EMACS is to be used (rather than checking for TERM=dumb) then
> perhaps it should look for the 'comint' string.
>
> I appreciate the concern that this could open a Pandora's box of special
> case checks for all sorts of terminal types, but this is only the psql
> interactive shell we are talking about here, not the core database code.
> And all that is being controlled is the relatively minor choice of whether
> to run a pager program, not anything that affects database operations.
> psql already contains lots of features which exist to make interactive use
> more comfortable even at the expense of some complexity.
Based on your report, I think checking for INSIDE_EMACS being set _and_
TERM=dumb would be the best bet. Do you want me to write a patch for
you to test?
--
Bruce Momjian <bruce@momjian.us> http://momjian.us
EnterpriseDB http://enterprisedb.com
+ Everyone has their own god. +