From bdd6dd82f840d52b006798eef43a2cec7225676c Mon Sep 17 00:00:00 2001 From: Nacho Cordon Date: Fri, 1 Aug 2025 10:51:52 +0100 Subject: [PATCH 1/2] Adds building button to the extension --- packages/language-server/src/linting.ts | 2 ++ packages/language-server/src/server.ts | 4 +++ packages/vscode-extension/src/extension.ts | 30 ++++++++++++++++++++++ 3 files changed, 36 insertions(+) diff --git a/packages/language-server/src/linting.ts b/packages/language-server/src/linting.ts index 823b2a703..e4bd2b79e 100644 --- a/packages/language-server/src/linting.ts +++ b/packages/language-server/src/linting.ts @@ -45,6 +45,7 @@ export async function setLintWorker( async function rawLintDocument( document: TextDocument, sendDiagnostics: (diagnostics: Diagnostic[]) => void, + notifySemanticAnalysisDone: (query: string) => Promise, neo4j: Neo4jSchemaPoller, ) { const query = document.getText(); @@ -83,6 +84,7 @@ async function rawLintDocument( symbolTables: result.symbolTables, }); } + await notifySemanticAnalysisDone(query); sendDiagnostics(positionSafeResult); } catch (err) { diff --git a/packages/language-server/src/server.ts b/packages/language-server/src/server.ts index 0c8107580..26083623a 100644 --- a/packages/language-server/src/server.ts +++ b/packages/language-server/src/server.ts @@ -42,6 +42,10 @@ async function lintSingleDocument(document: TextDocument): Promise { diagnostics, }); }, + async (query: string) => + await connection.sendNotification('semanticAnalysisDone', { + query: query, + }), neo4jSchemaPoller, ); } else { diff --git a/packages/vscode-extension/src/extension.ts b/packages/vscode-extension/src/extension.ts index dfbf9a696..c240bd58b 100644 --- a/packages/vscode-extension/src/extension.ts +++ b/packages/vscode-extension/src/extension.ts @@ -28,6 +28,11 @@ export const linterStatusBarItem = window.createStatusBarItem( StatusBarAlignment.Right, ); +const buildingStatusBarItem = window.createStatusBarItem( + StatusBarAlignment.Left, + -100, +); + export async function activate(context: ExtensionContext) { // The server is implemented in node const runServer = context.asAbsolutePath( @@ -96,6 +101,31 @@ export async function activate(context: ExtensionContext) { context.subscriptions.push(watcher); } + + context.subscriptions.push(buildingStatusBarItem); + + workspace.onDidChangeTextDocument((event) => { + if (event.document === window.activeTextEditor?.document) { + showBuildingIcon(); + } + }); + + client.onNotification('semanticAnalysisDone', (params) => { + const query = (params as { query: string }).query; + if (query === window.activeTextEditor?.document.getText()) { + hideBuildingIcon(); + } + }); +} + +function showBuildingIcon() { + buildingStatusBarItem.text = '$(loading~spin) Building...'; + buildingStatusBarItem.tooltip = 'Build in progress'; + buildingStatusBarItem.show(); +} + +function hideBuildingIcon() { + buildingStatusBarItem.hide(); } export async function deactivate(): Promise | undefined { From 4c26828b240364ca049aeee18d24b72e61287532 Mon Sep 17 00:00:00 2001 From: Nacho Cordon Date: Fri, 1 Aug 2025 11:03:27 +0100 Subject: [PATCH 2/2] Adds changelog --- packages/vscode-extension/CHANGELOG.md | 3 +++ packages/vscode-extension/package.json | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/vscode-extension/CHANGELOG.md b/packages/vscode-extension/CHANGELOG.md index c0f52b4ab..70c96e71b 100644 --- a/packages/vscode-extension/CHANGELOG.md +++ b/packages/vscode-extension/CHANGELOG.md @@ -1,5 +1,8 @@ # neo4j-for-vscode +## 1.14.0 +- Adds Building... button to the bottom panel for when the syntax errors are still being computed. + ## 1.13.0 - Adjusts linting automatically depending on the neo4j version. - Updates grammar and semantic analysis diff --git a/packages/vscode-extension/package.json b/packages/vscode-extension/package.json index 0691698c0..7470ed48e 100644 --- a/packages/vscode-extension/package.json +++ b/packages/vscode-extension/package.json @@ -6,7 +6,7 @@ "publisher": "neo4j-extensions", "author": "Neo4j Inc.", "license": "Apache-2.0", - "version": "1.13.0", + "version": "1.14.0", "preview": false, "categories": [ "Programming Languages",