This commit is contained in:
Henning Dieterichs 2024-06-06 15:39:47 +02:00 committed by Henning Dieterichs
parent 7496c883cc
commit b0c91dda31
3 changed files with 20 additions and 17 deletions

View file

@ -8,7 +8,7 @@ import { Emitter } from 'vs/base/common/event';
import { Disposable, DisposableStore, IDisposable, IReference, MutableDisposable } from 'vs/base/common/lifecycle';
import { IPosition, Position } from 'vs/editor/common/core/position';
import { Range } from 'vs/editor/common/core/range';
import { ILanguageConfigurationService } from 'vs/editor/common/languages/languageConfigurationRegistry';
import { ILanguageConfigurationService, LanguageConfigurationServiceChangeEvent } from 'vs/editor/common/languages/languageConfigurationRegistry';
import { ignoreBracketsInToken } from 'vs/editor/common/languages/supports';
import { LanguageBracketsConfiguration } from 'vs/editor/common/languages/supports/languageBracketsConfiguration';
import { BracketsUtils, RichEditBracket, RichEditBrackets } from 'vs/editor/common/languages/supports/richEditBrackets';
@ -36,19 +36,17 @@ export class BracketPairsTextModelPart extends Disposable implements IBracketPai
private readonly languageConfigurationService: ILanguageConfigurationService
) {
super();
this._register(
this.languageConfigurationService.onDidChange(e => {
if (!e.languageId || this.bracketPairsTree.value?.object.didLanguageChange(e.languageId)) {
this.bracketPairsTree.clear();
this.updateBracketPairsTree();
}
})
);
}
//#region TextModel events
public handleLanguageConfigurationServiceChange(e: LanguageConfigurationServiceChangeEvent): void {
if (!e.languageId || this.bracketPairsTree.value?.object.didLanguageChange(e.languageId)) {
this.bracketPairsTree.clear();
this.updateBracketPairsTree();
}
}
public handleDidChangeOptions(e: IModelOptionsChangedEvent): void {
this.bracketPairsTree.clear();
this.updateBracketPairsTree();

View file

@ -381,6 +381,11 @@ export class TextModel extends Disposable implements model.ITextModel, IDecorati
}));
this._languageService.requestRichLanguageFeatures(languageId);
this._register(this._languageConfigurationService.onDidChange(e => {
this._bracketPairs.handleLanguageConfigurationServiceChange(e);
this._tokenizationTextModelPart.handleLanguageConfigurationServiceChange(e);
}));
}
public override dispose(): void {

View file

@ -17,7 +17,7 @@ import { IWordAtPosition, getWordAtText } from 'vs/editor/common/core/wordHelper
import { StandardTokenType } from 'vs/editor/common/encodedTokenAttributes';
import { IBackgroundTokenizationStore, IBackgroundTokenizer, ILanguageIdCodec, IState, ITokenizationSupport, TokenizationRegistry } from 'vs/editor/common/languages';
import { ILanguageService } from 'vs/editor/common/languages/language';
import { ILanguageConfigurationService, ResolvedLanguageConfiguration } from 'vs/editor/common/languages/languageConfigurationRegistry';
import { ILanguageConfigurationService, LanguageConfigurationServiceChangeEvent, ResolvedLanguageConfiguration } from 'vs/editor/common/languages/languageConfigurationRegistry';
import { IAttachedView } from 'vs/editor/common/model';
import { BracketPairsTextModelPart } from 'vs/editor/common/model/bracketPairsTextModelPart/bracketPairsImpl';
import { AttachedViews, IAttachedViewState, TextModel } from 'vs/editor/common/model/textModel';
@ -56,12 +56,6 @@ export class TokenizationTextModelPart extends TextModelPart implements ITokeniz
) {
super();
this._register(this._languageConfigurationService.onDidChange(e => {
if (e.affects(this._languageId)) {
this._onDidChangeLanguageConfiguration.fire({});
}
}));
this._register(this.grammarTokens.onDidChangeTokens(e => {
this._emitModelTokensChangedEvent(e);
}));
@ -77,6 +71,12 @@ export class TokenizationTextModelPart extends TextModelPart implements ITokeniz
|| this._onDidChangeTokens.hasListeners());
}
public handleLanguageConfigurationServiceChange(e: LanguageConfigurationServiceChangeEvent): void {
if (e.affects(this._languageId)) {
this._onDidChangeLanguageConfiguration.fire({});
}
}
public handleDidChangeContent(e: IModelContentChangedEvent): void {
if (e.isFlush) {
this._semanticTokens.flush();