mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-02 01:25:39 -05:00
* Initial VS Code 1.21 file copy with patches * A few more merges * Post npm install * Fix batch of build breaks * Fix more build breaks * Fix more build errors * Fix more build breaks * Runtime fixes 1 * Get connection dialog working with some todos * Fix a few packaging issues * Copy several node_modules to package build to fix loader issues * Fix breaks from master * A few more fixes * Make tests pass * First pass of license header updates * Second pass of license header updates * Fix restore dialog issues * Remove add additional themes menu items * fix select box issues where the list doesn't show up * formatting * Fix editor dispose issue * Copy over node modules to correct location on all platforms
82 lines
2.3 KiB
TypeScript
82 lines
2.3 KiB
TypeScript
/*---------------------------------------------------------------------------------------------
|
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
|
*--------------------------------------------------------------------------------------------*/
|
|
|
|
import * as vscode from 'vscode';
|
|
import * as path from 'path';
|
|
|
|
import { MarkdownContentProvider } from './features/previewContentProvider';
|
|
import { MarkdownEngine } from './markdownEngine';
|
|
|
|
const resolveExtensionResources = (extension: vscode.Extension<any>, resourcePath: string): vscode.Uri => {
|
|
return vscode.Uri.file(path.join(extension.extensionPath, resourcePath))
|
|
.with({ scheme: 'vscode-extension-resource' });
|
|
};
|
|
|
|
|
|
export function loadMarkdownExtensions(
|
|
contentProvider: MarkdownContentProvider,
|
|
engine: MarkdownEngine
|
|
) {
|
|
for (const extension of vscode.extensions.all) {
|
|
const contributes = extension.packageJSON && extension.packageJSON.contributes;
|
|
if (!contributes) {
|
|
continue;
|
|
}
|
|
|
|
tryLoadPreviewStyles(contributes, contentProvider, extension);
|
|
tryLoadPreviewScripts(contributes, contentProvider, extension);
|
|
tryLoadMarkdownItPlugins(contributes, extension, engine);
|
|
}
|
|
}
|
|
|
|
function tryLoadMarkdownItPlugins(
|
|
contributes: any,
|
|
extension: vscode.Extension<any>,
|
|
engine: MarkdownEngine
|
|
) {
|
|
if (contributes['markdown.markdownItPlugins']) {
|
|
extension.activate().then(() => {
|
|
if (extension.exports && extension.exports.extendMarkdownIt) {
|
|
engine.addPlugin((md: any) => extension.exports.extendMarkdownIt(md));
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|
|
function tryLoadPreviewScripts(
|
|
contributes: any,
|
|
contentProvider: MarkdownContentProvider,
|
|
extension: vscode.Extension<any>
|
|
) {
|
|
const scripts = contributes['markdown.previewScripts'];
|
|
if (scripts && Array.isArray(scripts)) {
|
|
for (const script of scripts) {
|
|
try {
|
|
contentProvider.addScript(resolveExtensionResources(extension, script));
|
|
} catch (e) {
|
|
// noop
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
function tryLoadPreviewStyles(
|
|
contributes: any,
|
|
contentProvider: MarkdownContentProvider,
|
|
extension: vscode.Extension<any>
|
|
) {
|
|
const styles = contributes['markdown.previewStyles'];
|
|
if (styles && Array.isArray(styles)) {
|
|
for (const style of styles) {
|
|
try {
|
|
contentProvider.addStyle(resolveExtensionResources(extension, style));
|
|
} catch (e) {
|
|
// noop
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|