fix: the self-insert command in vi-mode should not insert un-printable char while flushing the pending-keys #1701
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
In pr: #1691, we flush the
pending-keys
forself-insert
command invi-insert-mode
, so that we can define keymap like(define-key lem-vi-mode:*insert-keymap* "j k" 'lem-vi-mode/commands:vi-normal)
.The
effect
of thisdefine-key
is:j k
invi-insert-mode
will thelem-vi-mode/commands:vi-normal
command.j <second-key>
invi-insert-mode
will self-insertj
and self-insert<second-key>
.However, in the
vim
editor, if the<second-key>
is NOT print-able key, then it willquit the key pending state
, and will not self-insert the<second-key>
.A case is: press
j
andBackspace
.This pr fix this edge-case.
NOTE:
This pr has some minor difference from the
vim
. Thenamed-key
is not identical toprint-able-key
, takenTab
for example.I didn't add the function
printable-key-sym-p
orun-printable-key-sym-p
, because it is hard to decide whether a key is print-able or not.The difference is minor, and sufficient in daily use.