This has helped resolve a few bugs, but has also generated more spam issues than I can keep up with. To be really useful it needs source maps, which are quite bulky.
If we want to revive something like this, we should use VS Code's relatively new telemetry API.
Frankly, I'm a bit embarrassed that I wrote code to serialize and save the registers every time one changes. This can actually have a noticeable effect on performance if any registers have even modestly large values.
It seems `globalState` doesn't work in `deactivate`, so we need to store the register data in a file.
Fixes#5707
VS Code is adding support for running extensions in a nodeless environment. This PR tries to refactor the code a bit to allow later on replacing node APIs (fs, child_process) with shims.
This PR should not change any functionality for running Vim in desktop.
Once we can run Vim in a web worker, we can also think about running Vim in its own worker, which at the end will help with the performance issue: https://github.com/microsoft/vscode/issues/65876
Visual selections as well as `desiredColumn` would get screwed up because our cursor syncing logic was sloppy.
Visual line mode still gets messed up by this (see #4889)
Fixes#4888
This is a step toward fixing our janky status bar logic. Basically, I want to make information about the current mode easily available from a VimState without needing the ModeHandler.
The Mode class has been destroyed, replaced by some functions that take a ModeName.
More refactoring could be done, I'm sure, but I think this is a BIG step in the right directions.
Read key remapping commands from $HOME/.vimrc, $HOME/_vimrc, or a
user-specified Vim configuration file. For each, build an IKeyRemapping
object and append it to the appropriate collection, _if_ doing so will
not override a remapping specified in the VS Code settings.
Partially addresses #463. This implementation borrows heavily from
Sheepolution/vimrc-to-json.
* Add `editVimrc` command
* Add .vimrc validator, correct usage of new config names
* Source .vimrc automatically after saving it
Fixes#3713 , hopefully.
This happened when you were editing a file in two splits at once. An edit in one split that affected the cursor position in the other split would trigger an extra `onDidChangeTextEditorSelection` event that we should be ignoring.
e.g. filter, includes, find, etc.
After doing this, there was only one usage left (for escaping regex), so I replaced the lodash dependency with one that only exposes that functionality.
* Assign activeTextEditor to local variable first.
because activeTexteditor may have changed after call async method.
fixes VSCodeVim#3865
* Get rid of workaround to wait goToDeclaration
related #3277
* Implement / (search) register
Fixes#3542
* Implement read-only registers
Fixes#3604
* Implement % (file name) register
Refs #3605
* Implement : (command) register
Fixes#3605
* Do not display _ (black hole) register in :reg output
Fixes#3606
* :reg can take multiple arguments
When it does, it lists only the registers given as an argument.
Fixes#3610
* Allow the : (command) register to be used as a macro to repeat the command
Fixes#1775