Path: blob/main/extensions/markdown-language-features/src/extension.shared.ts
5240 views
/*---------------------------------------------------------------------------------------------1* Copyright (c) Microsoft Corporation. All rights reserved.2* Licensed under the MIT License. See License.txt in the project root for license information.3*--------------------------------------------------------------------------------------------*/45import * as vscode from 'vscode';6import { MdLanguageClient } from './client/client';7import { CommandManager } from './commandManager';8import { registerMarkdownCommands } from './commands/index';9import { registerPasteUrlSupport } from './languageFeatures/copyFiles/pasteUrlProvider';10import { registerResourceDropOrPasteSupport } from './languageFeatures/copyFiles/dropOrPasteResource';11import { registerDiagnosticSupport } from './languageFeatures/diagnostics';12import { registerFindFileReferenceSupport } from './languageFeatures/fileReferences';13import { registerUpdateLinksOnRename } from './languageFeatures/linkUpdater';14import { ILogger } from './logging';15import { IMdParser, MarkdownItEngine } from './markdownEngine';16import { MarkdownContributionProvider } from './markdownExtensions';17import { MdDocumentRenderer } from './preview/documentRenderer';18import { MarkdownPreviewManager } from './preview/previewManager';19import { ExtensionContentSecurityPolicyArbiter } from './preview/security';20import { loadDefaultTelemetryReporter } from './telemetryReporter';21import { MdLinkOpener } from './util/openDocumentLink';22import { registerUpdatePastedLinks } from './languageFeatures/updateLinksOnPaste';23import { markdownLanguageIds } from './util/file';2425export function activateShared(26context: vscode.ExtensionContext,27client: MdLanguageClient,28engine: MarkdownItEngine,29logger: ILogger,30contributions: MarkdownContributionProvider,31) {32const telemetryReporter = loadDefaultTelemetryReporter();33context.subscriptions.push(telemetryReporter);3435const cspArbiter = new ExtensionContentSecurityPolicyArbiter(context.globalState, context.workspaceState);36const commandManager = new CommandManager();3738const opener = new MdLinkOpener(client);3940const contentProvider = new MdDocumentRenderer(engine, context, cspArbiter, contributions, logger);41const previewManager = new MarkdownPreviewManager(contentProvider, logger, contributions, opener);42context.subscriptions.push(previewManager);4344context.subscriptions.push(registerMarkdownLanguageFeatures(client, commandManager, engine));45context.subscriptions.push(registerMarkdownCommands(commandManager, previewManager, telemetryReporter, cspArbiter, engine));4647context.subscriptions.push(vscode.workspace.onDidChangeConfiguration(() => {48previewManager.updateConfiguration();49}));50}5152function registerMarkdownLanguageFeatures(53client: MdLanguageClient,54commandManager: CommandManager,55parser: IMdParser,56): vscode.Disposable {57const selector: vscode.DocumentSelector = markdownLanguageIds;58return vscode.Disposable.from(59// Language features60registerDiagnosticSupport(selector, commandManager),61registerFindFileReferenceSupport(commandManager, client),62registerResourceDropOrPasteSupport(selector, parser),63registerPasteUrlSupport(selector, parser),64registerUpdateLinksOnRename(client),65registerUpdatePastedLinks(selector, client),66);67}686970