This is entirely unnecessary, as each ModeHandler only ever deals with a single VimState, and that's `this.vimState`, which is never re-assigned.
Baby step toward #4698
This is a pretty massive change; see pull request #4735 for full details
Most notably:
- Support for operator-pending mode, including remaps and a half-cursor decoration
- Correct handling of ambiguous remaps with timeout
- Correct handling of recursive special case when the RHS starts with the LHS
- Correct handling of multi-key remaps in insert mode
- Failed movements that occur partway through a remap stop & discard the rest of the remap
- Implement `unmap` and `mapclear` in .vimrc
Refs #463, refs #4908Fixes#1261, fixes#1398, fixes#1579, fixes#1821, fixes#1835Fixes#1870, fixes#1883, fixes#2041, fixes#2234, fixes#2466Fixes#2897, fixes#2955, fixes#2975, fixes#3082, fixes#3086Fixes#3171, fixes#3373, fixes#3413, fixes#3742, fixes#3768Fixes#3988, fixes#4057, fixes#4118, fixes#4236, fixes#4353Fixes#4464, fixes#4530, fixes#4532, fixes#4563, fixes#4674Fixes#4756, fixes#4883, fixes#4928, fixes#4991, fixes#5016Fixes#5057, fixes#5067, fixes#5084, fixes#5125
Enables neovim capability and fixes arg parsing for the `:p[ut]` command. Apparently the put command allows no whitespace between the command name and the register name, so commands like `:put"` are perfectly valid. I've added some subparser tests to document this.
Fixes#5052Fixes#5090
I may end up writing this from scratch rather than trying to salvage the existing code, but this attempt at making it slightly more legible should be useful regardless.
- Make easymotion default decorations have the same defaults as the Vim
plugin.
- Deprecate no longer needed configurations like
'easymotionMarkerMargin' and 'easymotionMarkerWidthPerChar'.
- Change 'easymotionMarkerFontWeight' default to 'bold'
- Add seperate color for each character of two-character markers,
default values are the same as the Vim plugin. (two different yellows)
- Add color for dimmed characters, default value is the same as the Vim
plugin. (grey)
- Add color for higlighting characters searched with search n-characters
command, default value is the same as the Vim
plugin. (green)
- Add changes to README file and update the default values.
- Change easymotion TextEditorDecorations to make them simpler to use
and understand. Remove all unnecessary parts.
- Fix the dimming zones that were including the markers as well.
- Fix the hack for two consecutive markers that wasn't checking if those
markers were on the same line.
Fixes#5092Fixes#5022Fixes#4252Fixes#1746
Even after this commit, our handling of registers is horrendously over-complicated and inconsistent, but this is a definite step in the right direction.
This should hopefully make those mysterious "Failed to handle key" bugs easier to understand and fix, since we'll at least know what the stack looked like.
- Store our selections when calling 'updateView' to be later ignored.
- Create a 'ignoreIntermediateSelections' flag that is set when running
an action to ignore any selection changes triggered by any step of that
action.
- When getting a selection change event we first check if it is one of
our selections. If it is we ignore it, if it is not we still ignore it
if the 'ignoreIntermediateSelections' flag is set or if we have other
selections to ignore, because that means this selection slipped in after
the end of the action. Otherwise we handle it.
- Create new handle for selection changes with kind 'Command'. (this is
triggered by editor commands like 'smartSelect.grow' but is also
triggered when we set the 'editor.selections' on 'updateView', except
this last one will now be ignored)
Fixes#1806
When moving horizontally on visual mode the desiredColumn wasn't being kept correctly, because we were updating the desiredColumn after correcting our cursors by shifting the stop to the right so that vscode included our stop on its selection.
Fixes#5048