From 60d0871000e9abf3716ee035cba5b5a9d659e327 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sun, 12 Aug 2018 21:53:15 +0200 Subject: patch 8.1.0278: 'incsearch' highlighting does not accept reverse range Problem: 'incsearch' highlighting does not accept reverse range. Solution: Swap the range when needed. (issue #3321) --- src/ex_getln.c | 13 +++++++++++-- src/testdir/dumps/Test_incsearch_substitute_04.dump | 9 +++++++++ src/testdir/test_search.vim | 6 ++++++ src/version.c | 2 ++ 4 files changed, 28 insertions(+), 2 deletions(-) create mode 100644 src/testdir/dumps/Test_incsearch_substitute_04.dump diff --git a/src/ex_getln.c b/src/ex_getln.c index a1cea9baf..22f35e1ec 100644 --- a/src/ex_getln.c +++ b/src/ex_getln.c @@ -320,8 +320,17 @@ do_incsearch_highlighting(int firstc, incsearch_state_T *is_state, parse_cmd_address(&ea, &dummy); if (ea.addr_count > 0) { - search_first_line = ea.line1; - search_last_line = ea.line2; + // Allow for reverse match. + if (ea.line2 < ea.line1) + { + search_first_line = ea.line2; + search_last_line = ea.line1; + } + else + { + search_first_line = ea.line1; + search_last_line = ea.line2; + } } else if (*cmd == 's') { diff --git a/src/testdir/dumps/Test_incsearch_substitute_04.dump b/src/testdir/dumps/Test_incsearch_substitute_04.dump new file mode 100644 index 000000000..bae6c7baa --- /dev/null +++ b/src/testdir/dumps/Test_incsearch_substitute_04.dump @@ -0,0 +1,9 @@ +|f+0&#ffffff0|o@1| |1| @64 +|f+1&&|o@1| +0&&|2| @64 +|f+0&#ffff4012|o@1| +0&#ffffff0|3| @64 +|f+0&#ffff4012|o@1| +0&#ffffff0|4| @64 +|f+0&#ffff4012|o@1| +0&#ffffff0|5| @64 +|f|o@1| |6| @64 +|f|o@1| |7| @64 +|f|o@1| |8| @64 +|:|5|,|2|s|/|f|o@1> @60 diff --git a/src/testdir/test_search.vim b/src/testdir/test_search.vim index 9b701269d..38e46cc85 100644 --- a/src/testdir/test_search.vim +++ b/src/testdir/test_search.vim @@ -862,6 +862,12 @@ func Test_incsearch_substitute_dump() call term_sendkeys(buf, "\") sleep 100m call VerifyScreenDump(buf, 'Test_incsearch_substitute_03', {}) + call term_sendkeys(buf, "\") + + " Reverse range is accepted + call term_sendkeys(buf, ':5,2s/foo') + sleep 100m + call VerifyScreenDump(buf, 'Test_incsearch_substitute_04', {}) call term_sendkeys(buf, "\") call StopVimInTerminal(buf) diff --git a/src/version.c b/src/version.c index a3f81f072..e1f2c6f2c 100644 --- a/src/version.c +++ b/src/version.c @@ -794,6 +794,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 278, /**/ 277, /**/ -- cgit v1.2.1