Unnamed repository; edit this file 'description' to name the repository.
-rw-r--r--editors/code/src/commands.ts8
-rw-r--r--editors/code/src/ctx.ts34
-rw-r--r--editors/code/src/main.ts1
3 files changed, 31 insertions, 12 deletions
diff --git a/editors/code/src/commands.ts b/editors/code/src/commands.ts
index 70b91fe7dc..f4a4579a92 100644
--- a/editors/code/src/commands.ts
+++ b/editors/code/src/commands.ts
@@ -93,6 +93,14 @@ export function triggerParameterHints(_: CtxInit): Cmd {
};
}
+export function openLogs(ctx: CtxInit): Cmd {
+ return async () => {
+ if (ctx.client.outputChannel) {
+ ctx.client.outputChannel.show();
+ }
+ };
+}
+
export function matchingBrace(ctx: CtxInit): Cmd {
return async () => {
const editor = ctx.activeRustEditor;
diff --git a/editors/code/src/ctx.ts b/editors/code/src/ctx.ts
index e2a30e0cc4..1708d47cee 100644
--- a/editors/code/src/ctx.ts
+++ b/editors/code/src/ctx.ts
@@ -282,18 +282,18 @@ export class Ctx {
setServerStatus(status: ServerStatusParams | { health: "stopped" }) {
let icon = "";
const statusBar = this.statusBar;
+ statusBar.tooltip = new vscode.MarkdownString("", true);
+ statusBar.tooltip.isTrusted = true;
switch (status.health) {
case "ok":
- statusBar.tooltip = (status.message ?? "Ready") + "\nClick to stop server.";
- statusBar.command = "rust-analyzer.stopServer";
+ statusBar.tooltip.appendText(status.message ?? "Ready");
statusBar.color = undefined;
statusBar.backgroundColor = undefined;
break;
case "warning":
- statusBar.tooltip =
- (status.message ? status.message + "\n" : "") + "Click to reload.";
-
- statusBar.command = "rust-analyzer.reloadWorkspace";
+ if (status.message) {
+ statusBar.tooltip.appendText(status.message);
+ }
statusBar.color = new vscode.ThemeColor("statusBarItem.warningForeground");
statusBar.backgroundColor = new vscode.ThemeColor(
"statusBarItem.warningBackground"
@@ -301,22 +301,32 @@ export class Ctx {
icon = "$(warning) ";
break;
case "error":
- statusBar.tooltip =
- (status.message ? status.message + "\n" : "") + "Click to reload.";
-
- statusBar.command = "rust-analyzer.reloadWorkspace";
+ if (status.message) {
+ statusBar.tooltip.appendText(status.message);
+ }
statusBar.color = new vscode.ThemeColor("statusBarItem.errorForeground");
statusBar.backgroundColor = new vscode.ThemeColor("statusBarItem.errorBackground");
icon = "$(error) ";
break;
case "stopped":
- statusBar.tooltip = "Server is stopped.\nClick to start.";
- statusBar.command = "rust-analyzer.startServer";
+ statusBar.tooltip.appendText("Server is stopped");
+ statusBar.tooltip.appendMarkdown(
+ "\n\n[Start server](command:rust-analyzer.startServer)"
+ );
statusBar.color = undefined;
statusBar.backgroundColor = undefined;
statusBar.text = `$(stop-circle) rust-analyzer`;
return;
}
+ if (statusBar.tooltip.value) {
+ statusBar.tooltip.appendText("\n\n");
+ }
+ statusBar.tooltip.appendMarkdown("[Stop server](command:rust-analyzer.stopServer)");
+ statusBar.tooltip.appendMarkdown(
+ "\n\n[Reload Workspace](command:rust-analyzer.reloadWorkspace)"
+ );
+ statusBar.tooltip.appendMarkdown("\n\n[Restart server](command:rust-analyzer.startServer)");
+ statusBar.tooltip.appendMarkdown("\n\n[Open logs](command:rust-analyzer.openLogs)");
if (!status.quiescent) icon = "$(sync~spin) ";
statusBar.text = `${icon}rust-analyzer`;
}
diff --git a/editors/code/src/main.ts b/editors/code/src/main.ts
index 1eb01f30c1..8a2412af84 100644
--- a/editors/code/src/main.ts
+++ b/editors/code/src/main.ts
@@ -188,5 +188,6 @@ function createCommands(): Record<string, CommandFactory> {
runSingle: { enabled: commands.runSingle },
showReferences: { enabled: commands.showReferences },
triggerParameterHints: { enabled: commands.triggerParameterHints },
+ openLogs: { enabled: commands.openLogs },
};
}