Path: blob/main/extensions/markdown-language-features/src/extension.shared.ts
3291 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';2324export function activateShared(25context: vscode.ExtensionContext,26client: MdLanguageClient,27engine: MarkdownItEngine,28logger: ILogger,29contributions: MarkdownContributionProvider,30) {31const telemetryReporter = loadDefaultTelemetryReporter();32context.subscriptions.push(telemetryReporter);3334const cspArbiter = new ExtensionContentSecurityPolicyArbiter(context.globalState, context.workspaceState);35const commandManager = new CommandManager();3637const opener = new MdLinkOpener(client);3839const contentProvider = new MdDocumentRenderer(engine, context, cspArbiter, contributions, logger);40const previewManager = new MarkdownPreviewManager(contentProvider, logger, contributions, opener);41context.subscriptions.push(previewManager);4243context.subscriptions.push(registerMarkdownLanguageFeatures(client, commandManager, engine));44context.subscriptions.push(registerMarkdownCommands(commandManager, previewManager, telemetryReporter, cspArbiter, engine));4546context.subscriptions.push(vscode.workspace.onDidChangeConfiguration(() => {47previewManager.updateConfiguration();48}));49}5051function registerMarkdownLanguageFeatures(52client: MdLanguageClient,53commandManager: CommandManager,54parser: IMdParser,55): vscode.Disposable {56const selector: vscode.DocumentSelector = { language: 'markdown', scheme: '*' };57return vscode.Disposable.from(58// Language features59registerDiagnosticSupport(selector, commandManager),60registerFindFileReferenceSupport(commandManager, client),61registerResourceDropOrPasteSupport(selector, parser),62registerPasteUrlSupport(selector, parser),63registerUpdateLinksOnRename(client),64registerUpdatePastedLinks(selector, client),65);66}676869