Hello Tom,
psql=> select 1...
psql-> <prompt>
I cannot move back with readline to edit further, I'm stuck there, which
is strange.
I don't follow. readline doesn't allow you to edit already-entered lines
today, that is, after typing "select 1<return>" you see
regression=# select 1
regression-#
and there isn't any way to move back and edit the already-entered line
within readline.
Yep.
My point is to possibly not implicitely <return> at the end of \e, but to
behave as if we were moving in history, which allows editing the lines, so
that you would get
psql=> select 1<cursor>
Instead of the above.
I agree it might be nicer if you could do that, but that's *far* beyond
the scope of this patch. It would take entirely fundamental rethinking
of our use of libreadline, if indeed it's possible at all. I also don't
see how we could have syntax-aware per-line prompts if we were allowing
readline to treat the whole query as one line.
I was suggesting something much simpler than rethinking readline handling.
Does not mean that it is a good idea, but while testing the patch I would
have liked the unfinished line to be in the current editing buffer,
basically as if I had not typed <nl>.
ISTM more natural that \e behaves like history when coming back from
editing, i.e. the \e-edited line is set as the current buffer for
readline.
In the larger picture, tinkering with how that works would affect
every psql user at the level of "muscle memory" editing habits,
and I suspect that their reactions would not be uniformly positive.
What I propose here doesn't affect anyone who doesn't use \e at all.
Even for \e users it doesn't have any effect on what you need to type.
--
Fabien.