Home > front end >  VSCode Extensions API — How to change nested settings using getConfiguration().update()?
VSCode Extensions API — How to change nested settings using getConfiguration().update()?

Time:09-12

Is it possible to change nested settings using the VSCode Extensions API? I've searched around and there doesn't seem to be any discussion around this.

For example, how do I use getConfiguration().update() to change a setting like:

{
    "workbench.colorCustomizations": {
        "button.foreground": "#FFCC66", // <-- nested setting to change
        // ...rest of nested settings
    },
    // rest of settings
}

How do I go about accessing "deep" properties such as the nested button.foreground property using dotted notation?

await vscode.workspace
    .getConfiguration()
    .update(
        <nested-property>,
        '#ffffff', // new button foreground color
        vscode.ConfigurationTarget.Global
    );

CodePudding user response:

Figured it out.

// Get configuration for parent setting
const colorCustomizations: any = await vscode.workspace
    .getConfiguration()
    .get('workbench.colorCustomizations');

// Update nested setting
colorCustomizations['button.foreground'] = '#ffffff';

// Overwrite entire parent setting
await vscode.workspace
    .getConfiguration()
    .update(
        'workbench.colorCustomizations',
         colorCustomizations,
         vscode.ConfigurationTarget.Global
    );

Thanks to @rioV8 for guiding me in the right direction.

  • Related