More adoption of language configuration service.

This commit is contained in:
Henning Dieterichs
2021-12-08 16:28:42 +01:00
parent 37f23f60e4
commit afaa9ac84e
18 changed files with 131 additions and 186 deletions

View File

@@ -12,7 +12,7 @@ import { CancellationToken } from 'vs/base/common/cancellation';
import { Position as EditorPosition } from 'vs/editor/common/core/position';
import { Range as EditorRange, IRange } from 'vs/editor/common/core/range';
import { ExtHostContext, MainThreadLanguageFeaturesShape, ExtHostLanguageFeaturesShape, MainContext, IExtHostContext, ILanguageConfigurationDto, IRegExpDto, IIndentationRuleDto, IOnEnterRuleDto, ILocationDto, IWorkspaceSymbolDto, reviveWorkspaceEditDto, IDocumentFilterDto, IDefinitionLinkDto, ISignatureHelpProviderMetadataDto, ILinkDto, ICallHierarchyItemDto, ISuggestDataDto, ICodeActionDto, ISuggestDataDtoField, ISuggestResultDtoField, ICodeActionProviderMetadataDto, ILanguageWordDefinitionDto, IdentifiableInlineCompletions, IdentifiableInlineCompletion, ITypeHierarchyItemDto } from '../common/extHost.protocol';
import { LanguageConfigurationRegistry } from 'vs/editor/common/modes/languageConfigurationRegistry';
import { ILanguageConfigurationService, LanguageConfigurationRegistry } from 'vs/editor/common/modes/languageConfigurationRegistry';
import { LanguageConfiguration, IndentationRule, OnEnterRule } from 'vs/editor/common/modes/languageConfiguration';
import { ILanguageService } from 'vs/editor/common/services/languageService';
import { extHostNamedCustomer } from 'vs/workbench/api/common/extHostCustomers';
@@ -34,15 +34,16 @@ export class MainThreadLanguageFeatures implements MainThreadLanguageFeaturesSha
constructor(
extHostContext: IExtHostContext,
@ILanguageService languageService: ILanguageService,
@ILanguageConfigurationService languageConfigurationService: ILanguageConfigurationService
) {
this._proxy = extHostContext.getProxy(ExtHostContext.ExtHostLanguageFeatures);
this._languageService = languageService;
if (this._languageService) {
const updateAllWordDefinitions = () => {
const langWordPairs = LanguageConfigurationRegistry.getWordDefinitions();
let wordDefinitionDtos: ILanguageWordDefinitionDto[] = [];
for (const [languageId, wordDefinition] of langWordPairs) {
for (const languageId of languageService.getRegisteredLanguageIds()) {
const wordDefinition = languageConfigurationService.getLanguageConfiguration(languageId).getWordDefinition();
wordDefinitionDtos.push({
languageId: languageId,
regexSource: wordDefinition.source,
@@ -51,13 +52,17 @@ export class MainThreadLanguageFeatures implements MainThreadLanguageFeaturesSha
}
this._proxy.$setWordDefinitions(wordDefinitionDtos);
};
LanguageConfigurationRegistry.onDidChange((e) => {
const wordDefinition = LanguageConfigurationRegistry.getWordDefinition(e.languageId);
this._proxy.$setWordDefinitions([{
languageId: e.languageId,
regexSource: wordDefinition.source,
regexFlags: wordDefinition.flags
}]);
languageConfigurationService.onDidChange((e) => {
if (!e.languageId) {
updateAllWordDefinitions();
} else {
const wordDefinition = languageConfigurationService.getLanguageConfiguration(e.languageId).getWordDefinition();
this._proxy.$setWordDefinitions([{
languageId: e.languageId,
regexSource: wordDefinition.source,
regexFlags: wordDefinition.flags
}]);
}
});
updateAllWordDefinitions();
}