vi: 'G'/'M' commands move to first visible character

The 'G' command with no target (meaning 'go to last line') should
position the cursor on the first visible character of the line, as
it already does in other cases.

The 'M' command  should position the cursor on the first visible
character (as 'H' and 'L' already do).

function                                             old     new   delta
do_cmd                                              4842    4853     +11
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/0 up/down: 11/0)               Total: 11 bytes

Signed-off-by: Ron Yorston <rmy@pobox.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Ron Yorston 2021-03-28 13:19:26 +01:00 committed by Denys Vlasenko
parent 5ae25f40bd
commit 18871c3f2b

View File

@ -3596,6 +3596,7 @@ static void do_cmd(int c)
if (cmdcnt > 0) {
dot = find_line(cmdcnt); // what line is #cmdcnt
}
dot_begin();
dot_skip_over_ws();
break;
case 'H': // H- goto top line on screen
@ -3652,6 +3653,7 @@ static void do_cmd(int c)
dot = screenbegin;
for (cnt = 0; cnt < (rows-1) / 2; cnt++)
dot = next_line(dot);
dot_skip_over_ws();
break;
case 'O': // O- open a empty line above
// 0i\n ESC -i