vscode icon indicating copy to clipboard operation
vscode copied to clipboard

Most `"configurationDefaults"` settings no longer work on VSCode reload

Open RedCMD opened this issue 1 year ago • 1 comments

Does this issue occur when all extensions are disabled?: Yes

most settings in 'configurationDefaults" no longer seem to work when restarting VSCode with a file loaded https://github.com/microsoft/vscode/blob/104d04f3c581d8fd575389cbbdd67cf6a4002c91/extensions/json-language-features/package.json#L130-L143

Steps to Reproduce:

  1. Reset editor.suggest.insertMode and editor.quickSuggestions back to their defaults
  2. Open a JSON file
  3. notice intellisense working correctly
  4. Restart VSCode
  5. notice intellisense no longer working correctly

Working:

https://github.com/user-attachments/assets/6fca734b-ceeb-43c2-b932-13004ed1eec7

After reload:

https://github.com/user-attachments/assets/7f28a10b-a748-4797-a7cd-555c8656f50b

notice that I have to manually press ctrl+space to bring up completions and text after the cursor is not replaced

This was working correctly in 1.93.0 but broke in 1.94.0

  • VS Code Version: 1.94.2
  • OS Version: Windows 11

RedCMD avatar Oct 13 '24 08:10 RedCMD

This also affects "editor.insertSpaces", "editor.tabSize" and "editor.autoIndent" which are used by YAML

https://github.com/microsoft/vscode/blob/d72a0f0af6edf3601ec95328755841695aa300dd/extensions/yaml/package.json#L66-L71

  1. Create YAML file
  2. type text abc:
  3. press enter
  4. notice no indentation ✅
  5. press tab
  6. notice 2 spaces ✅
  7. remove all whitespace
  8. Restart VSCode (with file open)
  9. press enter
  10. notice indentation in the form of 1tab or 4spaces ❌

This should prob be added to next Recovery release?

RedCMD avatar Oct 20 '24 04:10 RedCMD

The issue seems to affect files that were open during the reload. After I closed and reopened the YAML file, the behaviour went back to normal. I do not think that this is a candidate-worthy issue but that it is a papercut.

@sandy081 this issue affects configurationDefault settings, but I'm unsure whether it has to do with config, the extension host, or open editors. Could you take a look?

rzhao271 avatar Oct 21 '24 21:10 rzhao271

my guess would be the relationship between the extension host and open editors due to:

  • https://github.com/microsoft/vscode/issues/231765 intellisense
  • https://github.com/microsoft/vscode/issues/202938 brackets
  • https://github.com/microsoft/vscode/issues/231168 comments

is rather annoying when developing an extension due to having to reload the window all the time and https://github.com/microsoft/vscode/issues/226511 not being added

RedCMD avatar Oct 21 '24 23:10 RedCMD

Configuration seems to be correct. After reload configuration model has correct values and sending right events on change. I can also see quick suggestions but I should wait until extensions are activated. So I suspect this could be an issue in editor land.

sandy081 avatar Nov 19 '24 15:11 sandy081

I just want to flag that I get multiple reports every week by very confused users about why e.g. their code is suddenly not normalized anymore, why VS Code is suddenly inputting incorrect whitespace characters into their documents or why their code is suddenly unreadable because ambiguousCharacters has been re-enabled.

mhuisi avatar Dec 11 '24 14:12 mhuisi

@sandy081 please provide a video demonstrating auto quick suggestions within strings working please

why didn't you wait for extensions to load? the "configurationDefaults" settings come from extensions

RedCMD avatar Dec 11 '24 23:12 RedCMD

caused by one of these commits https://github.com/microsoft/vscode/compare/4849ca9bdf9666755eb463db297b69e5385090e3...dc9412125d4e0a480593962ae2687e74e64af728

RedCMD avatar Feb 11 '25 00:02 RedCMD

@bpasero @jrieken @alexdima caused by

  • https://github.com/microsoft/vscode/pull/227184

please fix thank you

RedCMD avatar Feb 11 '25 03:02 RedCMD

Easy repro:

  • open a markdown file with long lines so that you see word wrapping
  • reload the window
  • 🐛 word wrap is not applied

@sandy081 need your help. This is indeed a regression from https://github.com/microsoft/vscode/pull/227184 but that change is too large to even look at.

What I can find out so far is that the configuration value does not include the language overrides at the time I am resolving it here:

https://github.com/microsoft/vscode/blob/21525b01bf68bf9250cb856f192628fffc449234/src/vs/workbench/browser/parts/editor/textEditor.ts#L303

On startup I can see that it is being called 3 times:

  • once from setInput
  • once from createTextModel
  • and finally from when the language ID changes to markdown

This is same before the ESM work, so the sequence seems to match. But the config object misses entries for markdown, as you can see when comparing the 2 values before and after:

After ESM

Image
TextFileEditor.updateEditorConfiguration (/Users/bpasero/Development/Microsoft/vscode/src/vs/workbench/browser/parts/editor/textEditor.ts:306)
<anonymous> (/Users/bpasero/Development/Microsoft/vscode/src/vs/workbench/browser/parts/editor/textEditor.ts:188)
Emitter._deliver (/Users/bpasero/Development/Microsoft/vscode/src/vs/base/common/event.ts:1208)
Emitter._deliverQueue (/Users/bpasero/Development/Microsoft/vscode/src/vs/base/common/event.ts:1219)
Emitter.fire (/Users/bpasero/Development/Microsoft/vscode/src/vs/base/common/event.ts:1243)
<anonymous> (/Users/bpasero/Development/Microsoft/vscode/src/vs/editor/browser/widget/codeEditor/codeEditorWidget.ts:1759)
Emitter._deliver (/Users/bpasero/Development/Microsoft/vscode/src/vs/base/common/event.ts:1208)
Emitter.fire (/Users/bpasero/Development/Microsoft/vscode/src/vs/base/common/event.ts:1239)
ViewModelEventDispatcher._emitOutgoingEvents (/Users/bpasero/Development/Microsoft/vscode/src/vs/editor/common/viewModelEventDispatcher.ts:64)
ViewModelEventDispatcher.emitOutgoingEvent (/Users/bpasero/Development/Microsoft/vscode/src/vs/editor/common/viewModelEventDispatcher.ts:39)
<anonymous> (/Users/bpasero/Development/Microsoft/vscode/src/vs/editor/common/viewModel/viewModelImpl.ts:443)
Emitter._deliver (/Users/bpasero/Development/Microsoft/vscode/src/vs/base/common/event.ts:1208)
Emitter._deliverQueue (/Users/bpasero/Development/Microsoft/vscode/src/vs/base/common/event.ts:1219)
Emitter.fire (/Users/bpasero/Development/Microsoft/vscode/src/vs/base/common/event.ts:1243)
TokenizationTextModelPart.setLanguageId (/Users/bpasero/Development/Microsoft/vscode/src/vs/editor/common/model/tokenizationTextModelPart.ts:373)
TextModel._setLanguage (/Users/bpasero/Development/Microsoft/vscode/src/vs/editor/common/model/textModel.ts:1966)
<anonymous> (/Users/bpasero/Development/Microsoft/vscode/src/vs/editor/common/model/textModel.ts:327)
Emitter._deliver (/Users/bpasero/Development/Microsoft/vscode/src/vs/base/common/event.ts:1208)
Emitter.fire (/Users/bpasero/Development/Microsoft/vscode/src/vs/base/common/event.ts:1239)
EmitterObserver.endUpdate (/Users/bpasero/Development/Microsoft/vscode/src/vs/base/common/event.ts:705)
TransactionImpl.finish (/Users/bpasero/Development/Microsoft/vscode/src/vs/base/common/observableInternal/base.ts:411)
transaction (/Users/bpasero/Development/Microsoft/vscode/src/vs/base/common/observableInternal/base.ts:345)
subtransaction (/Users/bpasero/Development/Microsoft/vscode/src/vs/base/common/observableInternal/base.ts:381)
FromEventObservable.handleEvent (/Users/bpasero/Development/Microsoft/vscode/src/vs/base/common/observableInternal/utils.ts:144)
Emitter._deliver (/Users/bpasero/Development/Microsoft/vscode/src/vs/base/common/event.ts:1208)
Emitter._deliverQueue (/Users/bpasero/Development/Microsoft/vscode/src/vs/base/common/event.ts:1219)
Emitter.fire (/Users/bpasero/Development/Microsoft/vscode/src/vs/base/common/event.ts:1243)
<anonymous> (/Users/bpasero/Development/Microsoft/vscode/src/vs/editor/common/services/languageService.ts:40)
Emitter._deliver (/Users/bpasero/Development/Microsoft/vscode/src/vs/base/common/event.ts:1208)
Emitter.fire (/Users/bpasero/Development/Microsoft/vscode/src/vs/base/common/event.ts:1239)
LanguagesRegistry._registerLanguages (/Users/bpasero/Development/Microsoft/vscode/src/vs/editor/common/services/languagesRegistry.ts:151)
LanguagesRegistry._initializeFromRegistry (/Users/bpasero/Development/Microsoft/vscode/src/vs/editor/common/services/languagesRegistry.ts:119)
LanguagesRegistry.setDynamicLanguages (/Users/bpasero/Development/Microsoft/vscode/src/vs/editor/common/services/languagesRegistry.ts:108)
<anonymous> (/Users/bpasero/Development/Microsoft/vscode/src/vs/workbench/services/language/common/languageService.ts:273)
ExtensionPoint._handle (/Users/bpasero/Development/Microsoft/vscode/src/vs/workbench/services/extensions/common/extensionsRegistry.ts:154)
ExtensionPoint.acceptUsers (/Users/bpasero/Development/Microsoft/vscode/src/vs/workbench/services/extensions/common/extensionsRegistry.ts:145)
AbstractExtensionService extends Disposable._handleExtensionPoint (/Users/bpasero/Development/Microsoft/vscode/src/vs/workbench/services/extensions/common/abstractExtensionService.ts:1162)
NativeExtensionService._doHandleExtensionPoints (/Users/bpasero/Development/Microsoft/vscode/src/vs/workbench/services/extensions/common/abstractExtensionService.ts:1092)
NativeExtensionService._resolveAndProcessExtensions (/Users/bpasero/Development/Microsoft/vscode/src/vs/workbench/services/extensions/common/abstractExtensionService.ts:543)
await (Unknown Source:0)
_initialize (/Users/bpasero/Development/Microsoft/vscode/src/vs/workbench/services/extensions/common/abstractExtensionService.ts:463)
await (Unknown Source:0)
<anonymous> (/Users/bpasero/Development/Microsoft/vscode/src/vs/workbench/services/extensions/electron-sandbox/nativeExtensionService.ts:140)
requestIdleCallback (Unknown Source:0)
_runWhenIdle (/Users/bpasero/Development/Microsoft/vscode/src/vs/base/common/async.ts:1369)
runWhenWindowIdle (/Users/bpasero/Development/Microsoft/vscode/src/vs/base/browser/dom.ts:244)
<anonymous> (/Users/bpasero/Development/Microsoft/vscode/src/vs/workbench/services/extensions/electron-sandbox/nativeExtensionService.ts:139)
Promise.then (Unknown Source:0)
NativeExtensionService (/Users/bpasero/Development/Microsoft/vscode/src/vs/workbench/services/extensions/electron-sandbox/nativeExtensionService.ts:137)
_createInstance (/Users/bpasero/Development/Microsoft/vscode/src/vs/platform/instantiation/common/instantiationService.ts:162)
_createServiceInstance (/Users/bpasero/Development/Microsoft/vscode/src/vs/platform/instantiation/common/instantiationService.ts:295)
_createServiceInstanceWithOwner (/Users/bpasero/Development/Microsoft/vscode/src/vs/platform/instantiation/common/instantiationService.ts:284)
_createAndCacheServiceInstance (/Users/bpasero/Development/Microsoft/vscode/src/vs/platform/instantiation/common/instantiationService.ts:273)
_safeCreateAndCacheServiceInstance (/Users/bpasero/Development/Microsoft/vscode/src/vs/platform/instantiation/common/instantiationService.ts:206)
_getOrCreateServiceInstance (/Users/bpasero/Development/Microsoft/vscode/src/vs/platform/instantiation/common/instantiationService.ts:190)
get (/Users/bpasero/Development/Microsoft/vscode/src/vs/platform/instantiation/common/instantiationService.ts:102)
<anonymous> (/Users/bpasero/Development/Microsoft/vscode/src/vs/workbench/browser/workbench.ts:133)
invokeFunction (/Users/bpasero/Development/Microsoft/vscode/src/vs/platform/instantiation/common/instantiationService.ts:109)
startup (/Users/bpasero/Development/Microsoft/vscode/src/vs/workbench/browser/workbench.ts:128)
open (/Users/bpasero/Development/Microsoft/vscode/src/vs/workbench/electron-sandbox/desktop.main.ts:144)
await (Unknown Source:0)
main (/Users/bpasero/Development/Microsoft/vscode/src/vs/workbench/electron-sandbox/desktop.main.ts:417)
<anonymous> (/Users/bpasero/Development/Microsoft/vscode/src/vs/code/electron-sandbox/workbench/workbench.ts:307)

Before ESM

Image
TextFileEditor.updateEditorConfiguration (/Users/bpasero/Development/Microsoft/vscode-electron-22.x/src/vs/workbench/browser/parts/editor/textEditor.ts:306)
<anonymous> (/Users/bpasero/Development/Microsoft/vscode-electron-22.x/src/vs/workbench/browser/parts/editor/textEditor.ts:188)
Emitter._deliver (/Users/bpasero/Development/Microsoft/vscode-electron-22.x/src/vs/base/common/event.ts:1242)
Emitter._deliverQueue (/Users/bpasero/Development/Microsoft/vscode-electron-22.x/src/vs/base/common/event.ts:1253)
Emitter.fire (/Users/bpasero/Development/Microsoft/vscode-electron-22.x/src/vs/base/common/event.ts:1277)
<anonymous> (/Users/bpasero/Development/Microsoft/vscode-electron-22.x/src/vs/editor/browser/widget/codeEditor/codeEditorWidget.ts:1741)
Emitter._deliver (/Users/bpasero/Development/Microsoft/vscode-electron-22.x/src/vs/base/common/event.ts:1242)
Emitter.fire (/Users/bpasero/Development/Microsoft/vscode-electron-22.x/src/vs/base/common/event.ts:1273)
ViewModelEventDispatcher._emitOutgoingEvents (/Users/bpasero/Development/Microsoft/vscode-electron-22.x/src/vs/editor/common/viewModelEventDispatcher.ts:64)
ViewModelEventDispatcher.emitOutgoingEvent (/Users/bpasero/Development/Microsoft/vscode-electron-22.x/src/vs/editor/common/viewModelEventDispatcher.ts:39)
<anonymous> (/Users/bpasero/Development/Microsoft/vscode-electron-22.x/src/vs/editor/common/viewModel/viewModelImpl.ts:443)
Emitter._deliver (/Users/bpasero/Development/Microsoft/vscode-electron-22.x/src/vs/base/common/event.ts:1242)
Emitter._deliverQueue (/Users/bpasero/Development/Microsoft/vscode-electron-22.x/src/vs/base/common/event.ts:1253)
Emitter.fire (/Users/bpasero/Development/Microsoft/vscode-electron-22.x/src/vs/base/common/event.ts:1277)
TokenizationTextModelPart.setLanguageId (/Users/bpasero/Development/Microsoft/vscode-electron-22.x/src/vs/editor/common/model/tokenizationTextModelPart.ts:379)
TextModel._setLanguage (/Users/bpasero/Development/Microsoft/vscode-electron-22.x/src/vs/editor/common/model/textModel.ts:1961)
<anonymous> (/Users/bpasero/Development/Microsoft/vscode-electron-22.x/src/vs/editor/common/model/textModel.ts:326)
Emitter._deliver (/Users/bpasero/Development/Microsoft/vscode-electron-22.x/src/vs/base/common/event.ts:1242)
Emitter.fire (/Users/bpasero/Development/Microsoft/vscode-electron-22.x/src/vs/base/common/event.ts:1273)
EmitterObserver.endUpdate (/Users/bpasero/Development/Microsoft/vscode-electron-22.x/src/vs/base/common/event.ts:711)

Any ideas?

bpasero avatar Feb 11 '25 13:02 bpasero

Difference seems to be the configurations registrations from extensions. Before ESM, at that instance configurations of all extensions are read and registered and after ESM, they are not. Hence you are not seeing those configurations from extensions. BTW, in this particular scenario, markdown language configuration defaults are contributed by the markdown extension

https://github.com/microsoft/vscode/blob/9c1fb6ebdc1c895b0a1678524cffa4c116a398d0/extensions/markdown-language-features/package.json#L729-L738

I would expect that editor's configurations should be updated after markdown language specific configurations are registered.

sandy081 avatar Feb 11 '25 16:02 sandy081

Before ESM, at that instance configurations of all extensions are read and registered and after ESM, they are not

@sandy081 is there a way to drill into why that is not the case anymore with ESM, I cannot recall a change for ESM related to that, other than converting the imports to be relative and some :lipstick: around how node modules are loaded.

It is especially weird that the callstack is originating from ExtensionPoint._handle where I would expect that the package.json is already processed?

bpasero avatar Feb 11 '25 17:02 bpasero

can confirm fixed

Thank you very much bpasero 🥳🙌❤️

RedCMD avatar Feb 12 '25 09:02 RedCMD

there still seems to be a issue with YAML not changing to 2 spaces it (still incorrectly) switches to 4 spaces on reload

new bug report?

RedCMD avatar Feb 12 '25 09:02 RedCMD

@bpasero On the latest insiders version, I can also confirm that while our editor.unicodeHighlight.ambiguousCharacters configuration default is now immediately active upon restarting VS Code, it is still inputting the incorrect amount of spaces until the tab is closed and re-opened (i.e. switching the tab isn't sufficient to resolve the issue).

mhuisi avatar Feb 12 '25 10:02 mhuisi

Yeah I would suggest we go into filing new issues for remaining regressions. Please ping me on these issues or mention them here. Thanks!

bpasero avatar Feb 12 '25 12:02 bpasero

@RedCMD btw I would like to thank you for willing to bisect this down to the offending commit and for collecting all the related issues. Sorry it took us that long to work on the fixes 🙏

bpasero avatar Feb 12 '25 16:02 bpasero

I actually went ahead and reported https://github.com/microsoft/vscode/issues/240567 for the editor.tabSize issue. That one does not seem like it does have a straight forward fix, at least from my pov.

bpasero avatar Feb 12 '25 19:02 bpasero

Pushed a workaround that would support specific spaces/tabs settings for go, makefile, shellscript and yaml, basically the languages we ship out of the box, by contributing these settings from core. Its not a complete fix though for when a non-built-in extension defines these defaults.

bpasero avatar Feb 14 '25 11:02 bpasero

Unfortunately, we do :-(

I'm definitely looking forward to a proper fix.

mhuisi avatar Feb 14 '25 11:02 mhuisi

This bug has been fixed in the latest release of VS Code Insiders!

@RedCMD, you can help us out by commenting /verified if things are now working as expected.

If things still don't seem right, please ensure you're on version 233d086d5a613a1e9f016986f5ff056c17322c31 of Insiders (today's or later - you can use Help: About in the command palette to check), and leave a comment letting us know what isn't working as expected.

Happy Coding!

/verified

RedCMD avatar Feb 24 '25 08:02 RedCMD