@@ -1411,16 +1411,16 @@ fn copy_selection_on_line(cx: &mut Context, direction: Direction) {
1411 let is_primary = *range == selection.primary();
1411 let is_primary = *range == selection.primary();
1413 // The range is always head exclusive
1413 // The range is always head exclusive
1414− let head = if range.anchor < range.head {
1414+ let (head, anchor) = if range.anchor < range.head {
1415− range.head - 1
1415+ (range.head - 1, range.anchor)
1416 } else {
1416 } else {
1417− range.head
1417+ (range.head, range.anchor - 1)
1420 let tab_width = doc.tab_width();
1420 let tab_width = doc.tab_width();
1422 let head_pos = visual_coords_at_pos(text, head, tab_width);
1422 let head_pos = visual_coords_at_pos(text, head, tab_width);
1423− let anchor_pos = visual_coords_at_pos(text, range.anchor, tab_width);
1423+ let anchor_pos = visual_coords_at_pos(text, anchor, tab_width);
1425 let height = std::cmp::max(head_pos.row, anchor_pos.row)
1425 let height = std::cmp::max(head_pos.row, anchor_pos.row)
1426 - std::cmp::min(head_pos.row, anchor_pos.row)
1426 - std::cmp::min(head_pos.row, anchor_pos.row)