vi: further fixes to undo after autoindent
authorRon Yorston <rmy@pobox.com>
Mon, 11 Feb 2019 08:29:15 +0000 (08:29 +0000)
committerDenys Vlasenko <vda.linux@googlemail.com>
Mon, 11 Feb 2019 10:47:20 +0000 (11:47 +0100)
commit61052d1bb8fe5da745c4333a8bf7d031d636b76e
tree5ca03f9407ca05b404bdfd947e9fdfa65c1a5381
parentdac8f5ea38b0f293bc9d3b10693ebb94648a992d
vi: further fixes to undo after autoindent

Commit bb983f30e (vi: fix faulty undo after autoinsert) has a
number of problems:

- The commit message refers to 'autoinsert' when it really means
  'autoindent'.

- The indentation of undo_push_insert() was incorrect.

- Most seriously the commit only fixed the problem for cases where
  the indentation was exactly one character.  This is because undo_push()
  only allows single characters to be queued for UNDO_INS_QUEUED.

  Lifting this restriction allows the example given in the previous
  commit message (with a three character indent) to work.

function                                             old     new   delta
undo_push                                            406     435     +29
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/0 up/down: 29/0)               Total: 29 bytes

Signed-off-by: Ron Yorston <rmy@pobox.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
editors/vi.c