Experiment with switching markdown extension to use native privates

Let's try this out with one extension to start
This commit is contained in:
Matt Bierner
2026-03-10 23:13:16 -07:00
parent 6597286e32
commit 7df46143a1
43 changed files with 845 additions and 690 deletions

View File

@@ -119,36 +119,38 @@ export interface MarkdownContributionProvider {
class VSCodeExtensionMarkdownContributionProvider extends Disposable implements MarkdownContributionProvider {
private _contributions?: MarkdownContributions;
#contributions?: MarkdownContributions;
readonly #extensionContext: vscode.ExtensionContext;
public constructor(
private readonly _extensionContext: vscode.ExtensionContext,
extensionContext: vscode.ExtensionContext,
) {
super();
this.#extensionContext = extensionContext;
this._register(vscode.extensions.onDidChange(() => {
const currentContributions = this._getCurrentContributions();
const existingContributions = this._contributions || MarkdownContributions.Empty;
const currentContributions = this.#getCurrentContributions();
const existingContributions = this.#contributions || MarkdownContributions.Empty;
if (!MarkdownContributions.equal(existingContributions, currentContributions)) {
this._contributions = currentContributions;
this._onContributionsChanged.fire(this);
this.#contributions = currentContributions;
this.#onContributionsChanged.fire(this);
}
}));
}
public get extensionUri() {
return this._extensionContext.extensionUri;
return this.#extensionContext.extensionUri;
}
private readonly _onContributionsChanged = this._register(new vscode.EventEmitter<this>());
public readonly onContributionsChanged = this._onContributionsChanged.event;
readonly #onContributionsChanged = this._register(new vscode.EventEmitter<this>());
public readonly onContributionsChanged = this.#onContributionsChanged.event;
public get contributions(): MarkdownContributions {
this._contributions ??= this._getCurrentContributions();
return this._contributions;
this.#contributions ??= this.#getCurrentContributions();
return this.#contributions;
}
private _getCurrentContributions(): MarkdownContributions {
#getCurrentContributions(): MarkdownContributions {
return vscode.extensions.all
.map(MarkdownContributions.fromExtension)
.reduce(MarkdownContributions.merge, MarkdownContributions.Empty);