mirror of
https://github.com/zed-industries/zed.git
synced 2024-12-26 06:22:42 +03:00
Fix scrollbar marker settings (#10530)
Zed displays scrollbar markers of three types: git diffs, background highlights and diagnostics. At the moment, the "background highlights" markers are displayed for all the supported highlights: - Occurences of the symbol under cursor. - Search results. - Scope boundaries (only works when a symbol is selected). - Active hover popover position. They all use the same color, which leads to confusing results. For instance, in the following case I expect to see markers for the `new_anchor` occurences in lines 43 and 47. But besides them, there're also scope-markers for `ScrollAnchor` initialization block in lines 46 and 49, which makes me think that there're four places where `new_anchor` appears. <img width="740" alt="zed-scrollbar-markers" src="https://github.com/zed-industries/zed/assets/2101250/78700e6b-fdd1-4c2f-beff-e564d8defc13"> Existing settings `selection` and `symbol_selection` in the `scrollbar` section [don't work as expected](https://github.com/zed-industries/zed/pull/10080#discussion_r1552325493), which increases confusion. This PR only leaves two types of bg-highlight-markers and provides dedicated settings for them: - Occurences of the symbol under cursor. Setting: `selected_symbol`, default is `true`. - Search results. Setting: `search_results`, default is `true`. The `selection` and `symbol_selection` settings are not used anymore. Release Notes: - Breaking changes. Settings `selection` and `symbol_selection` in the `scrollbar` section renamed to `search_results` and `selected_symbol` respectively. Fixed the effect of these settings on which markers are displayed on the scrollbar. Optionally, include screenshots / media showcasing your addition that can be included in the release notes. - N/A /cc @mrnugget
This commit is contained in:
parent
33b9aca090
commit
f3192b6fa6
@ -145,10 +145,10 @@
|
|||||||
"show": "auto",
|
"show": "auto",
|
||||||
// Whether to show git diff indicators in the scrollbar.
|
// Whether to show git diff indicators in the scrollbar.
|
||||||
"git_diff": true,
|
"git_diff": true,
|
||||||
// Whether to show selections in the scrollbar.
|
// Whether to show buffer search results in the scrollbar.
|
||||||
"selections": true,
|
"search_results": true,
|
||||||
// Whether to show symbols selections in the scrollbar.
|
// Whether to show selected symbol occurrences in the scrollbar.
|
||||||
"symbols_selections": true,
|
"selected_symbol": true,
|
||||||
// Whether to show diagnostic indicators in the scrollbar.
|
// Whether to show diagnostic indicators in the scrollbar.
|
||||||
"diagnostics": true
|
"diagnostics": true
|
||||||
},
|
},
|
||||||
|
@ -58,8 +58,8 @@ pub struct Toolbar {
|
|||||||
pub struct Scrollbar {
|
pub struct Scrollbar {
|
||||||
pub show: ShowScrollbar,
|
pub show: ShowScrollbar,
|
||||||
pub git_diff: bool,
|
pub git_diff: bool,
|
||||||
pub selections: bool,
|
pub selected_symbol: bool,
|
||||||
pub symbols_selections: bool,
|
pub search_results: bool,
|
||||||
pub diagnostics: bool,
|
pub diagnostics: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -194,14 +194,14 @@ pub struct ScrollbarContent {
|
|||||||
///
|
///
|
||||||
/// Default: true
|
/// Default: true
|
||||||
pub git_diff: Option<bool>,
|
pub git_diff: Option<bool>,
|
||||||
/// Whether to show buffer search result markers in the scrollbar.
|
/// Whether to show buffer search result indicators in the scrollbar.
|
||||||
///
|
///
|
||||||
/// Default: true
|
/// Default: true
|
||||||
pub selections: Option<bool>,
|
pub search_results: Option<bool>,
|
||||||
/// Whether to show symbols highlighted markers in the scrollbar.
|
/// Whether to show selected symbol occurrences in the scrollbar.
|
||||||
///
|
///
|
||||||
/// Default: true
|
/// Default: true
|
||||||
pub symbols_selections: Option<bool>,
|
pub selected_symbol: Option<bool>,
|
||||||
/// Whether to show diagnostic indicators in the scrollbar.
|
/// Whether to show diagnostic indicators in the scrollbar.
|
||||||
///
|
///
|
||||||
/// Default: true
|
/// Default: true
|
||||||
|
@ -965,11 +965,11 @@ impl EditorElement {
|
|||||||
// Git
|
// Git
|
||||||
(is_singleton && scrollbar_settings.git_diff && snapshot.buffer_snapshot.has_git_diffs())
|
(is_singleton && scrollbar_settings.git_diff && snapshot.buffer_snapshot.has_git_diffs())
|
||||||
||
|
||
|
||||||
// Selections
|
// Buffer Search Results
|
||||||
(is_singleton && scrollbar_settings.selections && editor.has_background_highlights::<BufferSearchHighlights>())
|
(is_singleton && scrollbar_settings.search_results && editor.has_background_highlights::<BufferSearchHighlights>())
|
||||||
||
|
||
|
||||||
// Symbols Selections
|
// Selected Symbol Occurrences
|
||||||
(is_singleton && scrollbar_settings.symbols_selections && (editor.has_background_highlights::<DocumentHighlightRead>() || editor.has_background_highlights::<DocumentHighlightWrite>()))
|
(is_singleton && scrollbar_settings.selected_symbol && (editor.has_background_highlights::<DocumentHighlightRead>() || editor.has_background_highlights::<DocumentHighlightWrite>()))
|
||||||
||
|
||
|
||||||
// Diagnostics
|
// Diagnostics
|
||||||
(is_singleton && scrollbar_settings.diagnostics && snapshot.buffer_snapshot.has_diagnostics())
|
(is_singleton && scrollbar_settings.diagnostics && snapshot.buffer_snapshot.has_diagnostics())
|
||||||
@ -2620,10 +2620,14 @@ impl EditorElement {
|
|||||||
for (background_highlight_id, (_, background_ranges)) in
|
for (background_highlight_id, (_, background_ranges)) in
|
||||||
background_highlights.iter()
|
background_highlights.iter()
|
||||||
{
|
{
|
||||||
if (*background_highlight_id
|
let is_search_highlights = *background_highlight_id
|
||||||
== TypeId::of::<BufferSearchHighlights>()
|
== TypeId::of::<BufferSearchHighlights>();
|
||||||
&& scrollbar_settings.selections)
|
let is_symbol_occurrences = *background_highlight_id
|
||||||
|| scrollbar_settings.symbols_selections
|
== TypeId::of::<DocumentHighlightRead>()
|
||||||
|
|| *background_highlight_id
|
||||||
|
== TypeId::of::<DocumentHighlightWrite>();
|
||||||
|
if (is_search_highlights && scrollbar_settings.search_results)
|
||||||
|
|| (is_symbol_occurrences && scrollbar_settings.selected_symbol)
|
||||||
{
|
{
|
||||||
let marker_row_ranges =
|
let marker_row_ranges =
|
||||||
background_ranges.into_iter().map(|range| {
|
background_ranges.into_iter().map(|range| {
|
||||||
|
@ -190,6 +190,102 @@ List of `string` values
|
|||||||
2. Position the dock to the right of the workspace like a side panel: `right`
|
2. Position the dock to the right of the workspace like a side panel: `right`
|
||||||
3. Position the dock full screen over the entire workspace: `expanded`
|
3. Position the dock full screen over the entire workspace: `expanded`
|
||||||
|
|
||||||
|
## Editor Scrollbar
|
||||||
|
|
||||||
|
- Description: Whether or not to show the editor scrollbar and various elements in it.
|
||||||
|
- Setting: `scrollbar`
|
||||||
|
- Default:
|
||||||
|
|
||||||
|
```json
|
||||||
|
"scrollbar": {
|
||||||
|
"show": "auto",
|
||||||
|
"git_diff": true,
|
||||||
|
"search_results": true,
|
||||||
|
"selected_symbol": true,
|
||||||
|
"diagnostics": true
|
||||||
|
},
|
||||||
|
```
|
||||||
|
|
||||||
|
### Show Mode
|
||||||
|
|
||||||
|
- Description: When to show the editor scrollbar.
|
||||||
|
- Setting: `show`
|
||||||
|
- Default: `auto`
|
||||||
|
|
||||||
|
**Options**
|
||||||
|
|
||||||
|
1. Show the scrollbar if there's important information or follow the system's configured behavior:
|
||||||
|
|
||||||
|
```json
|
||||||
|
"scrollbar": {
|
||||||
|
"show": "auto"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Match the system's configured behavior:
|
||||||
|
|
||||||
|
```json
|
||||||
|
"scrollbar": {
|
||||||
|
"show": "system"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
3. Always show the scrollbar:
|
||||||
|
|
||||||
|
```json
|
||||||
|
"scrollbar": {
|
||||||
|
"show": "always"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
4. Never show the scrollbar:
|
||||||
|
|
||||||
|
```json
|
||||||
|
"scrollbar": {
|
||||||
|
"show": "never"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Git Diff Indicators
|
||||||
|
|
||||||
|
- Description: Whether to show git diff indicators in the scrollbar.
|
||||||
|
- Setting: `git_diff`
|
||||||
|
- Default: `true`
|
||||||
|
|
||||||
|
**Options**
|
||||||
|
|
||||||
|
`boolean` values
|
||||||
|
|
||||||
|
### Search Results Indicators
|
||||||
|
|
||||||
|
- Description: Whether to show buffer search results in the scrollbar.
|
||||||
|
- Setting: `search_results`
|
||||||
|
- Default: `true`
|
||||||
|
|
||||||
|
**Options**
|
||||||
|
|
||||||
|
`boolean` values
|
||||||
|
|
||||||
|
### Selected Symbols Indicators
|
||||||
|
|
||||||
|
- Description: Whether to show selected symbol occurrences in the scrollbar.
|
||||||
|
- Setting: `selected_symbol`
|
||||||
|
- Default: `true`
|
||||||
|
|
||||||
|
**Options**
|
||||||
|
|
||||||
|
`boolean` values
|
||||||
|
|
||||||
|
### Diagnostics
|
||||||
|
|
||||||
|
- Description: Whether to show diagnostic indicators in the scrollbar.
|
||||||
|
- Setting: `diagnostics`
|
||||||
|
- Default: `true`
|
||||||
|
|
||||||
|
**Options**
|
||||||
|
|
||||||
|
`boolean` values
|
||||||
|
|
||||||
## Editor Toolbar
|
## Editor Toolbar
|
||||||
|
|
||||||
- Description: Whether or not to show various elements in the editor toolbar.
|
- Description: Whether or not to show various elements in the editor toolbar.
|
||||||
|
Loading…
Reference in New Issue
Block a user