J. Doe
J. Doe

Reputation: 125

Settings precedence (User, Workspace, Folder)

VSCode team, thanks a lot for all the good in your work.

Issue: Pls, the precedence of various settings' levels seems to me to run in different direction, e.g. User level setting overrides the Workspace setting.

Example: Let me put an example (I have checked the precedence when using the 'NAB AL tools' extension, but anyway, the precedence should use the same principle within any VSCode's settings, if I get it right), pls correct where wrong:

  1. Some example checkbox is unchecked by default at all levels (User, Workspace, Folder)
  2. I put a checkmark in it at User level
  3. The same checkbox has no checkmark at Workspace level, i.e. is in its default status at Workspace level
  4. VSCode behaves based on checkbox's status that is set at the User level instead of the one at the Workspace level (the help text here explains that the Workspace level setting should override the User level setting)

Tried the same with text boxes, the same result.

Can you explain / help me a bit, if I understand the precedence help text explanation wrong pls?

Thanks;) best

Upvotes: 7

Views: 6335

Answers (3)

J. Doe
J. Doe

Reputation: 125

Thanks to @Eliav Louski, I have checked out the VSCode help. To have the answer complete here, in the time of this answer the full list is as follows

//btw always check the up-to-date version there

Settings precedence

Configurations can be overridden at multiple levels by the different setting scopes. In the following list, later scopes override earlier scopes:

Default settings - This scope represents the default unconfigured setting values.

User settings - Apply globally to all VS Code instances.

Remote settings - Apply to a remote machine opened by a user.

Workspace settings - Apply to the open folder or workspace.

Workspace Folder settings - Apply to a specific folder of a multi-root workspace.

Language-specific default settings - These are language-specific default values that can be contributed by extensions.

Language-specific user settings - Same as User settings, but specific to a language.

Language-specific remote settings - Same as Remote settings, but specific to a language.

Language-specific workspace settings - Same as Workspace settings, but specific to a language.

Language-specific workspace folder settings - Same as Workspace Folder settings, but specific to a language.

Policy settings - Set by the system administrator, these values always override other setting values.

Upvotes: 3

Eliav Louski
Eliav Louski

Reputation: 5284

@cybek are wrong in his answer. dont know why so many upvoted on his answer

from vscode docs:

If you have settings defined for the same language in both user and workspace scopes, then they are merged by giving precedence to the ones defined in the workspace

also from the docs, Settings precedence, in this order:

  • Workspace settings - Apply to the open folder or workspace.
  • Remote settings - Apply to a remote machine opened by a user.
  • User settings - Apply globally to all VS Code instances.
  • Default settings - This scope represents the default unconfigured setting values.

see the full list here.

Upvotes: 9

cybek
cybek

Reputation: 43

it's an old question, but I will try to answer it anyway.

The user configuration files takes precedence to the workspace one, that's what I've read in the vscode documentation. Next, it looks like the configuration is ANDed from user to workspace. Which means, if you as user, disable something, than being enabled in workspace is ignored. Other way, if you enable something as user, it means it will be enabled only if workspace has it enabled too.

I don't like this concept, it should be tristated, like enable/disable/read-from-workspace (or from user).

Upvotes: 1

Related Questions