patch 8.1.1988: :startinsert! does not work the same way as "A"
Problem: :startinsert! does not work the same way as "A".
Solution: Use the same code to move the cursor. (closes #4896)
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index ef86ae5..0e0e1b8 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -7596,16 +7596,14 @@
{
if (eap->forceit)
{
- /* cursor line can be zero on startup */
+ // cursor line can be zero on startup
if (!curwin->w_cursor.lnum)
curwin->w_cursor.lnum = 1;
- coladvance((colnr_T)MAXCOL);
- curwin->w_curswant = MAXCOL;
- curwin->w_set_curswant = FALSE;
+ set_cursor_for_append_to_line();
}
- /* Ignore the command when already in Insert mode. Inserting an
- * expression register that invokes a function can do this. */
+ // Ignore the command when already in Insert mode. Inserting an
+ // expression register that invokes a function can do this.
if (State & INSERT)
return;
@@ -7620,7 +7618,7 @@
{
if (eap->cmdidx == CMD_startinsert)
restart_edit = 'i';
- curwin->w_curswant = 0; /* avoid MAXCOL */
+ curwin->w_curswant = 0; // avoid MAXCOL
}
}