Add setting for minimap on active editor only (#31390)
Release Notes: - Add a setting to show the minimap only on the current active editor (file) - This can be configured on `settings.json`: ```json { "minimap": { "display_in": "active_editor", // defaults to "all_editors" } } ``` - The minimap won't hide if you go from an editor pane to the terminal, the project panel, the search bar, etc. It will only hide if you go from one editor pane to another. Preview:  Only the active editor (left) displays the minimap.
This commit is contained in:
parent
a69ebf038a
commit
4bbb7b5c2f
3 changed files with 44 additions and 0 deletions
|
@ -400,6 +400,13 @@
|
|||
// 3. Never show the minimap:
|
||||
// "never" (default)
|
||||
"show": "never",
|
||||
// Where to show the minimap in the editor.
|
||||
// This setting can take two values:
|
||||
// 1. Show the minimap on the focused editor only:
|
||||
// "active_editor"
|
||||
// 2. Show the minimap on all open editors:
|
||||
// "all_editors" (default)
|
||||
"display_in": "all_editors",
|
||||
// When to show the minimap thumb.
|
||||
// This setting can take two values:
|
||||
// 1. Show the minimap thumb if the mouse is over the minimap:
|
||||
|
|
|
@ -130,6 +130,7 @@ pub struct Scrollbar {
|
|||
#[derive(Copy, Clone, Debug, Serialize, Deserialize, JsonSchema, PartialEq)]
|
||||
pub struct Minimap {
|
||||
pub show: ShowMinimap,
|
||||
pub display_in: DisplayIn,
|
||||
pub thumb: MinimapThumb,
|
||||
pub thumb_border: MinimapThumbBorder,
|
||||
pub current_line_highlight: Option<CurrentLineHighlight>,
|
||||
|
@ -140,6 +141,11 @@ impl Minimap {
|
|||
self.show != ShowMinimap::Never
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn on_active_editor(&self) -> bool {
|
||||
self.display_in == DisplayIn::ActiveEditor
|
||||
}
|
||||
|
||||
pub fn with_show_override(self) -> Self {
|
||||
Self {
|
||||
show: ShowMinimap::Always,
|
||||
|
@ -189,6 +195,19 @@ pub enum ShowMinimap {
|
|||
Never,
|
||||
}
|
||||
|
||||
/// Where to show the minimap in the editor.
|
||||
///
|
||||
/// Default: all_editors
|
||||
#[derive(Copy, Clone, Debug, Default, Serialize, Deserialize, JsonSchema, PartialEq, Eq)]
|
||||
#[serde(rename_all = "snake_case")]
|
||||
pub enum DisplayIn {
|
||||
/// Show on all open editors.
|
||||
#[default]
|
||||
AllEditors,
|
||||
/// Show the minimap on the active editor only.
|
||||
ActiveEditor,
|
||||
}
|
||||
|
||||
/// When to show the minimap thumb.
|
||||
///
|
||||
/// Default: always
|
||||
|
@ -573,6 +592,11 @@ pub struct MinimapContent {
|
|||
/// Default: never
|
||||
pub show: Option<ShowMinimap>,
|
||||
|
||||
/// Where to show the minimap in the editor.
|
||||
///
|
||||
/// Default: all_editors
|
||||
pub display_in: Option<DisplayIn>,
|
||||
|
||||
/// When to show the minimap thumb.
|
||||
///
|
||||
/// Default: always
|
||||
|
|
|
@ -1777,6 +1777,19 @@ impl EditorElement {
|
|||
|
||||
let minimap_settings = EditorSettings::get_global(cx).minimap;
|
||||
|
||||
if minimap_settings.on_active_editor() {
|
||||
let active_editor = self.editor.read(cx).workspace().and_then(|ws| {
|
||||
ws.read(cx)
|
||||
.active_pane()
|
||||
.read(cx)
|
||||
.active_item()
|
||||
.and_then(|i| i.act_as::<Editor>(cx))
|
||||
});
|
||||
if active_editor.is_some_and(|e| e != self.editor) {
|
||||
return None;
|
||||
}
|
||||
}
|
||||
|
||||
if !snapshot.mode.is_full()
|
||||
|| minimap_width.is_zero()
|
||||
|| matches!(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue