We were constructing several Loggers (each with a few transport streams) for each VimState.
I think these are relatively lightweight, but still - totally unnecessary. Should reduce memory usage a bit.
This is a baby step toward #4585. Really, this Range should be a vscode.Range, but let's first bring ReplaceTextTransformation in line with other transformation types.
Occasionally the parameter hint popup would "stick" (I'm not totally sure why), but it should close when you leave insert mode, so let's make sure that's done explicitly.
Surround is one of the ugliest ducklings in the codebase; here's an attempt to make it a bit saner.
None of the structure has really changed (yet); most of this is just rearrangement, clean up, comments, etc.
Only real behavioral change is a reduction of the number of transformations done from 4 to 2 when deleting or changing a surrounding tag. I'm not sure why it was written as it was, and it still seems to work 🤞
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.