Open excerpt on double click in multibuffer by default. (#9196)
Closes https://github.com/zed-industries/zed/issues/5275 Double click with `alt` modifier pressed will do the regular word selection. Adds a setting to disable this behavior and instead select a word, as in the regular buffer. ``` // What to do when multibuffer is double clicked in some of its excerpts // (parts of singleton buffers). // May take 2 values: // 1. Behave as a regular buffer and select the whole word. // "double_click_in_multibuffer": "select" // 2. Open the excerpt clicked as a new buffer in the new tab (default). // "double_click_in_multibuffer": "open", // For the case of "open", regular selection behavior can be achieved by holding `alt` when double clicking. "double_click_in_multibuffer": "open", ``` Release Notes: - Made multibuffer to open excerpts in new tabs on double click by default (changing settings or keeping alt restores the word selection behavior). ([5275](https://github.com/zed-industries/zed/issues/5275))
This commit is contained in:
parent
25c471f9e4
commit
02dcdd0228
3 changed files with 50 additions and 2 deletions
|
@ -3,7 +3,7 @@ use crate::{
|
|||
BlockContext, BlockStyle, DisplaySnapshot, FoldStatus, HighlightedChunk, ToDisplayPoint,
|
||||
TransformBlock,
|
||||
},
|
||||
editor_settings::ShowScrollbar,
|
||||
editor_settings::{DoubleClickInMultibuffer, ShowScrollbar},
|
||||
git::{diff_hunk_to_display, DisplayDiffHunk},
|
||||
hover_popover::{
|
||||
self, hover_at, HOVER_POPOVER_GAP, MIN_POPOVER_CHARACTER_WIDTH, MIN_POPOVER_LINE_HEIGHT,
|
||||
|
@ -392,7 +392,7 @@ impl EditorElement {
|
|||
}
|
||||
|
||||
let mut click_count = event.click_count;
|
||||
let modifiers = event.modifiers;
|
||||
let mut modifiers = event.modifiers;
|
||||
|
||||
if gutter_hitbox.is_hovered(cx) {
|
||||
click_count = 3; // Simulate triple-click when clicking the gutter to select lines
|
||||
|
@ -400,6 +400,25 @@ impl EditorElement {
|
|||
return;
|
||||
}
|
||||
|
||||
if click_count == 2 {
|
||||
match EditorSettings::get_global(cx).double_click_in_multibuffer {
|
||||
DoubleClickInMultibuffer::Select => {
|
||||
// do nothing special on double click, all selection logic is below
|
||||
}
|
||||
DoubleClickInMultibuffer::Open => {
|
||||
if modifiers.alt {
|
||||
// if double click is made with alt, pretend it's a regular double click without opening and alt,
|
||||
// and run the selection logic.
|
||||
modifiers.alt = false;
|
||||
} else {
|
||||
// if double click is made without alt, open the corresponding excerp
|
||||
editor.open_excerpts(&OpenExcerpts, cx);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let point_for_position =
|
||||
position_map.point_for_position(text_hitbox.bounds, event.position);
|
||||
let position = point_for_position.previous_valid;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue