diff --git a/src/extension.ts b/src/extension.ts index f56b691e..6b4eb725 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -6,7 +6,7 @@ *--------------------------------------------------------------------------------------------*/ 'use strict'; -import { workspace, ExtensionContext, extensions, window, commands, Uri } from 'vscode'; +import { workspace, ExtensionContext, extensions, window, commands, Uri, ConfigurationTarget } from 'vscode'; import { CommonLanguageClient, LanguageClientOptions, @@ -157,7 +157,7 @@ export function startClient( findConflicts(); client .onReady() - .then(() => { + .then(async () => { // Send a notification to the server with any YAML schema associations in all extensions client.sendNotification(SchemaAssociationNotification.type, getSchemaAssociations()); @@ -214,6 +214,8 @@ export function startClient( }); initializeRecommendation(context); + + await setDefaultFormatter(['dockercompose', 'github-actions-workflow']); }) .catch((err) => { sendStartupTelemetryEvent(runtime.telemetry, false, err); @@ -222,6 +224,23 @@ export function startClient( return schemaExtensionAPI; } +/** + * set redhat.vscode-yaml as default formatter + * @param extensions [dockercompose, github-actions-workflow] + */ +async function setDefaultFormatter(extensions: string[]): Promise { + const config = workspace.getConfiguration(); + extensions.forEach(async (extension) => { + const extensionConf = config.get>(`[${extension}]`) || {}; + if (extensionConf) { + if (extensionConf['editor.defaultFormatter'] === undefined) { + extensionConf['editor.defaultFormatter'] = 'redhat.vscode-yaml'; + await config.update(`[${extension}]`, extensionConf, ConfigurationTarget.Global); + } + } + }); +} + /** * Finds extensions that conflict with VSCode-YAML. * If one or more conflicts are found then show an uninstall notification