Home > Software design >  Update user/workspace settings from vs code extension
Update user/workspace settings from vs code extension

Time:02-21

I am trying to update setting.json from my vs code extension and I want to add below code

 "files.associations": {
        "*.app": "auraComponent"
    }

In other words I want to add below key value pair from extension to the users who are going to install my app

enter image description here

So I tried putting the below code in extension.js but it didn't update the settings.

import { ConfigurationTarget, workspace } from 'vscode';

const configuration = workspace.getConfiguration('files.associations');
configuration.update('.app', 'auraComponent', ConfigurationTarget.Global).then(() => {
    // take action here
});

Could someone please suggest if I am using the right approach to update the user or workspace settings and also if the code inside extension.js would be executed automatically or not.

Update

I have added extension.js and included the js code as mentioned by mark in his answer

and update my package.json as below

"main": "./extension",
"activationEvents": [
    "*"
],

If I run my extension on debug mode then it works fine but not working in real time.

CodePudding user response:

The below works whether there is a pre-existing files.association setting or not. If there is already one, the new association is added to it (and so may be located somewhere other than the end of the settings file - otherwise a wholly new files.associations setting will be added to the very end of the settings.json file..

const fileConfiguration = vscode.workspace.getConfiguration('files');
const associations = fileConfiguration.get('associations');

associations['*.app'] = "auraComponent";

fileConfiguration.update('associations', associations, vscode.ConfigurationTarget.Global).then(() => {

    // take action here
});

Adapted from https://stackoverflow.com/a/49566662/836330.

As explained there, what you really want to update is the associations object, that is the value to be updated. "*.app": "auraComponent is not a configuration key. files.associations is the key and there is an object {...} which is its value.

  • Related