vim: Preserve trailing whitespace in inner text object selections (#24481)
Closes #24438 Changes: Adjusted loop to only trim whitespace between last newline and closing marker, when using inner objects like `y/d/c i b` | Start | Fixed `vib` | Previous `vib` | | ---------- | ---------- | ---------- | |  |  |  | Release Notes: - vim: Preserve trailing whitespace in inner text object selections --------- Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
This commit is contained in:
parent
146b9c232c
commit
7bddb390ca
2 changed files with 33 additions and 2 deletions
|
@ -1339,14 +1339,20 @@ fn surrounding_markers(
|
|||
}
|
||||
}
|
||||
|
||||
let mut last_newline_end = None;
|
||||
for (ch, range) in movement::chars_before(map, closing.start) {
|
||||
if !ch.is_whitespace() {
|
||||
break;
|
||||
}
|
||||
if ch != '\n' {
|
||||
closing.start = range.start
|
||||
if ch == '\n' {
|
||||
last_newline_end = Some(range.end);
|
||||
break;
|
||||
}
|
||||
}
|
||||
// Adjust closing.start to exclude whitespace after a newline, if present
|
||||
if let Some(end) = last_newline_end {
|
||||
closing.start = end;
|
||||
}
|
||||
}
|
||||
|
||||
let result = if around {
|
||||
|
@ -2254,6 +2260,20 @@ mod test {
|
|||
}
|
||||
}
|
||||
|
||||
#[gpui::test]
|
||||
async fn test_anybrackets_trailing_space(cx: &mut gpui::TestAppContext) {
|
||||
let mut cx = NeovimBackedTestContext::new(cx).await;
|
||||
|
||||
cx.set_shared_state("(trailingˇ whitespace )")
|
||||
.await;
|
||||
cx.simulate_shared_keystrokes("v i b").await;
|
||||
cx.shared_state().await.assert_matches();
|
||||
cx.simulate_shared_keystrokes("escape y i b").await;
|
||||
cx.shared_clipboard()
|
||||
.await
|
||||
.assert_eq("trailing whitespace ");
|
||||
}
|
||||
|
||||
#[gpui::test]
|
||||
async fn test_tags(cx: &mut gpui::TestAppContext) {
|
||||
let mut cx = VimTestContext::new_html(cx).await;
|
||||
|
|
11
crates/vim/test_data/test_anybrackets_trailing_space.json
Normal file
11
crates/vim/test_data/test_anybrackets_trailing_space.json
Normal file
|
@ -0,0 +1,11 @@
|
|||
{"Put":{"state":"(trailingˇ whitespace )"}}
|
||||
{"Key":"v"}
|
||||
{"Key":"i"}
|
||||
{"Key":"b"}
|
||||
{"Get":{"state":"(«trailing whitespace ˇ»)","mode":"Visual"}}
|
||||
{"Key":"escape"}
|
||||
{"Key":"y"}
|
||||
{"Key":"i"}
|
||||
{"Key":"b"}
|
||||
{"Get":{"state":"(ˇtrailing whitespace )","mode":"Normal"}}
|
||||
{"ReadRegister":{"name":"\"","value":"trailing whitespace "}}
|
Loading…
Add table
Add a link
Reference in a new issue