summaryrefslogtreecommitdiff
path: root/vscode/packages/server/src
diff options
context:
space:
mode:
authorGravatar Nate Moore <natemoo-re@users.noreply.github.com> 2021-03-25 10:38:17 -0500
committerGravatar GitHub <noreply@github.com> 2021-03-25 10:38:17 -0500
commit18e7cc5af903543ac6f46780bfea67c13c6517df (patch)
treef61100a6adf3d4641cab89a23ac071268ed911e2 /vscode/packages/server/src
parent30cccdf7154b6470e876464da9e412af10894dd5 (diff)
downloadastro-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.ts32
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();