/
index.ts
69 lines (67 loc) · 2.04 KB
/
index.ts
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
import { languageModule as svelteLanguageModule } from '@volar-examples/svelte-language-core';
import useTsPlugin from '@volar-plugins/typescript';
import { createLanguageServer, LanguageModule, LanguageServerInitializationOptions, LanguageServerPlugin } from '@volar/language-server/node';
import * as shared from '@volar/shared';
import * as vue from '@volar/vue-language-core';
const plugin: LanguageServerPlugin<LanguageServerInitializationOptions, vue.LanguageServiceHost> = () => {
return {
extraFileExtensions: [
{ extension: 'vue', isMixedContent: true, scriptKind: 7 },
{ extension: 'svelte', isMixedContent: true, scriptKind: 7 },
],
semanticService: {
resolveLanguageServiceHost(ts, sys, tsConfig, host) {
let vueOptions: vue.VueCompilerOptions = {};
if (typeof tsConfig === 'string') {
vueOptions = vue.createParsedCommandLine(ts, sys, tsConfig, []).vueOptions;
}
return {
...host,
getVueCompilationSettings: () => vueOptions,
};
},
getLanguageModules(host) {
const vueLanguageModules = vue.createLanguageModules(
host.getTypeScriptModule(),
host.getCurrentDirectory(),
host.getCompilationSettings(),
host.getVueCompilationSettings(),
);
return [
...vueLanguageModules,
svelteLanguageModule,
];
},
getServicePlugins() {
return [
useTsPlugin(),
];
},
},
syntacticService: {
getLanguageModules(ts, env) {
const vueLanguagePlugins = vue.getDefaultVueLanguagePlugins(ts, shared.getPathOfUri(env.rootUri.toString()), {}, {}, []);
const vueLanguageModule: LanguageModule = {
createFile(fileName, snapshot) {
if (fileName.endsWith('.vue')) {
return new vue.VueFile(fileName, snapshot, ts, vueLanguagePlugins);
}
},
updateFile(sourceFile: vue.VueFile, snapshot) {
sourceFile.update(snapshot);
},
};
return [
vueLanguageModule,
svelteLanguageModule,
];
},
getServicePlugins() {
return [
useTsPlugin(),
];
}
},
};
};
createLanguageServer([plugin]);