HTML language service extracted from VSCode to be reused, e.g in the Monaco editor.
The vscode-html-languageservice contains the language smarts behind the HTML editing experience of Visual Studio Code and the Monaco editor.
-
doComplete / doComplete2 (async) provide completion proposals for a given location.
-
setCompletionParticipants allows participant to provide suggestions for specific tokens.
-
doHover provides hover information at a given location.
-
format formats the code at the given range.
-
findDocumentLinks finds all links in the document.
-
findDocumentSymbols finds all the symbols in the document.
-
getFoldingRanges return folding ranges for the given document.
-
getSelectionRanges return the selection ranges for the given document. ...
For the complete API see htmlLanguageService.ts and htmlLanguageTypes.ts
The vscode-html-languageservice does not cover syntax highlighting. VS Code uses TextMate grammars for that, with a grammar that is maintained in https://github.com/textmate/html.tmbundle.
All HTML entities (elements, properties, etc) are sourced from https://github.com/microsoft/vscode-custom-data/tree/master/web-data and transpiled here. For adding or fixing existing properties' completion/hover description, please open PR there.
npm install --save vscode-html-languageservice
- clone this repo, run
npm i npm testto compile and run tests
How can I run and debug the service?
- open the folder in VSCode.
- set breakpoints, e.g. in
htmlCompletion.ts - run the Unit tests from the run viewlet and wait until a breakpoint is hit:

How can I run and debug the service inside an instance of VSCode?
- run VSCode out of sources setup as described here: https://github.com/Microsoft/vscode/wiki/How-to-Contribute
- link the folder of the
vscode-html-languageservicerepo tovscode/extensions/html-language-features/serverto run VSCode with the latest changes from that folder:- cd
vscode-html-languageservice,npm link - cd
vscode/extensions/html-language-features/server,npm link vscode-html-languageservice
- cd
- run VSCode out of source (
vscode/scripts/code.sh|bat) and open a.htmlfile - in VSCode window that is open on the
vscode-html-languageservicesources, run commandDebug: Attach to Node processand pick thecode-ossprocess with thehtml-language-featurespath
- set breakpoints, e.g. in
htmlCompletion.ts - in the instance run from sources, invoke code completion in the
.htmlfile
(MIT License)
Copyright 2016-2023, Microsoft
src/languageFacts/data/webCustomData.ts (shipped as lib/esm/languageFacts/data/webCustomData.ts and lib/umd/languageFacts/data/webCustomData.ts)
are built upon content from Mozilla Developer Network and distributed under CC BY-SA 2.5.