diff options
Diffstat (limited to 'tools/language-server/src/plugins/css/service.ts')
-rw-r--r-- | tools/language-server/src/plugins/css/service.ts | 48 |
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]; +} |