/
index.ts
41 lines (39 loc) · 1.26 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
import { languageModule as svelteLanguageModule } from '@volar-examples/svelte-language-core';
import useTsPlugin from '@volar-plugins/typescript';
import { createLanguageServer, LanguageServerInitializationOptions, LanguageServerPlugin } from '@volar/language-server/node';
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 },
],
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.getCompilationSettings(),
host.getVueCompilationSettings(),
);
return [
...vueLanguageModules,
svelteLanguageModule,
];
},
getServicePlugins() {
return [
useTsPlugin(),
];
},
};
};
createLanguageServer([plugin]);