diff --git a/editors/vscode/client/config.ts b/editors/vscode/client/config.ts index 72da458a4406a..ba553afb13a91 100644 --- a/editors/vscode/client/config.ts +++ b/editors/vscode/client/config.ts @@ -5,9 +5,9 @@ export class ConfigService implements Config, IDisposable { private static readonly _namespace = 'oxc'; private readonly _disposables: IDisposable[] = []; private _inner: WorkspaceConfiguration; - private _runTrigger: 'onSave' | 'onType'; + private _runTrigger: Trigger; private _enable: boolean; - private _trace: 'off' | 'messages' | 'verbose'; + private _trace: TraceLevel; private _configPath: string; private _binPath: string | undefined; @@ -30,10 +30,6 @@ export class ConfigService implements Config, IDisposable { this._disposables.push(disposeChangeListener); } - get rawConfig(): WorkspaceConfiguration { - return this._inner; - } - get runTrigger(): Trigger { return this._runTrigger; } @@ -106,13 +102,11 @@ export class ConfigService implements Config, IDisposable { } } - public toJSON(): Config { + public toLanguageServerConfig(): LanguageServerConfig { return { - runTrigger: this.runTrigger, + run: this.runTrigger, enable: this.enable, - trace: this.trace, configPath: this.configPath, - binPath: this.binPath, }; } } @@ -120,6 +114,12 @@ export class ConfigService implements Config, IDisposable { type Trigger = 'onSave' | 'onType'; type TraceLevel = 'off' | 'messages' | 'verbose'; +interface LanguageServerConfig { + configPath: string; + enable: boolean; + run: Trigger; +} + /** * See `"contributes.configuration"` in `package.json` */ diff --git a/editors/vscode/client/extension.ts b/editors/vscode/client/extension.ts index 036443de4159c..48f2e6e36e662 100644 --- a/editors/vscode/client/extension.ts +++ b/editors/vscode/client/extension.ts @@ -136,7 +136,6 @@ export async function activate(context: ExtensionContext) { // If the extension is launched in debug mode then the debug server options are used // Otherwise the run options are used // Options to control the language client - let clientConfig: any = JSON.parse(JSON.stringify(config.rawConfig)); let clientOptions: LanguageClientOptions = { // Register the server for plain text documents documentSelector: [ @@ -155,7 +154,7 @@ export async function activate(context: ExtensionContext) { fileEvents: workspace.createFileSystemWatcher('**/.clientrc'), }, initializationOptions: { - settings: clientConfig, + settings: config.toLanguageServerConfig(), }, outputChannel, traceOutputChannel, @@ -200,7 +199,7 @@ export async function activate(context: ExtensionContext) { myStatusBarItem.backgroundColor = bgColor; } - updateStatsBar(clientConfig.enable); + updateStatsBar(config.enable); client.start(); }