Setting commands in remapping to a single object corrupts installation
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 15.2k
- Forks
- 1.5k
- Avg merge
- 3d 18h
- Merged PRs (30d)
- 6
Description
Describe the bug
Adding an invalid command remapping breaks the extension. toggleVim command isn't found, no vim bindings work. After removing the setting, problem persists. The extension may be uninstalled, but reinstall fails. The extension must be manually deleted from the folder and reinstalled to fix
To Reproduce
Steps to reproduce the behavior:
- Install Vim extension
- set
settings.jsonto
{
"vim.normalModeKeyBindings": [
{
"before": [
"b"
],
"commands": {
"command": "workbench.action.toggleTabsVisibility"
}
}
]
}
- Reload
Expected behavior
Either key is remapped or visible error is shown and mapping is discarded
Extension functions after removal of invalid remapping
Screenshots
After adding the above settings file, even if it is removed afterwards, the following trace appears every launch
[2019-06-25 15:22:01.083] [renderer1] [error] remapping.commands is not iterable: TypeError: remapping.commands is not iterable
at RemappingValidator.<anonymous> (C:\Users\brianbr\.vscode\extensions\vscodevim.vim-1.8.1\out\src\configuration\validators\remappingValidator.js:88:49)
at Generator.next (<anonymous>)
at __awaiter (C:\Users\brianbr\.vscode\extensions\vscodevim.vim-1.8.1\out\src\configuration\validators\remappingValidator.js:7:71)
at new Promise (<anonymous>)
at __awaiter (C:\Users\brianbr\.vscode\extensions\vscodevim.vim-1.8.1\out\src\configuration\validators\remappingValidator.js:3:12)
at RemappingValidator.isRemappingValid (C:\Users\brianbr\.vscode\extensions\vscodevim.vim-1.8.1\out\src\configuration\validators\remappingValidator.js:67:16)
at RemappingValidator.<anonymous> (C:\Users\brianbr\.vscode\extensions\vscodevim.vim-1.8.1\out\src\configuration\validators\remappingValidator.js:32:53)
at Generator.next (<anonymous>)
at __awaiter (C:\Users\brianbr\.vscode\extensions\vscodevim.vim-1.8.1\out\src\configuration\validators\remappingValidator.js:7:71)
at new Promise (<anonymous>)
at __awaiter (C:\Users\brianbr\.vscode\extensions\vscodevim.vim-1.8.1\out\src\configuration\validators\remappingValidator.js:3:12)
at RemappingValidator.validate (C:\Users\brianbr\.vscode\extensions\vscodevim.vim-1.8.1\out\src\configuration\validators\remappingValidator.js:16:16)
at ConfigurationValidator.<anonymous> (C:\Users\brianbr\.vscode\extensions\vscodevim.vim-1.8.1\out\src\configuration\configurationValidator.js:27:56)
at Generator.next (<anonymous>)
at fulfilled (C:\Users\brianbr\.vscode\extensions\vscodevim.vim-1.8.1\out\src\configuration\configurationValidator.js:4:58)
Environment (please complete the following information):
Extension (VsCodeVim) version: 1.8.1
VSCode version: Code 1.34.0 (a622c65b2c713c890fcf4fbf07cf34049d5fe758, 2019-05-15T21:59:37.030Z)
OS: Windows_NT x64 10.0.17134
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with out/src/configuration/validators/remappingValidator.js at RemappingValidator.isRemappingValid and follow its call from configurationValidator.js. Reproduce the settings.json remapping, then verify that an invalid single-object commands value is rejected without breaking later launches or valid keybindings after the setting is removed.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript, vscode
- Domain
- tooling
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100