Add setting to hide active language button in the status bar (#33977)
Release Notes: - Added settings status_bar.show_active_language_button to show/hide the language button in the status bar. The motivation for this is visual, I have had zero issues with its functionality. The language switcher can still be accessed by the command palette, menu, or a keyboard shortcut. ------ This is my first Zed and first Rust PR, so criticism is very welcome. I know there has been discussion around how the status bar settings are structured and named, and I am happy to change it to whatever is best. I was also not sure what order to put it in in the settings default.json. Feedback welcome. Here is a picture of it in action:  --------- Co-authored-by: zumbalogy <3770982+zumbalogy@users.noreply.github.com> Co-authored-by: Kirill Bulatov <kirill@zed.dev>
This commit is contained in:
parent
0169bddb59
commit
2c7251e4f9
5 changed files with 57 additions and 1 deletions
|
@ -1238,6 +1238,11 @@
|
||||||
// 2. hour24
|
// 2. hour24
|
||||||
"hour_format": "hour12"
|
"hour_format": "hour12"
|
||||||
},
|
},
|
||||||
|
// Status bar-related settings.
|
||||||
|
"status_bar": {
|
||||||
|
// Whether to show the active language button in the status bar.
|
||||||
|
"active_language_button": true
|
||||||
|
},
|
||||||
// Settings specific to the terminal
|
// Settings specific to the terminal
|
||||||
"terminal": {
|
"terminal": {
|
||||||
// What shell to use when opening a terminal. May take 3 values:
|
// What shell to use when opening a terminal. May take 3 values:
|
||||||
|
|
|
@ -20,6 +20,7 @@ pub struct EditorSettings {
|
||||||
pub lsp_highlight_debounce: u64,
|
pub lsp_highlight_debounce: u64,
|
||||||
pub hover_popover_enabled: bool,
|
pub hover_popover_enabled: bool,
|
||||||
pub hover_popover_delay: u64,
|
pub hover_popover_delay: u64,
|
||||||
|
pub status_bar: StatusBar,
|
||||||
pub toolbar: Toolbar,
|
pub toolbar: Toolbar,
|
||||||
pub scrollbar: Scrollbar,
|
pub scrollbar: Scrollbar,
|
||||||
pub minimap: Minimap,
|
pub minimap: Minimap,
|
||||||
|
@ -125,6 +126,14 @@ pub struct JupyterContent {
|
||||||
pub enabled: Option<bool>,
|
pub enabled: Option<bool>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Copy, Clone, Default, Debug, Serialize, Deserialize, JsonSchema, PartialEq, Eq)]
|
||||||
|
pub struct StatusBar {
|
||||||
|
/// Whether to display the active language button in the status bar.
|
||||||
|
///
|
||||||
|
/// Default: true
|
||||||
|
pub active_language_button: bool,
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Copy, Clone, Debug, Serialize, Deserialize, JsonSchema, PartialEq, Eq)]
|
#[derive(Copy, Clone, Debug, Serialize, Deserialize, JsonSchema, PartialEq, Eq)]
|
||||||
pub struct Toolbar {
|
pub struct Toolbar {
|
||||||
pub breadcrumbs: bool,
|
pub breadcrumbs: bool,
|
||||||
|
@ -440,6 +449,8 @@ pub struct EditorSettingsContent {
|
||||||
///
|
///
|
||||||
/// Default: 300
|
/// Default: 300
|
||||||
pub hover_popover_delay: Option<u64>,
|
pub hover_popover_delay: Option<u64>,
|
||||||
|
/// Status bar related settings
|
||||||
|
pub status_bar: Option<StatusBarContent>,
|
||||||
/// Toolbar related settings
|
/// Toolbar related settings
|
||||||
pub toolbar: Option<ToolbarContent>,
|
pub toolbar: Option<ToolbarContent>,
|
||||||
/// Scrollbar related settings
|
/// Scrollbar related settings
|
||||||
|
@ -567,6 +578,15 @@ pub struct EditorSettingsContent {
|
||||||
pub lsp_document_colors: Option<DocumentColorsRenderMode>,
|
pub lsp_document_colors: Option<DocumentColorsRenderMode>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Status bar related settings
|
||||||
|
#[derive(Clone, Default, Serialize, Deserialize, JsonSchema, PartialEq, Eq)]
|
||||||
|
pub struct StatusBarContent {
|
||||||
|
/// Whether to display the active language button in the status bar.
|
||||||
|
///
|
||||||
|
/// Default: true
|
||||||
|
pub active_language_button: Option<bool>,
|
||||||
|
}
|
||||||
|
|
||||||
// Toolbar related settings
|
// Toolbar related settings
|
||||||
#[derive(Clone, Default, Serialize, Deserialize, JsonSchema, PartialEq, Eq)]
|
#[derive(Clone, Default, Serialize, Deserialize, JsonSchema, PartialEq, Eq)]
|
||||||
pub struct ToolbarContent {
|
pub struct ToolbarContent {
|
||||||
|
|
|
@ -1,8 +1,9 @@
|
||||||
use editor::Editor;
|
use editor::{Editor, EditorSettings};
|
||||||
use gpui::{
|
use gpui::{
|
||||||
Context, Entity, IntoElement, ParentElement, Render, Subscription, WeakEntity, Window, div,
|
Context, Entity, IntoElement, ParentElement, Render, Subscription, WeakEntity, Window, div,
|
||||||
};
|
};
|
||||||
use language::LanguageName;
|
use language::LanguageName;
|
||||||
|
use settings::Settings as _;
|
||||||
use ui::{Button, ButtonCommon, Clickable, FluentBuilder, LabelSize, Tooltip};
|
use ui::{Button, ButtonCommon, Clickable, FluentBuilder, LabelSize, Tooltip};
|
||||||
use workspace::{StatusItemView, Workspace, item::ItemHandle};
|
use workspace::{StatusItemView, Workspace, item::ItemHandle};
|
||||||
|
|
||||||
|
@ -39,6 +40,13 @@ impl ActiveBufferLanguage {
|
||||||
|
|
||||||
impl Render for ActiveBufferLanguage {
|
impl Render for ActiveBufferLanguage {
|
||||||
fn render(&mut self, _: &mut Window, cx: &mut Context<Self>) -> impl IntoElement {
|
fn render(&mut self, _: &mut Window, cx: &mut Context<Self>) -> impl IntoElement {
|
||||||
|
if !EditorSettings::get_global(cx)
|
||||||
|
.status_bar
|
||||||
|
.active_language_button
|
||||||
|
{
|
||||||
|
return div();
|
||||||
|
}
|
||||||
|
|
||||||
div().when_some(self.active_language.as_ref(), |el, active_language| {
|
div().when_some(self.active_language.as_ref(), |el, active_language| {
|
||||||
let active_language_text = if let Some(active_language_text) = active_language {
|
let active_language_text = if let Some(active_language_text) = active_language {
|
||||||
active_language_text.to_string()
|
active_language_text.to_string()
|
||||||
|
|
|
@ -1275,6 +1275,18 @@ Each option controls displaying of a particular toolbar element. If all elements
|
||||||
|
|
||||||
`boolean` values
|
`boolean` values
|
||||||
|
|
||||||
|
## Status Bar
|
||||||
|
|
||||||
|
- Description: Control various elements in the status bar. Note that some items in the status bar have their own settings set elsewhere.
|
||||||
|
- Setting: `status_bar`
|
||||||
|
- Default:
|
||||||
|
|
||||||
|
```json
|
||||||
|
"status_bar": {
|
||||||
|
"active_language_button": true,
|
||||||
|
},
|
||||||
|
```
|
||||||
|
|
||||||
## LSP
|
## LSP
|
||||||
|
|
||||||
- Description: Configuration for language servers.
|
- Description: Configuration for language servers.
|
||||||
|
|
|
@ -306,6 +306,17 @@ TBD: Centered layout related settings
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Status Bar
|
||||||
|
|
||||||
|
```json
|
||||||
|
"status_bar": {
|
||||||
|
// Show/hide a button that displays the active buffer's language.
|
||||||
|
// Clicking the button brings up the language selector.
|
||||||
|
// Defaults to true.
|
||||||
|
"active_language_button": true,
|
||||||
|
},
|
||||||
|
```
|
||||||
|
|
||||||
### Multibuffer
|
### Multibuffer
|
||||||
|
|
||||||
```json
|
```json
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue