diff options
author | 2021-03-25 10:38:17 -0500 | |
---|---|---|
committer | 2021-03-25 10:38:17 -0500 | |
commit | 18e7cc5af903543ac6f46780bfea67c13c6517df (patch) | |
tree | f61100a6adf3d4641cab89a23ac071268ed911e2 /vscode/packages/server/src | |
parent | 30cccdf7154b6470e876464da9e412af10894dd5 (diff) | |
download | astro-18e7cc5af903543ac6f46780bfea67c13c6517df.tar.gz astro-18e7cc5af903543ac6f46780bfea67c13c6517df.tar.zst astro-18e7cc5af903543ac6f46780bfea67c13c6517df.zip |
Scaffold language server (#25)
* wip: scaffold astro extension
* wip: scaffold astro extension
* WIP: vscode extension
* fix: autoCloseBefore
* chore: update package.json
* fix: use tsx instead of plain ts
* chore: remove dist files
* chore: remove comments
* chore: cleanup package build process, switch build to esbuild
* refactor: use shared esbuild config
Co-authored-by: Nate Moore <nate@skypack.dev>
Diffstat (limited to 'vscode/packages/server/src')
-rw-r--r-- | vscode/packages/server/src/index.ts | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/vscode/packages/server/src/index.ts b/vscode/packages/server/src/index.ts new file mode 100644 index 000000000..dda369929 --- /dev/null +++ b/vscode/packages/server/src/index.ts @@ -0,0 +1,32 @@ +import { getLanguageService } from 'vscode-html-languageservice'; +import { createConnection, ProposedFeatures, TextDocuments, TextDocumentSyncKind } from 'vscode-languageserver'; +import { TextDocument } from 'vscode-languageserver-textdocument'; + +let connection = createConnection(ProposedFeatures.all); +let documents: TextDocuments<TextDocument> = new TextDocuments(TextDocument); + +const htmlLanguageService = getLanguageService(); + +connection.onInitialize(() => { + return { + capabilities: { + textDocumentSync: TextDocumentSyncKind.Full, + completionProvider: { + resolveProvider: false, + }, + }, + }; +}); + +connection.onCompletion(async (textDocumentPosition, token) => { + console.log(token); + const document = documents.get(textDocumentPosition.textDocument.uri); + if (!document) { + return null; + } + + return htmlLanguageService.doComplete(document, textDocumentPosition.position, htmlLanguageService.parseHTMLDocument(document)); +}); + +documents.listen(connection); +connection.listen(); |