Add undocumented always syntax only TS server mode

Fixes #124649
This commit is contained in:
Matt Bierner 2021-05-27 14:40:36 -07:00
parent 866ecdd45a
commit 280e007073
No known key found for this signature in database
GPG key ID: 099C331567E11888
3 changed files with 20 additions and 2 deletions

View file

@ -99,6 +99,9 @@ export class TypeScriptServerSpawner {
}
switch (configuration.separateSyntaxServer) {
case SeparateSyntaxServerConfiguration.ForAllRequests:
return CompositeServerType.SyntaxOnly;
case SeparateSyntaxServerConfiguration.Disabled:
return CompositeServerType.Single;

View file

@ -19,7 +19,7 @@ import { TypeScriptVersionManager } from './tsServer/versionManager';
import { ITypeScriptVersionProvider, TypeScriptVersion } from './tsServer/versionProvider';
import { ClientCapabilities, ClientCapability, ExecConfig, ITypeScriptServiceClient, ServerResponse, TypeScriptRequests } from './typescriptService';
import API from './utils/api';
import { TsServerLogLevel, TypeScriptServiceConfiguration } from './utils/configuration';
import { SeparateSyntaxServerConfiguration, TsServerLogLevel, TypeScriptServiceConfiguration } from './utils/configuration';
import { Disposable } from './utils/dispose';
import * as fileSchemes from './utils/fileSchemes';
import { Logger } from './utils/logger';
@ -224,6 +224,12 @@ export default class TypeScriptServiceClient extends Disposable implements IType
}
public get capabilities() {
if (this._configuration.separateSyntaxServer === SeparateSyntaxServerConfiguration.ForAllRequests) {
return new ClientCapabilities(
ClientCapability.Syntax,
ClientCapability.EnhancedSyntax);
}
if (isWeb()) {
return new ClientCapabilities(
ClientCapability.Syntax,
@ -676,6 +682,10 @@ export default class TypeScriptServiceClient extends Disposable implements IType
}
public hasCapabilityForResource(resource: vscode.Uri, capability: ClientCapability): boolean {
if (!this.capabilities.has(capability)) {
return false;
}
switch (capability) {
case ClientCapability.Semantic:
{

View file

@ -48,6 +48,8 @@ export namespace TsServerLogLevel {
export const enum SeparateSyntaxServerConfiguration {
Disabled,
Enabled,
/** Use a single syntax server for every request, even on desktop */
ForAllRequests,
}
export class ImplicitProjectConfiguration {
@ -180,7 +182,10 @@ export class TypeScriptServiceConfiguration {
}
private static readUseSeparateSyntaxServer(configuration: vscode.WorkspaceConfiguration): SeparateSyntaxServerConfiguration {
const value = configuration.get('typescript.tsserver.useSeparateSyntaxServer', true);
const value = configuration.get<boolean | string>('typescript.tsserver.useSeparateSyntaxServer', true);
if (value === 'forAllRequests') {
return SeparateSyntaxServerConfiguration.ForAllRequests;
}
if (value === true) {
return SeparateSyntaxServerConfiguration.Enabled;
}