@@ -4282,7 +4282,7 @@ fn goto_ts_object_impl(cx: &mut Context, object: &'static str, direction: Direct
42824282 let root = syntax.tree().root_node();
42834283
42844284 let selection = doc.selection(view.id).clone().transform(|range| {
4285− movement::goto_treesitter_object(
4285+ let new_range = movement::goto_treesitter_object(
42864286 text,
42874287 range,
42884288 object,
@@ -4290,8 +4290,19 @@ fn goto_ts_object_impl(cx: &mut Context, object: &'static str, direction: Direct
42904290 root,
42914291 lang_config,
42924292 count,
4293− )
4294− .with_direction(direction)
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 {
4304+ new_range.with_direction(direction)
4305+ }
42954306 });
42964307
42974308 doc.set_selection(view.id, selection);