Clean up link provider

This commit is contained in:
Matt Bierner
2022-03-29 14:36:41 -07:00
parent 93aad560e1
commit 2783263582
4 changed files with 38 additions and 26 deletions

View File

@@ -77,12 +77,17 @@ function tryDecodeUriComponent(str: string): string {
export class MdPathCompletionProvider implements vscode.CompletionItemProvider {
public static register(selector: vscode.DocumentSelector, engine: MarkdownEngine): vscode.Disposable {
return vscode.languages.registerCompletionItemProvider(selector, new MdPathCompletionProvider(engine), '.', '/', '#');
public static register(
selector: vscode.DocumentSelector,
engine: MarkdownEngine,
linkProvider: MdLinkProvider,
): vscode.Disposable {
return vscode.languages.registerCompletionItemProvider(selector, new MdPathCompletionProvider(engine, linkProvider), '.', '/', '#');
}
constructor(
private readonly engine: MarkdownEngine,
private readonly linkProvider: MdLinkProvider,
) { }
public async provideCompletionItems(document: vscode.TextDocument, position: vscode.Position, _token: vscode.CancellationToken, _context: vscode.CompletionContext): Promise<vscode.CompletionItem[]> {
@@ -230,7 +235,7 @@ export class MdPathCompletionProvider implements vscode.CompletionItemProvider {
const insertionRange = new vscode.Range(context.linkTextStartPosition, position);
const replacementRange = new vscode.Range(insertionRange.start, position.translate({ characterDelta: context.linkSuffix.length }));
const definitions = MdLinkProvider.getDefinitions(document.getText(), document);
const definitions = this.linkProvider.getDefinitions(document.getText(), document);
for (const def of definitions) {
yield {
kind: vscode.CompletionItemKind.Reference,