From 28e37aec838eef29e41362b254af47390b8c2ff5 Mon Sep 17 00:00:00 2001 From: Ivan Tham Date: Wed, 27 Oct 2021 22:39:03 +0800 Subject: [PATCH] Make match work with extend and multi cursors --- helix-term/src/commands.rs | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/helix-term/src/commands.rs b/helix-term/src/commands.rs index d6e5bfe71b4f0..c2378fab1ebb6 100644 --- a/helix-term/src/commands.rs +++ b/helix-term/src/commands.rs @@ -4341,14 +4341,15 @@ fn match_brackets(cx: &mut Context) { let (view, doc) = current!(cx.editor); if let Some(syntax) = doc.syntax() { - let pos = doc - .selection(view.id) - .primary() - .cursor(doc.text().slice(..)); - if let Some(pos) = match_brackets::find(syntax, doc.text(), pos) { - let selection = Selection::point(pos); - doc.set_selection(view.id, selection); - }; + let text = doc.text().slice(..); + let selection = doc.selection(view.id).clone().transform(|range| { + if let Some(pos) = match_brackets::find(syntax, doc.text(), range.anchor) { + range.put_cursor(text, pos, doc.mode == Mode::Select) + } else { + range + } + }); + doc.set_selection(view.id, selection); } }