mirror of
https://github.com/microsoft/vscode.git
synced 2025-12-21 18:59:15 +00:00
Auto restart when changing typescript.experimental.useSeparateSyntaxServer
This commit is contained in:
@@ -37,7 +37,7 @@ export class TypeScriptServerSpawner {
|
||||
configuration: TypeScriptServiceConfiguration,
|
||||
pluginManager: PluginManager
|
||||
): ITypeScriptServer {
|
||||
if (this.shouldUseSeparateSyntaxServer(version)) {
|
||||
if (this.shouldUseSeparateSyntaxServer(version, configuration)) {
|
||||
const syntaxServer = this.spawnTsServer('syntax', version, configuration, pluginManager);
|
||||
const semanticServer = this.spawnTsServer('semantic', version, configuration, pluginManager);
|
||||
return new SyntaxRoutingTsServer(syntaxServer, semanticServer);
|
||||
@@ -46,12 +46,11 @@ export class TypeScriptServerSpawner {
|
||||
return this.spawnTsServer('main', version, configuration, pluginManager);
|
||||
}
|
||||
|
||||
private shouldUseSeparateSyntaxServer(version: TypeScriptVersion): boolean {
|
||||
if (!version.apiVersion || version.apiVersion.lt(API.v340)) {
|
||||
return false;
|
||||
}
|
||||
return vscode.workspace.getConfiguration('typescript')
|
||||
.get<boolean>('experimental.useSeparateSyntaxServer', false);
|
||||
private shouldUseSeparateSyntaxServer(
|
||||
version: TypeScriptVersion,
|
||||
configuration: TypeScriptServiceConfiguration,
|
||||
): boolean {
|
||||
return configuration.useSeparateSyntaxServer && !!version.apiVersion && version.apiVersion.gte(API.v340);
|
||||
}
|
||||
|
||||
private spawnTsServer(
|
||||
|
||||
@@ -54,6 +54,7 @@ export class TypeScriptServiceConfiguration {
|
||||
public readonly checkJs: boolean;
|
||||
public readonly experimentalDecorators: boolean;
|
||||
public readonly disableAutomaticTypeAcquisition: boolean;
|
||||
public readonly useSeparateSyntaxServer: boolean;
|
||||
|
||||
public static loadFromWorkspace(): TypeScriptServiceConfiguration {
|
||||
return new TypeScriptServiceConfiguration();
|
||||
@@ -71,6 +72,7 @@ export class TypeScriptServiceConfiguration {
|
||||
this.checkJs = TypeScriptServiceConfiguration.readCheckJs(configuration);
|
||||
this.experimentalDecorators = TypeScriptServiceConfiguration.readExperimentalDecorators(configuration);
|
||||
this.disableAutomaticTypeAcquisition = TypeScriptServiceConfiguration.readDisableAutomaticTypeAcquisition(configuration);
|
||||
this.useSeparateSyntaxServer = TypeScriptServiceConfiguration.readUseSeparateSyntaxServer(configuration);
|
||||
}
|
||||
|
||||
public isEqualTo(other: TypeScriptServiceConfiguration): boolean {
|
||||
@@ -82,7 +84,8 @@ export class TypeScriptServiceConfiguration {
|
||||
&& this.checkJs === other.checkJs
|
||||
&& this.experimentalDecorators === other.experimentalDecorators
|
||||
&& this.disableAutomaticTypeAcquisition === other.disableAutomaticTypeAcquisition
|
||||
&& arrays.equals(this.tsServerPluginPaths, other.tsServerPluginPaths);
|
||||
&& arrays.equals(this.tsServerPluginPaths, other.tsServerPluginPaths)
|
||||
&& this.useSeparateSyntaxServer === other.useSeparateSyntaxServer;
|
||||
}
|
||||
|
||||
private static fixPathPrefixes(inspectValue: string): string {
|
||||
@@ -139,4 +142,8 @@ export class TypeScriptServiceConfiguration {
|
||||
private static extractLocale(configuration: vscode.WorkspaceConfiguration): string | null {
|
||||
return configuration.get<string | null>('typescript.locale', null);
|
||||
}
|
||||
|
||||
private static readUseSeparateSyntaxServer(configuration: vscode.WorkspaceConfiguration): boolean {
|
||||
return configuration.get<boolean>('typescript.experimental.useSeparateSyntaxServer', false);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user