mirror of
https://github.com/herdrdev/herdr.git
synced 2026-09-22 08:01:06 +00:00
Merge branch 'master' into akbash/2066-preserve-claude-settings
This commit is contained in:
+28
-4
@@ -855,14 +855,14 @@ impl RetainedTextBuffer {
|
||||
}
|
||||
|
||||
fn point_is_final_atom(&self, point: TerminalTextPoint) -> bool {
|
||||
// Word motion targets are atom start points, so compare against the
|
||||
// final atom's start point. Comparing against `end_col` would never
|
||||
// match a wide glyph, whose end column is one past its start.
|
||||
self.atoms
|
||||
.iter()
|
||||
.rev()
|
||||
.find(|atom| atom.point.is_some())
|
||||
.is_some_and(|atom| {
|
||||
atom.point
|
||||
.is_some_and(|start| start.row == point.row && atom.end_col == point.col)
|
||||
})
|
||||
.is_some_and(|atom| atom.point == Some(point))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3291,6 +3291,30 @@ mod tests {
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn live_terminal_word_end_expands_through_a_long_wide_soft_wrap() {
|
||||
let (tx, _rx) = mpsc::channel(4);
|
||||
let mut terminal = crate::ghostty::Terminal::new(2, 3, 200).unwrap();
|
||||
let word = "界".repeat(66);
|
||||
terminal.write(word.as_bytes());
|
||||
let pane = PaneTerminal::new(GhosttyPaneTerminal::new(terminal, tx).unwrap());
|
||||
let text_match = pane.search_text_matches(&word, true)[0];
|
||||
|
||||
// The word end sits on the head cell of the final wide glyph, past the
|
||||
// initial read window, so the window has to expand to reach it.
|
||||
assert_eq!(
|
||||
pane.word_motion_target(
|
||||
text_match.start.row,
|
||||
text_match.start.col,
|
||||
TerminalWordMotion::NextEnd,
|
||||
),
|
||||
Some(TerminalTextPoint {
|
||||
row: text_match.end.row,
|
||||
col: 0,
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
fn current_palette_color(pane: &GhosttyPaneTerminal, index: u8) -> crate::ghostty::RgbColor {
|
||||
let mut core = pane.core.lock().unwrap();
|
||||
let GhosttyPaneCore {
|
||||
|
||||
Reference in New Issue
Block a user