From 7075821a2bccda8f54bf5c4b65135a40450cdfff Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Wed, 2 Dec 2015 17:31:30 +0100 Subject: [PATCH] adopt `isTooLargeForHavingAMode` in language feature registry --- .../common/modes/languageFeatureRegistry.ts | 88 ++++++++++--------- 1 file changed, 47 insertions(+), 41 deletions(-) diff --git a/src/vs/editor/common/modes/languageFeatureRegistry.ts b/src/vs/editor/common/modes/languageFeatureRegistry.ts index cf7141c8943..e23597a4bdb 100644 --- a/src/vs/editor/common/modes/languageFeatureRegistry.ts +++ b/src/vs/editor/common/modes/languageFeatureRegistry.ts @@ -45,7 +45,7 @@ export default class LanguageFeatureRegistry { }; this._entries.push(entry); - this._candidate = undefined; + this._lastCandidate = undefined; this._onDidChange.fire(this._entries.length); return { @@ -54,7 +54,7 @@ export default class LanguageFeatureRegistry { let idx = this._entries.indexOf(entry); if (idx >= 0) { this._entries.splice(idx, 1); - this._candidate = undefined; + this._lastCandidate = undefined; this._onDidChange.fire(this._entries.length); entry = undefined; } @@ -67,21 +67,25 @@ export default class LanguageFeatureRegistry { return this.all(model).length > 0; } - all(model: IModel): T[]{ - let result: T[] = []; - if (model) { - this._updateScores(model); - // from registry - for (let entry of this._entries) { - if (entry._score > 0) { - result.push(entry.provider); - } - } - // from mode - if (model.getMode() && model.getMode()[this._supportName]) { - result.push(model.getMode()[this._supportName]); + all(model: IModel): T[] { + if (!model || model.isTooLargeForHavingAMode()) { + return []; + } + + this._updateScores(model); + const result: T[] = []; + + // (1) from registry + for (let entry of this._entries) { + if (entry._score > 0) { + result.push(entry.provider); } } + // (2) from mode + if (model.getMode() && model.getMode()[this._supportName]) { + result.push(model.getMode()[this._supportName]); + } + return result; } @@ -110,37 +114,39 @@ export default class LanguageFeatureRegistry { } private _orderedEntries(model: IModel): Entry[] { - let result: Entry[] = []; - if (model) { - if (this._updateScores(model)) { - this._sortByScore(); - } + if (!model || model.isTooLargeForHavingAMode()) { + return []; + } + const result: Entry[] = []; - // from registry - for (let entry of this._entries) { - if (entry._score > 0) { - result.push(entry); - } + if (this._updateScores(model)) { + this._sortByScore(); + } + + // (1) from registry + for (let entry of this._entries) { + if (entry._score > 0) { + result.push(entry); } + } - // from mode - if (model.getMode() && model.getMode()[this._supportName]) { + // (2) from mode + if (model.getMode() && model.getMode()[this._supportName]) { - let entry: Entry = { - selector: undefined, - provider: model.getMode()[this._supportName], - _score: .5, - _time: 0 - }; + let entry: Entry = { + selector: undefined, + provider: model.getMode()[this._supportName], + _score: .5, + _time: 0 + }; - let idx = binarySearch(result, entry, LanguageFeatureRegistry._compareByScoreAndTime); - result.splice(idx < 0 ? ~idx : idx, 0, entry); - } + let idx = binarySearch(result, entry, LanguageFeatureRegistry._compareByScoreAndTime); + result.splice(idx < 0 ? ~idx : idx, 0, entry); } return result; } - private _candidate: { uri: string; language: string; }; + private _lastCandidate: { uri: string; language: string; }; private _updateScores(model: IModel): boolean { @@ -149,15 +155,15 @@ export default class LanguageFeatureRegistry { language: model.getModeId() }; - if (this._candidate - && this._candidate.language === candidate.language - && this._candidate.uri === candidate.uri) { + if (this._lastCandidate + && this._lastCandidate.language === candidate.language + && this._lastCandidate.uri === candidate.uri) { // nothing has changed return; } - this._candidate = candidate; + this._lastCandidate = candidate; for (let entry of this._entries) { entry._score = score(entry.selector, model.getAssociatedResource(), model.getModeId()); -- GitLab