@@ -1238,6 +1238,11 @@
// 2. hour24
"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
"terminal": {
// 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 hover_popover_enabled: bool,
pub hover_popover_delay: u64,
+ pub status_bar: StatusBar,
pub toolbar: Toolbar,
pub scrollbar: Scrollbar,
pub minimap: Minimap,
@@ -125,6 +126,14 @@ pub struct JupyterContent {
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)]
pub struct Toolbar {
pub breadcrumbs: bool,
@@ -440,6 +449,8 @@ pub struct EditorSettingsContent {
///
/// Default: 300
pub hover_popover_delay: Option<u64>,
+ /// Status bar related settings
+ pub status_bar: Option<StatusBarContent>,
/// Toolbar related settings
pub toolbar: Option<ToolbarContent>,
/// Scrollbar related settings
@@ -567,6 +578,15 @@ pub struct EditorSettingsContent {
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
#[derive(Clone, Default, Serialize, Deserialize, JsonSchema, PartialEq, Eq)]
pub struct ToolbarContent {
@@ -1,8 +1,9 @@
-use editor::Editor;
+use editor::{Editor, EditorSettings};
use gpui::{
Context, Entity, IntoElement, ParentElement, Render, Subscription, WeakEntity, Window, div,
};
use language::LanguageName;
+use settings::Settings as _;
use ui::{Button, ButtonCommon, Clickable, FluentBuilder, LabelSize, Tooltip};
use workspace::{StatusItemView, Workspace, item::ItemHandle};
@@ -39,6 +40,13 @@ impl ActiveBufferLanguage {
impl Render for ActiveBufferLanguage {
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| {
let active_language_text = if let Some(active_language_text) = active_language {
active_language_text.to_string()
@@ -1275,6 +1275,18 @@ Each option controls displaying of a particular toolbar element. If all elements
`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
- 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
```json