diff --git a/extensions/markdown/media/main.js b/extensions/markdown/media/main.js index 012c444c3d7a17befffb8821f38d5ef8b3c54879..998afcfe83c314515b7a7de5c23678f84f23f9b3 100644 --- a/extensions/markdown/media/main.js +++ b/extensions/markdown/media/main.js @@ -296,7 +296,7 @@ const offset = event.pageY; const line = getEditorLineNumberForPageOffset(offset); if (!isNaN(line)) { - postCommand('_markdown.didClick', [settings.source, line]); + postMessage('didClick', { line }); } }); @@ -334,7 +334,7 @@ } else { const line = getEditorLineNumberForPageOffset(window.scrollY); if (!isNaN(line)) { - postMessage('revealLine', { source: settings.source, line }); + postMessage('revealLine', { line }); } } }, 50)); diff --git a/extensions/markdown/src/features/previewManager.ts b/extensions/markdown/src/features/previewManager.ts index 60fc3e317ac9356535946bcfcb13660832bd6a25..84a6c2a4c36ccee485afdbe62979ad5c22394a45 100644 --- a/extensions/markdown/src/features/previewManager.ts +++ b/extensions/markdown/src/features/previewManager.ts @@ -65,6 +65,10 @@ class MarkdownPreview { this.onDidScrollPreview(e.body.line); break; + case 'didClick': + this.onDidClickPreview(e.body.line); + break; + } }, null, this.disposables); @@ -269,6 +273,17 @@ class MarkdownPreview { vscode.TextEditorRevealType.AtTop); } } + + private async onDidClickPreview(line: number): Promise { + for (const visibleEditor of vscode.window.visibleTextEditors) { + if (this.isPreviewOf(visibleEditor.document.uri)) { + const editor = await vscode.window.showTextDocument(visibleEditor.document, visibleEditor.viewColumn); + const position = new vscode.Position(line, 0); + editor.selection = new vscode.Selection(position, position); + return; + } + } + } } export interface PreviewSettings {