Skip to content

Clean up JS/TS language specific setting settings #292934

Description

@mjbvz

The JS/TS settings were written before many modern configuration options, such as language scoping, were supported. As a result, we have duplicate versions of many settings: typescript.* and javascript.*

If we were starting fresh, all of these would be under a single top level scope (js/ts) and we'd use language specific settings instead. With TS 7.0 coming up, I think it's time we bite the bullet and finally try to clean things up.

What this means for users

Existing configurations such as:

"javascript.format.enable": false,
"typescript.format.enable": true,

Will become:

"[javascript,javascriptreact]": {
	"js/ts.format.enable": false,
},
"[typescript,typescriptreact]": {
	"js/ts.format.enable": true,
}

If the values are the same for both js and ts, you can just set: "js/ts.format.enable": false

Plan

  1. February: Add new js/ts.* versions of the settings

    • Make old settings deprecated
    • Keep respecting old settings if they are set (however new settings override them)
    • Make sure new settings descriptions show up if you search either "javascript" or "typescript" in the setting ui (may require a small update to the setting description
    • In a limited number of cases, we may also want to align names (e.g. enabled vs enable)
  2. February: For tsgo specifically, start reading the new settings, with fallback logic just to the typescript.* version of the (today is only checks typescript.*, not javascript.*)

  3. March or April: start auto migrate these settings for users. We don't want to do this immediately so that users have more time to make sure they have picked up a VS Code version that supports the new values

    • We likely only want to do this for user settings to avoid generating extra changes in workspaces
  4. Many months out: remove observing the old settings ONLY in tsgo

    • We will keep respecting the old settings in VS Code for at least a year and possibly longer to support old workspace settings we encounter

Metadata

Metadata

Assignees

Labels

feature-requestRequest for new features or functionalityinsiders-releasedPatch has been released in VS Code Insiderssettings-editorVS Code settings editor issuessettings-searchSettings editor remote search provider issuesverification-neededVerification of issue is requestedverifiedVerification succeeded

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions