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

Prototype allowing scripts to be contributed to markdown preview

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