aboutsummaryrefslogtreecommitdiff
path: root/server/src/server.ts
diff options
context:
space:
mode:
Diffstat (limited to 'server/src/server.ts')
-rw-r--r--server/src/server.ts19
1 files changed, 16 insertions, 3 deletions
diff --git a/server/src/server.ts b/server/src/server.ts
index 93562d1..2b9e5bb 100644
--- a/server/src/server.ts
+++ b/server/src/server.ts
@@ -22,6 +22,7 @@ import {
} from 'vscode-languageserver-textdocument';
import WingDiagnostics from "./diagnostics";
import WingCompletion from "./completion";
+import {execFileSync} from "node:child_process";
// Create a connection for the server, using Node's IPC as a transport.
// Also include all preview / proposed LSP features.
@@ -131,19 +132,31 @@ documents.onDidClose(e => {
// The content of a text document has changed. This event is emitted
// when the text document first opened or when its content has changed.
documents.onDidChangeContent(change => {
+ document = change.document;
validateTextDocument(change.document);
});
let currentDocument: TextDocument;
+let results: any;
+let version: string;
+let document: TextDocument;
+
+setInterval(() => {
+ if (document) {
+ version = execFileSync("wing", [ "--version-creator" ]).toString().trim();
+ results = JSON.parse(execFileSync("wing", [ "--lint", "--base64", Buffer.from(document.getText()).toString("base64") ]).toString());
+ validateTextDocument(document);
+ }
+}, 1000);
async function validateTextDocument(textDocument: TextDocument): Promise<void> {
- currentDocument = textDocument;
+ currentDocument = document = textDocument;
// In this simple example we get the settings for every validate run.
const settings = await getDocumentSettings(textDocument.uri);
// The validator creates diagnostics for all uppercase words length 2 and more
- const diagnostics: Diagnostic[] = WingDiagnostics.run(textDocument);
+ const diagnostics: Diagnostic[] = WingDiagnostics.run(textDocument, version, results);
// Send the computed diagnostics to VSCode.
connection.sendDiagnostics({ uri: textDocument.uri, diagnostics });
@@ -156,7 +169,7 @@ connection.onDidChangeWatchedFiles(_change => {
// This handler provides the initial list of the completion items.
connection.onCompletion((_textDocumentPosition: TextDocumentPositionParams): CompletionItem[] => {
- return WingCompletion.run(_textDocumentPosition, currentDocument);
+ return WingCompletion.run(_textDocumentPosition, currentDocument, results);
});
// This handler resolves additional information for the item selected in