Improve query history navigation
Often when executing queries I'll need to revisit and tweak/correct a previous query that I've executed. In usql the up arrow walks back through the query history one line at a time rather than a query at a time.
This is awkward as I have to press up multiple times just to get the same query, made all the more difficult by the fact that the first line I add gets added back to the end of the history which adds an extra click. So in this example below I have to click up 25 times just to edit one line of this fairly small query.
usql:

psql on the other jumps back to the complete previous command with 1 up click and I can then navigate and update the query however I want and re-execute it very quickly.
psql:

It would be great if usql could be updated to match this behaviour as it would be a big boost in productivity with the tool.
How I would suggest it works is:
- Only write to history on completion of a query, i.e. a semi-colon has been entered. This includes incomplete/syntactically incorrect queries ending in a semi-colon e.g.
select foo from;as the user would likely want to just jump back and correct it without re-typing everything (psql also does this). This prevents the issue where the line selected keeps getting appended back onto the history before we've even executed it. - Then return a complete query at a time when navigating through the history. Using the logic above the history file is just a semi-colon delimited list of these queries so should be fairly simple to differentiate these.
Source: xo/usql