diff --git a/extensions/markdown/src/documentLinkProvider.ts b/extensions/markdown/src/documentLinkProvider.ts index c87486f0204..5f6da674c78 100644 --- a/extensions/markdown/src/documentLinkProvider.ts +++ b/extensions/markdown/src/documentLinkProvider.ts @@ -52,11 +52,11 @@ export default class LinkProvider implements vscode.DocumentLinkProvider { const base = path.dirname(document.uri.fsPath); const text = document.getText(); - return this.privateInlineLinks(text, document, base) + return this.providerInlineLinks(text, document, base) .concat(this.provideReferenceLinks(text, document, base)); } - private privateInlineLinks( + private providerInlineLinks( text: string, document: vscode.TextDocument, base: string @@ -108,7 +108,7 @@ export default class LinkProvider implements vscode.DocumentLinkProvider { if (link) { results.push(new vscode.DocumentLink( new vscode.Range(linkStart, linkEnd), - normalizeLink(document, link.link, base))); + vscode.Uri.parse(`command:_markdown.moveCursorToPosition?${encodeURIComponent(JSON.stringify([link.linkRange.start.line, link.linkRange.start.character]))}`))); } } catch (e) { // noop diff --git a/extensions/markdown/src/extension.ts b/extensions/markdown/src/extension.ts index d6dc45c7227..2dd53b296d7 100644 --- a/extensions/markdown/src/extension.ts +++ b/extensions/markdown/src/extension.ts @@ -102,6 +102,16 @@ export function activate(context: vscode.ExtensionContext) { context.subscriptions.push(vscode.commands.registerCommand('markdown.showPreviewToSide', uri => showPreview(cspArbiter, uri, true))); context.subscriptions.push(vscode.commands.registerCommand('markdown.showSource', showSource)); + context.subscriptions.push(vscode.commands.registerCommand('_markdown.moveCursorToPosition', (line: number, character: number) => { + if (!vscode.window.activeTextEditor) { + return; + } + const position = new vscode.Position(line, character); + const selection = new vscode.Selection(position, position); + vscode.window.activeTextEditor.revealRange(selection); + vscode.window.activeTextEditor.selection = selection; + })); + context.subscriptions.push(vscode.commands.registerCommand('_markdown.revealLine', (uri, line) => { const sourceUri = vscode.Uri.parse(decodeURIComponent(uri)); logger.log('revealLine', { uri, sourceUri: sourceUri.toString(), line });