mirror of
https://github.com/microsoft/vscode.git
synced 2025-12-23 19:59:37 +00:00
Pass language desc around instead of modeid
This commit is contained in:
@@ -11,6 +11,7 @@ import { CachedResponse } from '../../tsServer/cachedResponse';
|
||||
import { ClientCapability, ITypeScriptServiceClient } from '../../typescriptService';
|
||||
import { conditionalRegistration, requireConfiguration, requireSomeCapability } from '../../utils/dependentRegistration';
|
||||
import { DocumentSelector } from '../../utils/documentSelector';
|
||||
import { LanguageDescription } from '../../utils/languageDescription';
|
||||
import * as typeConverters from '../../utils/typeConverters';
|
||||
import { getSymbolRange, ReferencesCodeLens, TypeScriptBaseCodeLensProvider } from './baseCodeLensProvider';
|
||||
|
||||
@@ -89,12 +90,12 @@ export default class TypeScriptImplementationsCodeLensProvider extends TypeScrip
|
||||
|
||||
export function register(
|
||||
selector: DocumentSelector,
|
||||
modeId: string,
|
||||
language: LanguageDescription,
|
||||
client: ITypeScriptServiceClient,
|
||||
cachedResponse: CachedResponse<Proto.NavTreeResponse>,
|
||||
) {
|
||||
return conditionalRegistration([
|
||||
requireConfiguration(modeId, 'implementationsCodeLens.enabled'),
|
||||
requireConfiguration(language.id, 'implementationsCodeLens.enabled'),
|
||||
requireSomeCapability(client, ClientCapability.Semantic),
|
||||
], () => {
|
||||
return vscode.languages.registerCodeLensProvider(selector.semantic,
|
||||
|
||||
@@ -12,6 +12,7 @@ import { ExecutionTarget } from '../../tsServer/server';
|
||||
import { ClientCapability, ITypeScriptServiceClient } from '../../typescriptService';
|
||||
import { conditionalRegistration, requireConfiguration, requireSomeCapability } from '../../utils/dependentRegistration';
|
||||
import { DocumentSelector } from '../../utils/documentSelector';
|
||||
import { LanguageDescription } from '../../utils/languageDescription';
|
||||
import * as typeConverters from '../../utils/typeConverters';
|
||||
import { getSymbolRange, ReferencesCodeLens, TypeScriptBaseCodeLensProvider } from './baseCodeLensProvider';
|
||||
|
||||
@@ -21,7 +22,7 @@ export class TypeScriptReferencesCodeLensProvider extends TypeScriptBaseCodeLens
|
||||
public constructor(
|
||||
client: ITypeScriptServiceClient,
|
||||
protected _cachedResponse: CachedResponse<Proto.NavTreeResponse>,
|
||||
private modeId: string
|
||||
private readonly language: LanguageDescription
|
||||
) {
|
||||
super(client, _cachedResponse);
|
||||
}
|
||||
@@ -70,7 +71,7 @@ export class TypeScriptReferencesCodeLensProvider extends TypeScriptBaseCodeLens
|
||||
|
||||
switch (item.kind) {
|
||||
case PConst.Kind.function: {
|
||||
const showOnAllFunctions = vscode.workspace.getConfiguration(this.modeId).get<boolean>('referencesCodeLens.showOnAllFunctions');
|
||||
const showOnAllFunctions = vscode.workspace.getConfiguration(this.language.id).get<boolean>('referencesCodeLens.showOnAllFunctions');
|
||||
if (showOnAllFunctions) {
|
||||
return getSymbolRange(document, item);
|
||||
}
|
||||
@@ -126,15 +127,15 @@ export class TypeScriptReferencesCodeLensProvider extends TypeScriptBaseCodeLens
|
||||
|
||||
export function register(
|
||||
selector: DocumentSelector,
|
||||
modeId: string,
|
||||
language: LanguageDescription,
|
||||
client: ITypeScriptServiceClient,
|
||||
cachedResponse: CachedResponse<Proto.NavTreeResponse>,
|
||||
) {
|
||||
return conditionalRegistration([
|
||||
requireConfiguration(modeId, 'referencesCodeLens.enabled'),
|
||||
requireConfiguration(language.id, 'referencesCodeLens.enabled'),
|
||||
requireSomeCapability(client, ClientCapability.Semantic),
|
||||
], () => {
|
||||
return vscode.languages.registerCodeLensProvider(selector.semantic,
|
||||
new TypeScriptReferencesCodeLensProvider(client, cachedResponse, modeId));
|
||||
new TypeScriptReferencesCodeLensProvider(client, cachedResponse, language));
|
||||
});
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@ import { nulToken } from '../utils/cancellation';
|
||||
import { applyCodeAction } from '../utils/codeAction';
|
||||
import { conditionalRegistration, requireConfiguration, requireSomeCapability } from '../utils/dependentRegistration';
|
||||
import { DocumentSelector } from '../utils/documentSelector';
|
||||
import { LanguageDescription } from '../utils/languageDescription';
|
||||
import { parseKindModifier } from '../utils/modifiers';
|
||||
import * as Previewer from '../utils/previewer';
|
||||
import { snippetForFunctionCall } from '../utils/snippetForFunctionCall';
|
||||
@@ -643,7 +644,7 @@ class TypeScriptCompletionItemProvider implements vscode.CompletionItemProvider<
|
||||
|
||||
constructor(
|
||||
private readonly client: ITypeScriptServiceClient,
|
||||
private readonly modeId: string,
|
||||
private readonly language: LanguageDescription,
|
||||
private readonly typingsStatus: TypingsStatus,
|
||||
private readonly fileConfigurationManager: FileConfigurationManager,
|
||||
commandManager: CommandManager,
|
||||
@@ -678,7 +679,7 @@ class TypeScriptCompletionItemProvider implements vscode.CompletionItemProvider<
|
||||
}
|
||||
|
||||
const line = document.lineAt(position.line);
|
||||
const completionConfiguration = CompletionConfiguration.getConfigurationForResource(this.modeId, document.uri);
|
||||
const completionConfiguration = CompletionConfiguration.getConfigurationForResource(this.language.id, document.uri);
|
||||
|
||||
if (!this.shouldTrigger(context, line, position, completionConfiguration)) {
|
||||
return undefined;
|
||||
@@ -919,7 +920,7 @@ function shouldExcludeCompletionEntry(
|
||||
|
||||
export function register(
|
||||
selector: DocumentSelector,
|
||||
modeId: string,
|
||||
language: LanguageDescription,
|
||||
client: ITypeScriptServiceClient,
|
||||
typingsStatus: TypingsStatus,
|
||||
fileConfigurationManager: FileConfigurationManager,
|
||||
@@ -928,11 +929,11 @@ export function register(
|
||||
onCompletionAccepted: (item: vscode.CompletionItem) => void
|
||||
) {
|
||||
return conditionalRegistration([
|
||||
requireConfiguration(modeId, 'suggest.enabled'),
|
||||
requireConfiguration(language.id, 'suggest.enabled'),
|
||||
requireSomeCapability(client, ClientCapability.EnhancedSyntax, ClientCapability.Semantic),
|
||||
], () => {
|
||||
return vscode.languages.registerCompletionItemProvider(selector.syntax,
|
||||
new TypeScriptCompletionItemProvider(client, modeId, typingsStatus, fileConfigurationManager, commandManager, telemetryReporter, onCompletionAccepted),
|
||||
new TypeScriptCompletionItemProvider(client, language, typingsStatus, fileConfigurationManager, commandManager, telemetryReporter, onCompletionAccepted),
|
||||
...TypeScriptCompletionItemProvider.triggerCharacters);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ import type * as Proto from '../protocol';
|
||||
import { ITypeScriptServiceClient } from '../typescriptService';
|
||||
import { conditionalRegistration, requireConfiguration } from '../utils/dependentRegistration';
|
||||
import { DocumentSelector } from '../utils/documentSelector';
|
||||
import { LanguageDescription } from '../utils/languageDescription';
|
||||
import * as typeConverters from '../utils/typeConverters';
|
||||
import FileConfigurationManager from './fileConfigurationManager';
|
||||
|
||||
@@ -86,12 +87,12 @@ class TypeScriptFormattingProvider implements vscode.DocumentRangeFormattingEdit
|
||||
|
||||
export function register(
|
||||
selector: DocumentSelector,
|
||||
modeId: string,
|
||||
language: LanguageDescription,
|
||||
client: ITypeScriptServiceClient,
|
||||
fileConfigurationManager: FileConfigurationManager
|
||||
) {
|
||||
return conditionalRegistration([
|
||||
requireConfiguration(modeId, 'format.enable'),
|
||||
requireConfiguration(language.id, 'format.enable'),
|
||||
], () => {
|
||||
const formattingProvider = new TypeScriptFormattingProvider(client, fileConfigurationManager);
|
||||
return vscode.Disposable.from(
|
||||
|
||||
@@ -8,6 +8,7 @@ import * as nls from 'vscode-nls';
|
||||
import { ITypeScriptServiceClient } from '../typescriptService';
|
||||
import { conditionalRegistration, requireConfiguration } from '../utils/dependentRegistration';
|
||||
import { DocumentSelector } from '../utils/documentSelector';
|
||||
import { LanguageDescription } from '../utils/languageDescription';
|
||||
import * as typeConverters from '../utils/typeConverters';
|
||||
import FileConfigurationManager from './fileConfigurationManager';
|
||||
|
||||
@@ -121,13 +122,13 @@ export function templateToSnippet(template: string): vscode.SnippetString {
|
||||
|
||||
export function register(
|
||||
selector: DocumentSelector,
|
||||
modeId: string,
|
||||
language: LanguageDescription,
|
||||
client: ITypeScriptServiceClient,
|
||||
fileConfigurationManager: FileConfigurationManager,
|
||||
|
||||
): vscode.Disposable {
|
||||
return conditionalRegistration([
|
||||
requireConfiguration(modeId, 'suggest.completeJSDocs')
|
||||
requireConfiguration(language.id, 'suggest.completeJSDocs')
|
||||
], () => {
|
||||
return vscode.languages.registerCompletionItemProvider(selector.syntax,
|
||||
new JsDocCompletionProvider(client, fileConfigurationManager),
|
||||
|
||||
@@ -10,6 +10,7 @@ import API from '../utils/api';
|
||||
import { Condition, conditionalRegistration, requireConfiguration, requireMinVersion } from '../utils/dependentRegistration';
|
||||
import { Disposable } from '../utils/dispose';
|
||||
import { DocumentSelector } from '../utils/documentSelector';
|
||||
import { LanguageDescription } from '../utils/languageDescription';
|
||||
import * as typeConverters from '../utils/typeConverters';
|
||||
|
||||
class TagClosing extends Disposable {
|
||||
@@ -156,12 +157,12 @@ function requireActiveDocument(
|
||||
|
||||
export function register(
|
||||
selector: DocumentSelector,
|
||||
modeId: string,
|
||||
language: LanguageDescription,
|
||||
client: ITypeScriptServiceClient,
|
||||
) {
|
||||
return conditionalRegistration([
|
||||
requireMinVersion(client, TagClosing.minVersion),
|
||||
requireConfiguration(modeId, 'autoClosingTags'),
|
||||
requireConfiguration(language.id, 'autoClosingTags'),
|
||||
requireActiveDocument(selector.syntax)
|
||||
], () => new TagClosing(client));
|
||||
}
|
||||
|
||||
@@ -60,9 +60,9 @@ export default class LanguageProvider extends Disposable {
|
||||
|
||||
await Promise.all([
|
||||
import('./languageFeatures/callHierarchy').then(provider => this._register(provider.register(selector, this.client))),
|
||||
import('./languageFeatures/codeLens/implementationsCodeLens').then(provider => this._register(provider.register(selector, this.description.id, this.client, cachedResponse))),
|
||||
import('./languageFeatures/codeLens/referencesCodeLens').then(provider => this._register(provider.register(selector, this.description.id, this.client, cachedResponse))),
|
||||
import('./languageFeatures/completions').then(provider => this._register(provider.register(selector, this.description.id, this.client, this.typingsStatus, this.fileConfigurationManager, this.commandManager, this.telemetryReporter, this.onCompletionAccepted))),
|
||||
import('./languageFeatures/codeLens/implementationsCodeLens').then(provider => this._register(provider.register(selector, this.description, this.client, cachedResponse))),
|
||||
import('./languageFeatures/codeLens/referencesCodeLens').then(provider => this._register(provider.register(selector, this.description, this.client, cachedResponse))),
|
||||
import('./languageFeatures/completions').then(provider => this._register(provider.register(selector, this.description, this.client, this.typingsStatus, this.fileConfigurationManager, this.commandManager, this.telemetryReporter, this.onCompletionAccepted))),
|
||||
import('./languageFeatures/definitions').then(provider => this._register(provider.register(selector, this.client))),
|
||||
import('./languageFeatures/directiveCommentCompletions').then(provider => this._register(provider.register(selector, this.client))),
|
||||
import('./languageFeatures/documentHighlight').then(provider => this._register(provider.register(selector, this.client))),
|
||||
@@ -70,10 +70,10 @@ export default class LanguageProvider extends Disposable {
|
||||
import('./languageFeatures/fileReferences').then(provider => this._register(provider.register(this.client, this.commandManager))),
|
||||
import('./languageFeatures/fixAll').then(provider => this._register(provider.register(selector, this.client, this.fileConfigurationManager, this.client.diagnosticsManager))),
|
||||
import('./languageFeatures/folding').then(provider => this._register(provider.register(selector, this.client))),
|
||||
import('./languageFeatures/formatting').then(provider => this._register(provider.register(selector, this.description.id, this.client, this.fileConfigurationManager))),
|
||||
import('./languageFeatures/formatting').then(provider => this._register(provider.register(selector, this.description, this.client, this.fileConfigurationManager))),
|
||||
import('./languageFeatures/hover').then(provider => this._register(provider.register(selector, this.client, this.fileConfigurationManager))),
|
||||
import('./languageFeatures/implementations').then(provider => this._register(provider.register(selector, this.client))),
|
||||
import('./languageFeatures/jsDocCompletions').then(provider => this._register(provider.register(selector, this.description.id, this.client, this.fileConfigurationManager))),
|
||||
import('./languageFeatures/jsDocCompletions').then(provider => this._register(provider.register(selector, this.description, this.client, this.fileConfigurationManager))),
|
||||
import('./languageFeatures/organizeImports').then(provider => this._register(provider.register(selector, this.client, this.commandManager, this.fileConfigurationManager, this.telemetryReporter))),
|
||||
import('./languageFeatures/quickFix').then(provider => this._register(provider.register(selector, this.client, this.fileConfigurationManager, this.commandManager, this.client.diagnosticsManager, this.telemetryReporter))),
|
||||
import('./languageFeatures/refactor').then(provider => this._register(provider.register(selector, this.client, this.fileConfigurationManager, this.commandManager, this.telemetryReporter))),
|
||||
@@ -82,7 +82,7 @@ export default class LanguageProvider extends Disposable {
|
||||
import('./languageFeatures/semanticTokens').then(provider => this._register(provider.register(selector, this.client))),
|
||||
import('./languageFeatures/signatureHelp').then(provider => this._register(provider.register(selector, this.client))),
|
||||
import('./languageFeatures/smartSelect').then(provider => this._register(provider.register(selector, this.client))),
|
||||
import('./languageFeatures/tagClosing').then(provider => this._register(provider.register(selector, this.description.id, this.client))),
|
||||
import('./languageFeatures/tagClosing').then(provider => this._register(provider.register(selector, this.description, this.client))),
|
||||
import('./languageFeatures/typeDefinitions').then(provider => this._register(provider.register(selector, this.client))),
|
||||
import('./languageFeatures/inlayHints').then(provider => this._register(provider.register(selector, this.description, this.client, this.fileConfigurationManager))),
|
||||
]);
|
||||
|
||||
@@ -84,12 +84,12 @@ export function requireMinVersion(
|
||||
}
|
||||
|
||||
export function requireConfiguration(
|
||||
language: string,
|
||||
section: string,
|
||||
configValue: string,
|
||||
) {
|
||||
return new Condition(
|
||||
() => {
|
||||
const config = vscode.workspace.getConfiguration(language, null);
|
||||
const config = vscode.workspace.getConfiguration(section, null);
|
||||
return !!config.get<boolean>(configValue);
|
||||
},
|
||||
vscode.workspace.onDidChangeConfiguration
|
||||
|
||||
Reference in New Issue
Block a user