diff options
Diffstat (limited to 'server/src/server.ts')
-rw-r--r-- | server/src/server.ts | 19 |
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 |