vim: Allow count and repeat for "r" and "shift-r" action (#13287)

Fixing the "r" action just involved adapting `normal_replace` to replace
multiple characters.

Fixing the "shift-r" command was less straightforward. The bindings for
`vim::BeforeNormal` in replace mode were being overwritten and several
other steps required for action repetition were not performed. Finally,
the cursor adjustment after re-entering normal mode was duplicated
(`vim::BeforeNormal` was now triggered correctly) so I removed the
special case for replace mode.

Release Notes:

- Fixed vim "r" action to accept a count argument
- Fixed vim "shift-r" action to accept a count argument and allow
repetition

---------

Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
This commit is contained in:
Benjamin Davies 2024-06-25 03:41:33 +12:00 committed by GitHub
parent 77b2da2b42
commit dea928b00c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 109 additions and 10 deletions

View file

@ -0,0 +1,24 @@
{"Put":{"state":"ˇhello\n"}}
{"Key":"r"}
{"Key":"-"}
{"Get":{"state":"ˇ-ello\n","mode":"Normal"}}
{"Put":{"state":"ˇhello\n"}}
{"Key":"3"}
{"Key":"r"}
{"Key":"-"}
{"Get":{"state":"--ˇ-lo\n","mode":"Normal"}}
{"Put":{"state":"ˇhello\n"}}
{"Key":"r"}
{"Key":"-"}
{"Key":"2"}
{"Key":"l"}
{"Key":"."}
{"Get":{"state":"-eˇ-lo\n","mode":"Normal"}}
{"Put":{"state":"ˇhello world\n"}}
{"Key":"2"}
{"Key":"r"}
{"Key":"-"}
{"Key":"f"}
{"Key":"w"}
{"Key":"."}
{"Get":{"state":"--llo -ˇ-rld\n","mode":"Normal"}}

View file

@ -0,0 +1,10 @@
{"Put":{"state":"ˇhello world\n"}}
{"Key":"shift-r"}
{"Key":"-"}
{"Key":"-"}
{"Key":"-"}
{"Key":"escape"}
{"Key":"4"}
{"Key":"l"}
{"Key":"."}
{"Get":{"state":"---lo --ˇ-ld\n","mode":"Normal"}}

View file

@ -0,0 +1,14 @@
{"Put":{"state":"ˇhello\n"}}
{"Key":"3"}
{"Key":"shift-r"}
{"Key":"-"}
{"Key":"escape"}
{"Get":{"state":"--ˇ-lo\n","mode":"Normal"}}
{"Put":{"state":"ˇhello\n"}}
{"Key":"3"}
{"Key":"shift-r"}
{"Key":"a"}
{"Key":"b"}
{"Key":"c"}
{"Key":"escape"}
{"Get":{"state":"abcabcabˇc\n","mode":"Normal"}}