提交 7bc40aac 编写于 作者: M Matt Bierner

Prototype allowing scripts to be contributed to markdown preview

上级 105e5f2e
......@@ -104,6 +104,20 @@ export function activate(context: vscode.ExtensionContext) {
}
}
let scripts = contributes['markdown.preview'] && contributes['markdown.preview'].scripts;
if (scripts) {
if (!Array.isArray(scripts)) {
scripts = [scripts];
}
for (const script of scripts) {
try {
contentProvider.addScript(resolveExtensionResources(extension, script));
} catch (e) {
// noop
}
}
}
if (contributes['markdownit.plugins']) {
extension.activate().then(() => {
if (extension.exports && extension.exports.extendMarkdownIt) {
......
......@@ -29,6 +29,7 @@ export class MDDocumentContentProvider implements vscode.TextDocumentContentProv
private _onDidChange = new vscode.EventEmitter<vscode.Uri>();
private _waiting: boolean = false;
private extraStyles: Array<vscode.Uri> = [];
private extraScripts: Array<vscode.Uri> = [];
constructor(
private engine: MarkdownEngine,
......@@ -36,6 +37,10 @@ export class MDDocumentContentProvider implements vscode.TextDocumentContentProv
private cspArbiter: ContentSecurityPolicyArbiter
) { }
public addScript(resource: vscode.Uri): void {
this.extraScripts.push(resource);
}
public addStyle(resource: vscode.Uri): void {
this.extraStyles.push(resource);
}
......@@ -110,7 +115,8 @@ export class MDDocumentContentProvider implements vscode.TextDocumentContentProv
}
private getScripts(nonce: string): string {
return [this.getMediaPath('main.js')]
const scripts = [this.getMediaPath('main.js')].concat(this.extraScripts.map(resource => resource.toString()));
return scripts
.map(source => `<script src="${source}" nonce="${nonce}"></script>`)
.join('\n');
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册