Fixed
- Vim engine settings fields lock after typing on iPad (and other mobile) — the "Insert mode escape" field (and other vim engine settings like timeoutlen, operator shadow timeout) became greyed out and unresponsive after typing a single character on iPad with Magic Keyboard. Two root causes: (1)
vim.setOption()in theonChangehandler fired the option'snotifycallback, which calledonSettingOverrideand added the key tovimrcOverrides— makingisOverridden()returntrueandrefreshDomState()disable the field. TheclearSettingOverride()call ran beforevim.setOption(), so the override was re-added immediately after clearing. Fixed by movingclearSettingOverride()to aftervim.setOption()in bothsetControlValue(declarative/post-1.13 path) and all 9 imperativeonChangehandlers forVIM_OPTION_KEYSsettings. (2) The initial settings sync inreloadFeatures()calledvim.setOption()for non-default values (clipboard, textwidth, insertmodeescape, etc.) afterregisterVimOptions()had already setregistered = true, causingnotifyto fire and mark these settings as overridden. Fixed by makingregisterVimOptions()return an activation function —registeredis only set totruewhen the caller invokes it after the initial sync completes. (#125)- Plugin:
src/settings.ts(setControlValue—clearSettingOverridemoved aftervim.setOption+refreshDomState; 9 imperativeonChangehandlers — same reorder) - Plugin:
src/vim/options.ts(registerVimOptions— returns() => voidactivation function instead of settingregistered = trueinternally) - Plugin:
src/main.ts(captures activation function, calls it after initial settings sync block)
- Plugin:
Full Changelog: 0.113.0...0.114.0