Fix delete_char_backward for paired characters (#4558)

When backward-deleting a character, if this character and the following
character form a Pair, we want to delete both. However, there is a bug
that deletes both characters also if both characters are closers of some
Pair.

This commit fixes that by adding an additional check that the deleted
character should be an opener in a Pair.

Closes https://github.com/helix-editor/helix/issues/4544.
This commit is contained in:
Yuriy Gabuev 2022-11-01 15:48:43 +01:00 committed by GitHub
parent 8ff92c7492
commit c803ef8753
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -3198,6 +3198,7 @@ pub fn delete_char_backward(cx: &mut Context) {
(Some(_x), Some(_y), Some(ap)) (Some(_x), Some(_y), Some(ap))
if range.is_single_grapheme(text) if range.is_single_grapheme(text)
&& ap.get(_x).is_some() && ap.get(_x).is_some()
&& ap.get(_x).unwrap().open == _x
&& ap.get(_x).unwrap().close == _y => && ap.get(_x).unwrap().close == _y =>
// delete both autopaired characters // delete both autopaired characters
{ {