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
5240 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
import { markdownLanguageIds } from './util/file';
25
26
export function activateShared(
27
context: vscode.ExtensionContext,
28
client: MdLanguageClient,
29
engine: MarkdownItEngine,
30
logger: ILogger,
31
contributions: MarkdownContributionProvider,
32
) {
33
const telemetryReporter = loadDefaultTelemetryReporter();
34
context.subscriptions.push(telemetryReporter);
35
36
const cspArbiter = new ExtensionContentSecurityPolicyArbiter(context.globalState, context.workspaceState);
37
const commandManager = new CommandManager();
38
39
const opener = new MdLinkOpener(client);
40
41
const contentProvider = new MdDocumentRenderer(engine, context, cspArbiter, contributions, logger);
42
const previewManager = new MarkdownPreviewManager(contentProvider, logger, contributions, opener);
43
context.subscriptions.push(previewManager);
44
45
context.subscriptions.push(registerMarkdownLanguageFeatures(client, commandManager, engine));
46
context.subscriptions.push(registerMarkdownCommands(commandManager, previewManager, telemetryReporter, cspArbiter, engine));
47
48
context.subscriptions.push(vscode.workspace.onDidChangeConfiguration(() => {
49
previewManager.updateConfiguration();
50
}));
51
}
52
53
function registerMarkdownLanguageFeatures(
54
client: MdLanguageClient,
55
commandManager: CommandManager,
56
parser: IMdParser,
57
): vscode.Disposable {
58
const selector: vscode.DocumentSelector = markdownLanguageIds;
59
return vscode.Disposable.from(
60
// Language features
61
registerDiagnosticSupport(selector, commandManager),
62
registerFindFileReferenceSupport(commandManager, client),
63
registerResourceDropOrPasteSupport(selector, parser),
64
registerPasteUrlSupport(selector, parser),
65
registerUpdateLinksOnRename(client),
66
registerUpdatePastedLinks(selector, client),
67
);
68
}
69
70