From 96bab444409d260508b5565b5decde60959cc3b1 Mon Sep 17 00:00:00 2001 From: worksofliam Date: Fri, 20 Dec 2024 11:27:56 -0500 Subject: [PATCH] Validate specific group when editing Signed-off-by: worksofliam --- src/language/providers/problemProvider.ts | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/language/providers/problemProvider.ts b/src/language/providers/problemProvider.ts index d9ea6955..9dc8f84a 100644 --- a/src/language/providers/problemProvider.ts +++ b/src/language/providers/problemProvider.ts @@ -68,19 +68,19 @@ export const problemProvider = [ workspace.onDidChangeTextDocument(e => { const isSql = e.document.languageId === `sql`; - if (isSql && checkOnChange()) { + if (isSql && checkOnChange() && e.contentChanges.length > 0) { if (currentTimeout) { clearTimeout(currentTimeout); } currentTimeout = setTimeout(() => { - validateSqlDocument(e.document); + validateSqlDocument(e.document, e.document.offsetAt(e.contentChanges[0].range.start)); }, getCheckerTimeout()); } }) ]; -async function validateSqlDocument(document: TextDocument) { +async function validateSqlDocument(document: TextDocument, specificStatement?: number) { const checker = SQLStatementChecker.get(); if (remoteAssistIsEnabled() && checker) { const content = document.getText(); @@ -92,12 +92,23 @@ async function validateSqlDocument(document: TextDocument) { for (const group of allGroups) { const range = getStatementRangeFromGroup(group); if (range) { + if (specificStatement) { + // If specificStatement is outline this range, continue + if (specificStatement <= range[0] || specificStatement >= range[1]) { + continue; + } + } + statementRanges.push(range); } } const sqlStatementContents = statementRanges.map(range => content.substring(range[0], range[1])); + const se = performance.now(); const syntaxChecked = await checker.checkMultipleStatements(sqlStatementContents); + const ee = performance.now(); + + console.log(`Syntax check took: ${ee - se}ms`); if (syntaxChecked) { if (syntaxChecked.length > 0) {