diff options
| author | Maxime Coste <mawww@kakoune.org> | 2017-06-11 12:24:45 +0100 |
|---|---|---|
| committer | Maxime Coste <mawww@kakoune.org> | 2017-06-11 12:25:12 +0100 |
| commit | 7bcfbd055c19c2cf37f5dd64a7e532eb38585052 (patch) | |
| tree | ce3258cfec1d1028a68b96f36d1b8dd9de64ef57 | |
| parent | 63a791d65118bf37606db36ee12287e890d528ea (diff) | |
Fix corner case in compute_modified_ranges
| -rw-r--r-- | src/selection.cc | 2 | ||||
| -rw-r--r-- | test/regression/0-undo-change-at-eof/cmd | 1 | ||||
| -rw-r--r-- | test/regression/0-undo-change-at-eof/in | 2 | ||||
| -rw-r--r-- | test/regression/0-undo-change-at-eof/out | 2 |
4 files changed, 6 insertions, 1 deletions
diff --git a/src/selection.cc b/src/selection.cc index 4724e896..14879386 100644 --- a/src/selection.cc +++ b/src/selection.cc @@ -183,7 +183,7 @@ Vector<Selection> compute_modified_ranges(Buffer& buffer, size_t timestamp) } auto touches = [&](const Selection& lhs, const Selection& rhs) { - return buffer.char_next(lhs.max()) >= rhs.min(); + return lhs.max() == end_coord or buffer.char_next(lhs.max()) >= rhs.min(); }; size_t dummy = 0; ranges.erase(merge_overlapping(ranges.begin(), ranges.end(), dummy, touches), ranges.end()); diff --git a/test/regression/0-undo-change-at-eof/cmd b/test/regression/0-undo-change-at-eof/cmd new file mode 100644 index 00000000..b2bb8707 --- /dev/null +++ b/test/regression/0-undo-change-at-eof/cmd @@ -0,0 +1 @@ +<a-l>yjxRu diff --git a/test/regression/0-undo-change-at-eof/in b/test/regression/0-undo-change-at-eof/in new file mode 100644 index 00000000..cc60e6f5 --- /dev/null +++ b/test/regression/0-undo-change-at-eof/in @@ -0,0 +1,2 @@ +copy +paste diff --git a/test/regression/0-undo-change-at-eof/out b/test/regression/0-undo-change-at-eof/out new file mode 100644 index 00000000..cc60e6f5 --- /dev/null +++ b/test/regression/0-undo-change-at-eof/out @@ -0,0 +1,2 @@ +copy +paste |
