vscode-css-languageservice
Language services for CSS, LESS and SCSS
Why?
The vscode-css-languageservice contains the language smarts behind the CSS, LESS and SCSS editing experience of Visual Studio Code
and the Monaco editor.
- doValidation analyses an input string and returns syntax and lint errors.
 - doComplete provides completion proposals for a given location.
 - doHover provides a hover text for a given location.
 - findDefinition finds the definition of the symbol at the given location.
 - findReferences finds all references to the symbol at the given location.
 - findDocumentHighlights finds all symbols connected to the given location.
 - findDocumentSymbols provides all symbols in the given document
 - doCodeActions evaluates code actions for the given location, typically to fix a problem.
 - findColorSymbols evaluates all color symbols in the given document
 - doRename renames all symbols connected to the given location.
 - getFoldingRanges returns folding ranges in the given document.
 
Installation
npm install --save vscode-css-languageservice
API
export interface LanguageService {
	configure(raw: LanguageSettings): void;
	doValidation(document: TextDocument, stylesheet: Stylesheet, documentSettings?: LanguageSettings): Diagnostic[];
	parseStylesheet(document: TextDocument): Stylesheet;
	doComplete(document: TextDocument, position: Position, stylesheet: Stylesheet): CompletionList;
	setCompletionParticipants(registeredCompletionParticipants: ICompletionParticipant[]): void;
	doHover(document: TextDocument, position: Position, stylesheet: Stylesheet): Hover, null;
	findDefinition(document: TextDocument, position: Position, stylesheet: Stylesheet): Location, null;
	findReferences(document: TextDocument, position: Position, stylesheet: Stylesheet): Location[];
	findDocumentHighlights(document: TextDocument, position: Position, stylesheet: Stylesheet): DocumentHighlight[];
	findDocumentSymbols(document: TextDocument, stylesheet: Stylesheet): SymbolInformation[];
	doCodeActions(document: TextDocument, range: Range, context: CodeActionContext, stylesheet: Stylesheet): Command[];
	doCodeActions2(document: TextDocument, range: Range, context: CodeActionContext, stylesheet: Stylesheet): CodeAction[];
	findDocumentColors(document: TextDocument, stylesheet: Stylesheet): ColorInformation[];
	getColorPresentations(document: TextDocument, stylesheet: Stylesheet, color: Color, range: Range): ColorPresentation[];
	doRename(document: TextDocument, position: Position, newName: string, stylesheet: Stylesheet): WorkspaceEdit;
	getFoldingRanges(document: TextDocument, context?: { rangeLimit?: number; }): FoldingRange[];
	getSelectionRanges(document: TextDocument, positions: Position[], stylesheet: Stylesheet): SelectionRange[];
}
export interface LanguageSettings {
	validate?: boolean;
	lint?: any;
}
Development
Note: All CSS entites (properties, at-rules, etc) are sourced from https://github.com/microsoft/vscode-custom-data/tree/master/web-data and transpiled here. For adding new property or fixing existing properties' completion/hover description, please open PR there).
How can I run and debug this node module?
- clone, npm install
 - open the folder in VSCode.
 - set breakpoints, e.g. in 
cssCompletion.ts - run JUnit tests from the debug viewlet and wait until a breakpoint is hit:

 
In VSCode:
- run VSCode out of sources as described here: https://github.com/Microsoft/vscode/wiki/How-to-Contribute
- in the instance run from sources open a 
.cssfile 
 - in the instance run from sources open a 
 - open a VSCode on the VSCode source
- run command 
Debug: Attach to Node processand pick the process with thecss-language-featurespath - Set a breakpoint in 
extensions/css-language-features/server/node_modules/vscode-css-languageservice/lib/umd/services/cssCompletion.js 
 - run command 
 - in the instance run from sources invoke code completion in the .css file
 - use 
yarn link vscode-css-languageserviceinextensions/css-language-features/serverto run VSCode with your changes tovscode-css-languageservice 
License
(MIT License)
Copyright 2016, 2019 Microsoft
With the exceptions of build/mdn-documentation.js, which is built upon content from Mozilla Developer Network
and distributed under CC BY-SA 2.5.