提交 0c8e31f1 编写于 作者: M Matt Bierner

Use memoize for documentSelector

上级 c9c2d9e8
...@@ -18,6 +18,7 @@ import DiagnosticsManager from './features/diagnostics'; ...@@ -18,6 +18,7 @@ import DiagnosticsManager from './features/diagnostics';
import { LanguageDescription } from './utils/languageDescription'; import { LanguageDescription } from './utils/languageDescription';
import * as fileSchemes from './utils/fileSchemes'; import * as fileSchemes from './utils/fileSchemes';
import { CachedNavTreeResponse } from './features/baseCodeLensProvider'; import { CachedNavTreeResponse } from './features/baseCodeLensProvider';
import { memoize } from './utils/memoize';
const validateSetting = 'validate.enable'; const validateSetting = 'validate.enable';
const foldingSetting = 'typescript.experimental.syntaxFolding'; const foldingSetting = 'typescript.experimental.syntaxFolding';
...@@ -31,8 +32,6 @@ export default class LanguageProvider { ...@@ -31,8 +32,6 @@ export default class LanguageProvider {
private _validate: boolean = true; private _validate: boolean = true;
private _documentSelector?: DocumentFilter[];
private readonly disposables: Disposable[] = []; private readonly disposables: Disposable[] = [];
private readonly versionDependentDisposables: Disposable[] = []; private readonly versionDependentDisposables: Disposable[] = [];
...@@ -82,16 +81,15 @@ export default class LanguageProvider { ...@@ -82,16 +81,15 @@ export default class LanguageProvider {
this.formattingOptionsManager.dispose(); this.formattingOptionsManager.dispose();
} }
@memoize
private get documentSelector(): DocumentFilter[] { private get documentSelector(): DocumentFilter[] {
if (!this._documentSelector) { const documentSelector = [];
this._documentSelector = []; for (const language of this.description.modeIds) {
for (const language of this.description.modeIds) { for (const scheme of fileSchemes.supportedSchemes) {
for (const scheme of fileSchemes.supportedSchemes) { documentSelector.push({ language, scheme });
this._documentSelector.push({ language, scheme });
}
} }
} }
return this._documentSelector; return documentSelector;
} }
private async registerProviders( private async registerProviders(
...@@ -196,7 +194,7 @@ export default class LanguageProvider { ...@@ -196,7 +194,7 @@ export default class LanguageProvider {
return !!base && base === this.description.configFile; return !!base && base === this.description.configFile;
} }
public get id(): string { private get id(): string {
return this.description.id; return this.description.id;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册