on master help sign in
Extend textobject selections in select mode
c253139Michael Davis
helix-term/src/commands.rs+14−3
@@ -4282,7 +4282,7 @@ fn goto_ts_object_impl(cx: &mut Context, object: &'static str, direction: Direct
4282 let root = syntax.tree().root_node();
4282 let root = syntax.tree().root_node();
4283
4283
4284 let selection = doc.selection(view.id).clone().transform(|range| {
4284 let selection = doc.selection(view.id).clone().transform(|range| {
4285− movement::goto_treesitter_object(
4285+ let new_range = movement::goto_treesitter_object(
4286 text,
4286 text,
4287 range,
4287 range,
4288 object,
4288 object,
@@ -4290,8 +4290,19 @@ fn goto_ts_object_impl(cx: &mut Context, object: &'static str, direction: Direct
4290 root,
4290 root,
4291 lang_config,
4291 lang_config,
4292 count,
4292 count,
4293− )
4293+ );
4294+
4295+ if editor.mode == Mode::Select {
4296+ let head = if new_range.head < range.anchor {
4297+ new_range.anchor
4298+ } else {
4299+ new_range.head
4300+ };
4301+
4302+ Range::new(range.anchor, head)
4303+ } else {
4294− .with_direction(direction)
4304+ new_range.with_direction(direction)
4305+ }
4295 });
4306 });
4296
4307
4297 doc.set_selection(view.id, selection);
4308 doc.set_selection(view.id, selection);