From 56dd5f9540d752b4af4e252aaf0cdfe1ab3c90a0 Mon Sep 17 00:00:00 2001 From: Maxime Coste Date: Mon, 9 Feb 2015 21:09:17 +0000 Subject: [PATCH] Fix selecting of insert text in SelectionList::insert --- src/selection.cc | 7 +++++-- test/unit/concat-paste-line/cmd | 1 + test/unit/concat-paste-line/in | 1 + test/unit/concat-paste-line/out | 2 ++ test/unit/concat-paste-line/state | 1 + 5 files changed, 10 insertions(+), 2 deletions(-) create mode 100644 test/unit/concat-paste-line/cmd create mode 100644 test/unit/concat-paste-line/in create mode 100644 test/unit/concat-paste-line/out create mode 100644 test/unit/concat-paste-line/state diff --git a/src/selection.cc b/src/selection.cc index 91527080..936e8144 100644 --- a/src/selection.cc +++ b/src/selection.cc @@ -499,8 +499,11 @@ void SelectionList::insert(ArrayView strings, InsertMode mode, if (select_inserted or mode == InsertMode::Replace) { - sel.min() = change.begin; - sel.max() = m_buffer->char_prev(change.end); + // we want min and max from *before* we do any change + auto& min = sel.min(); + auto& max = sel.max(); + min = change.begin; + max = m_buffer->char_prev(change.end); } else { diff --git a/test/unit/concat-paste-line/cmd b/test/unit/concat-paste-line/cmd new file mode 100644 index 00000000..3ff90ae0 --- /dev/null +++ b/test/unit/concat-paste-line/cmd @@ -0,0 +1 @@ +xy diff --git a/test/unit/concat-paste-line/in b/test/unit/concat-paste-line/in new file mode 100644 index 00000000..a999a0c2 --- /dev/null +++ b/test/unit/concat-paste-line/in @@ -0,0 +1 @@ +line diff --git a/test/unit/concat-paste-line/out b/test/unit/concat-paste-line/out new file mode 100644 index 00000000..13e3d3ab --- /dev/null +++ b/test/unit/concat-paste-line/out @@ -0,0 +1,2 @@ +line +line diff --git a/test/unit/concat-paste-line/state b/test/unit/concat-paste-line/state new file mode 100644 index 00000000..5a13c9cf --- /dev/null +++ b/test/unit/concat-paste-line/state @@ -0,0 +1 @@ +2.1+5