From 085cc35b14e7c835e1a9add408b45da583959a6c Mon Sep 17 00:00:00 2001 From: Christian Duerr Date: Fri, 25 Sep 2020 00:21:21 +0000 Subject: Fix IME position with fullwidth chars in search --- alacritty/src/display.rs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'alacritty') diff --git a/alacritty/src/display.rs b/alacritty/src/display.rs index 00bfd83a..ca5bfe34 100644 --- a/alacritty/src/display.rs +++ b/alacritty/src/display.rs @@ -598,7 +598,7 @@ impl Display { self.draw_search(config, &size_info, message_bar_lines, &search_text); // Compute IME position. - Point::new(size_info.lines() - 1, Column(search_text.len() - 1)) + Point::new(size_info.lines() - 1, Column(search_text.chars().count() - 1)) }, None => cursor_point, }; @@ -640,10 +640,11 @@ impl Display { // Truncate beginning of the search regex if it exceeds the viewport width. let num_cols = size_info.cols().0; - let label_len = search_label.len(); - let regex_len = formatted_regex.len(); + let label_len = search_label.chars().count(); + let regex_len = formatted_regex.chars().count(); let truncate_len = min((regex_len + label_len).saturating_sub(num_cols), regex_len); - let truncated_regex = &formatted_regex[truncate_len..]; + let index = formatted_regex.char_indices().nth(truncate_len).map(|(i, _c)| i).unwrap_or(0); + let truncated_regex = &formatted_regex[index..]; // Add search label to the beginning of the search regex. let mut bar_text = format!("{}{}", search_label, truncated_regex); -- cgit