summaryrefslogtreecommitdiff
path: root/tools/language-server/src/plugins/css/service.ts
diff options
context:
space:
mode:
Diffstat (limited to 'tools/language-server/src/plugins/css/service.ts')
-rw-r--r--tools/language-server/src/plugins/css/service.ts48
1 files changed, 48 insertions, 0 deletions
diff --git a/tools/language-server/src/plugins/css/service.ts b/tools/language-server/src/plugins/css/service.ts
new file mode 100644
index 000000000..78b11296e
--- /dev/null
+++ b/tools/language-server/src/plugins/css/service.ts
@@ -0,0 +1,48 @@
+import { getCSSLanguageService, getSCSSLanguageService, getLESSLanguageService, LanguageService, ICSSDataProvider } from 'vscode-css-languageservice';
+
+const customDataProvider: ICSSDataProvider = {
+ providePseudoClasses() {
+ return [];
+ },
+ provideProperties() {
+ return [];
+ },
+ provideAtDirectives() {
+ return [];
+ },
+ providePseudoElements() {
+ return [];
+ },
+};
+
+const [css, scss, less] = [getCSSLanguageService, getSCSSLanguageService, getLESSLanguageService].map((getService) =>
+ getService({
+ customDataProviders: [customDataProvider],
+ })
+);
+
+const langs = {
+ css,
+ scss,
+ less,
+};
+
+export function getLanguage(kind?: string) {
+ switch (kind) {
+ case 'scss':
+ case 'text/scss':
+ return 'scss' as const;
+ case 'less':
+ case 'text/less':
+ return 'less' as const;
+ case 'css':
+ case 'text/css':
+ default:
+ return 'css' as const;
+ }
+}
+
+export function getLanguageService(kind?: string): LanguageService {
+ const lang = getLanguage(kind);
+ return langs[lang];
+}