about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--editors/code/package.json13
-rw-r--r--editors/code/src/config.ts4
-rw-r--r--editors/code/src/ctx.ts6
3 files changed, 22 insertions, 1 deletions
diff --git a/editors/code/package.json b/editors/code/package.json
index 3ceec9edf4b..554b05c46c7 100644
--- a/editors/code/package.json
+++ b/editors/code/package.json
@@ -371,6 +371,19 @@
                     ],
                     "markdownDescription": "Problem matchers to use for `rust-analyzer.run` command, eg `[\"$rustc\", \"$rust-panic\"]`."
                 },
+                "rust-analyzer.statusBar.clickAction": {
+                    "type": "string",
+                    "enum": [
+                        "stopServer",
+                        "openLogs"
+                    ],
+                    "enumDescriptions": [
+                        "Stop Server",
+                        "Open Logs"
+                    ],
+                    "default": "openLogs",
+                    "markdownDescription": "Action to run when clicking the extension status bar item."
+                },
                 "rust-analyzer.server.path": {
                     "type": [
                         "null",
diff --git a/editors/code/src/config.ts b/editors/code/src/config.ts
index 9821aee6f92..987d936943a 100644
--- a/editors/code/src/config.ts
+++ b/editors/code/src/config.ts
@@ -329,6 +329,10 @@ export class Config {
     get showDependenciesExplorer() {
         return this.get<boolean>("showDependenciesExplorer");
     }
+
+    get statusBarClickAction() {
+        return this.get<string>("statusBar.clickAction");
+    }
 }
 
 // the optional `cb?` parameter is meant to be used to add additional
diff --git a/editors/code/src/ctx.ts b/editors/code/src/ctx.ts
index 904efa4d5eb..84d1ad98bd9 100644
--- a/editors/code/src/ctx.ts
+++ b/editors/code/src/ctx.ts
@@ -400,7 +400,11 @@ export class Ctx {
                 statusBar.tooltip.appendText(status.message ?? "Ready");
                 statusBar.color = undefined;
                 statusBar.backgroundColor = undefined;
-                statusBar.command = "rust-analyzer.openLogs";
+                if (this.config.statusBarClickAction === "stopServer") {
+                    statusBar.command = "rust-analyzer.stopServer";
+                } else {
+                    statusBar.command = "rust-analyzer.openLogs";
+                }
                 this.dependencies?.refresh();
                 break;
             case "warning":