Make reference links in md docs scroll to reference block instead

This commit is contained in:
Matt Bierner
2017-09-05 11:55:59 -07:00
parent b5d2081b3b
commit b96141c2fd
2 changed files with 13 additions and 3 deletions

View File

@@ -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

View File

@@ -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 });