-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathextension.ts
More file actions
105 lines (96 loc) · 3.18 KB
/
extension.ts
File metadata and controls
105 lines (96 loc) · 3.18 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
import * as vscode from "vscode";
import { SUPPORTED_LANGS, SUPPORTED_MODULES } from "./config";
import Cache from "./libs/cache";
import loadCaches from "./libs/loadCaches";
import CheckDocument from "./libs/checkDocument";
import { registerTriggerOnEdit } from "./libs/processConfig";
import CssModuleDependencyCache from "./libs/cssModuleDependencyCache";
import CompletionItemProvider from "./providers/completionProvider";
import {
ScriptDefinitionProvider,
ModuleDefinitionProvider as ModuleDefinitionProvider,
} from "./providers/definitionProvider";
import {
ModulesRenameProvider,
ScriptsRenameProvider,
} from "./providers/renameProvider";
export async function activate(context: vscode.ExtensionContext) {
const diagnosticCollection =
vscode.languages.createDiagnosticCollection("cssModules");
CheckDocument.diagnosticCollection = diagnosticCollection;
Cache.context = context;
const loaded = await Cache.loadCache();
if (!loaded) {
await CssModuleDependencyCache.populateCacheFromWorkspace();
}
loadCaches();
const files = vscode.workspace.textDocuments;
for (const file of files) {
CheckDocument.push(await vscode.workspace.openTextDocument(file.uri));
}
vscode.workspace.onDidOpenTextDocument((document) =>
CheckDocument.push(document)
);
registerTriggerOnEdit((e) => {
CheckDocument.push(e.document);
});
// Commands
const resetCacheCommand = vscode.commands.registerCommand(
"css-scss-modules-intellisense.resetCache",
async () => {
return vscode.window.withProgress(
{
location: vscode.ProgressLocation.Window,
title: "Resetting CSS Modules Cache...",
},
async () => {
try {
await Cache.clearCache();
await CssModuleDependencyCache.populateCacheFromWorkspace();
vscode.window.showInformationMessage("Cache has been reset");
return true;
} catch (e) {
if (e instanceof vscode.CancellationError) {
vscode.window.showWarningMessage("Cache reset was cancelled.");
} else {
vscode.window.showErrorMessage(`Cache reset failed: ${e}`);
}
return false;
}
}
);
}
);
// Completion Provider
const completionProvider = vscode.languages.registerCompletionItemProvider(
SUPPORTED_LANGS,
new CompletionItemProvider(),
"." // trigger on dot
);
// Definition Provider
const scriptDefinitionProvider = vscode.languages.registerDefinitionProvider(
SUPPORTED_LANGS,
new ScriptDefinitionProvider()
);
const moduleDefinitionProvider = vscode.languages.registerDefinitionProvider(
SUPPORTED_MODULES,
new ModuleDefinitionProvider()
);
// RenameProvider
const scriptsRenameProvider = vscode.languages.registerRenameProvider(
SUPPORTED_LANGS,
new ScriptsRenameProvider()
);
const modulesRenameProvider = vscode.languages.registerRenameProvider(
SUPPORTED_MODULES,
new ModulesRenameProvider()
);
context.subscriptions.push(
resetCacheCommand,
completionProvider,
moduleDefinitionProvider,
scriptDefinitionProvider,
modulesRenameProvider,
scriptsRenameProvider
);
}