Merge pull request #18722 from markmurphydev/status_bar_settings

Rename `rust-analyzer.statusBar.documentSelector` to `showStatusBar`, add "always" and "never" options.
This commit is contained in:
Lukas Wirth 2024-12-24 14:12:32 +00:00 committed by GitHub
commit 4c0569b244
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 64 additions and 37 deletions

View file

@ -13,6 +13,13 @@ export type RunnableEnvCfgItem = {
};
export type RunnableEnvCfg = Record<string, string> | RunnableEnvCfgItem[];
type ShowStatusBar =
| "always"
| "never"
| {
documentSelector: vscode.DocumentSelector;
};
export class Config {
readonly extensionId = "rust-lang.rust-analyzer";
configureLang: vscode.Disposable | undefined;
@ -348,8 +355,8 @@ export class Config {
return this.get<string>("statusBar.clickAction");
}
get statusBarDocumentSelector() {
return this.get<vscode.DocumentSelector>("statusBar.documentSelector");
get statusBarShowStatusBar() {
return this.get<ShowStatusBar>("statusBar.showStatusBar");
}
get initializeStopped() {

View file

@ -480,14 +480,19 @@ export class Ctx implements RustAnalyzerExtensionApi {
}
private updateStatusBarVisibility(editor: vscode.TextEditor | undefined) {
const documentSelector = this.config.statusBarDocumentSelector;
if (documentSelector != null) {
const showStatusBar = this.config.statusBarShowStatusBar;
if (showStatusBar == null || showStatusBar === "never") {
this.statusBar.hide();
} else if (showStatusBar === "always") {
this.statusBar.show();
} else {
const documentSelector = showStatusBar.documentSelector;
if (editor != null && vscode.languages.match(documentSelector, editor.document) > 0) {
this.statusBar.show();
return;
} else {
this.statusBar.hide();
}
}
this.statusBar.hide();
}
pushExtCleanup(d: Disposable) {