11import * as cssLangService from 'vscode-css-languageservice' ;
22
3- const service = cssLangService . getCSSLanguageService ( ) ;
3+ const cssService = cssLangService . getCSSLanguageService ( ) ;
4+ const lessService = cssLangService . getLESSLanguageService ( ) ;
5+ const scssService = cssLangService . getSCSSLanguageService ( ) ;
46export const CSS_MODES = {
57 CSS : "css" ,
68 LESS : "less" ,
@@ -14,6 +16,17 @@ export const DiagnosticSeverity = {
1416 hint : 4
1517} ;
1618
19+ function _getLanguageServiceToUse ( cssMode ) {
20+ switch ( cssMode ) {
21+ case "less" : return lessService ;
22+ case "scss" : return scssService ;
23+ case "css" : return cssService ;
24+ default :
25+ console . error ( "Unknown language mode: " , cssMode , "passed to css language service" ) ;
26+ return cssService ;
27+ }
28+ }
29+
1730function getTextDocument ( text , languageID , filePath = "file://placeholder.css" ) {
1831 return cssLangService . TextDocument . create ( filePath , languageID , 1 , text ) ;
1932}
@@ -27,6 +40,7 @@ function getTextDocument(text, languageID, filePath = "file://placeholder.css")
2740 */
2841export function getAllSymbols ( text , cssMode , filePath ) {
2942 const textDocument = getTextDocument ( text , cssMode , filePath ) ;
43+ const service = _getLanguageServiceToUse ( cssMode ) ;
3044 const stylesheet = service . parseStylesheet ( textDocument ) ;
3145 const output = [ ] ;
3246 for ( let symbol of service . findDocumentSymbols ( textDocument , stylesheet ) ) {
@@ -81,6 +95,7 @@ export function getAllSymbols(text, cssMode, filePath) {
8195 */
8296export function validateCSS ( text , cssMode , filePath , lintSettings ) {
8397 const textDocument = getTextDocument ( text , cssMode , filePath ) ;
98+ const service = _getLanguageServiceToUse ( cssMode ) ;
8499 const stylesheet = service . parseStylesheet ( textDocument ) ;
85100 return service . doValidation ( textDocument , stylesheet , {
86101 validate : true ,
0 commit comments