hokein updated this revision to Diff 179082.
hokein added a comment.

Update the patch to reflect LSP file status latest change.


Repository:
  rCTE Clang Tools Extra

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D55374/new/

https://reviews.llvm.org/D55374

Files:
  clangd/clients/clangd-vscode/src/extension.ts


Index: clangd/clients/clangd-vscode/src/extension.ts
===================================================================
--- clangd/clients/clangd-vscode/src/extension.ts
+++ clangd/clients/clangd-vscode/src/extension.ts
@@ -18,6 +18,33 @@
                              void, void>('textDocument/switchSourceHeader');
 }
 
+class FileStatus {
+    private statuses = new Map<string, any>();
+    private readonly statusBarItem =
+        vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Left, 10);
+
+    onFileUpdated(fileStatus: any) {
+        const filePath = vscode.Uri.parse(fileStatus.uri);
+        this.statuses.set(filePath.fsPath, fileStatus);
+        this.updateStatus();
+    }
+
+    updateStatus() {
+        const path = vscode.window.activeTextEditor.document.fileName;
+        const status = this.statuses.get(path);
+        if (!status) {
+          this.statusBarItem.hide();
+          return;
+        }
+        this.statusBarItem.text = `clangd: ` + status.state;
+        this.statusBarItem.show();
+    }
+
+    dispose() {
+        this.statusBarItem.dispose();
+    }
+}
+
 /**
  *  this method is called when your extension is activate
  *  your extension is activated the very first time the command is executed
@@ -44,6 +71,7 @@
         synchronize: !syncFileEvents ? undefined : {
             fileEvents: vscode.workspace.createFileSystemWatcher(filePattern)
         },
+        initializationOptions: { clangdFileStatus: true },
         // Resolve symlinks for all files provided by clangd.
         // This is a workaround for a bazel + clangd issue - bazel produces a 
symlink tree to build in,
         // and when navigating to the included file, clangd passes its path 
inside the symlink tree
@@ -80,4 +108,13 @@
             vscode.Uri.parse(sourceUri));
         vscode.window.showTextDocument(doc);
       }));
+    const status = new FileStatus();
+    context.subscriptions.push(vscode.window.onDidChangeActiveTextEditor(() => 
{
+        status.updateStatus();
+    }));
+    clangdClient.onReady().then(() => {
+        clangdClient.onNotification(
+            'textDocument/clangd.fileStatus',
+            (fileStatus) => { status.onFileUpdated(fileStatus); });
+    })
 }


Index: clangd/clients/clangd-vscode/src/extension.ts
===================================================================
--- clangd/clients/clangd-vscode/src/extension.ts
+++ clangd/clients/clangd-vscode/src/extension.ts
@@ -18,6 +18,33 @@
                              void, void>('textDocument/switchSourceHeader');
 }
 
+class FileStatus {
+    private statuses = new Map<string, any>();
+    private readonly statusBarItem =
+        vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Left, 10);
+
+    onFileUpdated(fileStatus: any) {
+        const filePath = vscode.Uri.parse(fileStatus.uri);
+        this.statuses.set(filePath.fsPath, fileStatus);
+        this.updateStatus();
+    }
+
+    updateStatus() {
+        const path = vscode.window.activeTextEditor.document.fileName;
+        const status = this.statuses.get(path);
+        if (!status) {
+          this.statusBarItem.hide();
+          return;
+        }
+        this.statusBarItem.text = `clangd: ` + status.state;
+        this.statusBarItem.show();
+    }
+
+    dispose() {
+        this.statusBarItem.dispose();
+    }
+}
+
 /**
  *  this method is called when your extension is activate
  *  your extension is activated the very first time the command is executed
@@ -44,6 +71,7 @@
         synchronize: !syncFileEvents ? undefined : {
             fileEvents: vscode.workspace.createFileSystemWatcher(filePattern)
         },
+        initializationOptions: { clangdFileStatus: true },
         // Resolve symlinks for all files provided by clangd.
         // This is a workaround for a bazel + clangd issue - bazel produces a symlink tree to build in,
         // and when navigating to the included file, clangd passes its path inside the symlink tree
@@ -80,4 +108,13 @@
             vscode.Uri.parse(sourceUri));
         vscode.window.showTextDocument(doc);
       }));
+    const status = new FileStatus();
+    context.subscriptions.push(vscode.window.onDidChangeActiveTextEditor(() => {
+        status.updateStatus();
+    }));
+    clangdClient.onReady().then(() => {
+        clangdClient.onNotification(
+            'textDocument/clangd.fileStatus',
+            (fileStatus) => { status.onFileUpdated(fileStatus); });
+    })
 }
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to