Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/extensions/markdown-language-features/src/extension.shared.ts
3291 views
1
/*---------------------------------------------------------------------------------------------
2
* Copyright (c) Microsoft Corporation. All rights reserved.
3
* Licensed under the MIT License. See License.txt in the project root for license information.
4
*--------------------------------------------------------------------------------------------*/
5
6
import * as vscode from 'vscode';
7
import { MdLanguageClient } from './client/client';
8
import { CommandManager } from './commandManager';
9
import { registerMarkdownCommands } from './commands/index';
10
import { registerPasteUrlSupport } from './languageFeatures/copyFiles/pasteUrlProvider';
11
import { registerResourceDropOrPasteSupport } from './languageFeatures/copyFiles/dropOrPasteResource';
12
import { registerDiagnosticSupport } from './languageFeatures/diagnostics';
13
import { registerFindFileReferenceSupport } from './languageFeatures/fileReferences';
14
import { registerUpdateLinksOnRename } from './languageFeatures/linkUpdater';
15
import { ILogger } from './logging';
16
import { IMdParser, MarkdownItEngine } from './markdownEngine';
17
import { MarkdownContributionProvider } from './markdownExtensions';
18
import { MdDocumentRenderer } from './preview/documentRenderer';
19
import { MarkdownPreviewManager } from './preview/previewManager';
20
import { ExtensionContentSecurityPolicyArbiter } from './preview/security';
21
import { loadDefaultTelemetryReporter } from './telemetryReporter';
22
import { MdLinkOpener } from './util/openDocumentLink';
23
import { registerUpdatePastedLinks } from './languageFeatures/updateLinksOnPaste';
24
25
export function activateShared(
26
context: vscode.ExtensionContext,
27
client: MdLanguageClient,
28
engine: MarkdownItEngine,
29
logger: ILogger,
30
contributions: MarkdownContributionProvider,
31
) {
32
const telemetryReporter = loadDefaultTelemetryReporter();
33
context.subscriptions.push(telemetryReporter);
34
35
const cspArbiter = new ExtensionContentSecurityPolicyArbiter(context.globalState, context.workspaceState);
36
const commandManager = new CommandManager();
37
38
const opener = new MdLinkOpener(client);
39
40
const contentProvider = new MdDocumentRenderer(engine, context, cspArbiter, contributions, logger);
41
const previewManager = new MarkdownPreviewManager(contentProvider, logger, contributions, opener);
42
context.subscriptions.push(previewManager);
43
44
context.subscriptions.push(registerMarkdownLanguageFeatures(client, commandManager, engine));
45
context.subscriptions.push(registerMarkdownCommands(commandManager, previewManager, telemetryReporter, cspArbiter, engine));
46
47
context.subscriptions.push(vscode.workspace.onDidChangeConfiguration(() => {
48
previewManager.updateConfiguration();
49
}));
50
}
51
52
function registerMarkdownLanguageFeatures(
53
client: MdLanguageClient,
54
commandManager: CommandManager,
55
parser: IMdParser,
56
): vscode.Disposable {
57
const selector: vscode.DocumentSelector = { language: 'markdown', scheme: '*' };
58
return vscode.Disposable.from(
59
// Language features
60
registerDiagnosticSupport(selector, commandManager),
61
registerFindFileReferenceSupport(commandManager, client),
62
registerResourceDropOrPasteSupport(selector, parser),
63
registerPasteUrlSupport(selector, parser),
64
registerUpdateLinksOnRename(client),
65
registerUpdatePastedLinks(selector, client),
66
);
67
}
68
69