Re: proposal - psql - use pager for \watch command
От | Thomas Munro |
---|---|
Тема | Re: proposal - psql - use pager for \watch command |
Дата | |
Msg-id | CA+hUKGJNUE=GtREvEneL9DR6smgEHOcdDuVOkEj7vPgv0rDQwA@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: proposal - psql - use pager for \watch command (Tom Lane <tgl@sss.pgh.pa.us>) |
Ответы |
Re: proposal - psql - use pager for \watch command
|
Список | pgsql-hackers |
On Tue, Jun 7, 2022 at 3:23 PM Tom Lane <tgl@sss.pgh.pa.us> wrote: > The code needs a comment about why it's emitting a newline, though. > In particular, it had better explain why that should be conditional > on !pagerpipe, because that makes no sense to me. Yeah. OK, here's my take: + /* + * If the terminal driver echoed "^C", libedit/libreadline might be + * confused about the cursor position. Therefore, inject a newline + * before the next prompt is displayed. We only do this when not using + * a pager, because pagers are expected to restore the screen to a sane + * state on exit. + */ AFAIK pagers conventionally use something like termcap ti/te[1] to restore the screen, or equivalents in tinfo etc (likely via curses). If we were to inject an extra newline we'd just have a blank line for nothing. I suppose there could be a hypothetical pager that doesn't follow that convention, and in fact both less and pspg have a -X option to preserve last output, but in any case I expect that pagers disable echoing, so I don't think the ^C will make it to the screen, and furthermore ^C isn't used for exit anyway. Rather than speculate about the precise details, I just said "... sane state on exit". Pavel, do you agree? Here's how it looks after I enter and then exit Pavel's streaming pager: $ PSQL_WATCH_PAGER='pspg --stream' ~/install/bin/psql postgres psql (15beta1) Type "help" for help. postgres=# select; -- (1 row) postgres=# \watch 1 postgres=# FWIW it's the same with PSQL_WATCH_PAGER='less'. [1] https://www.gnu.org/software/termutils/manual/termcap-1.3/html_node/termcap_39.html
Вложения
В списке pgsql-hackers по дате отправления: