diff options
-rw-r--r-- | src/ex_getln.c | 13 | ||||
-rw-r--r-- | src/testdir/dumps/Test_incsearch_substitute_04.dump | 9 | ||||
-rw-r--r-- | src/testdir/test_search.vim | 6 | ||||
-rw-r--r-- | src/version.c | 2 |
4 files changed, 28 insertions, 2 deletions
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, "\<BS>") sleep 100m call VerifyScreenDump(buf, 'Test_incsearch_substitute_03', {}) + call term_sendkeys(buf, "\<Esc>") + + " Reverse range is accepted + call term_sendkeys(buf, ':5,2s/foo') + sleep 100m + call VerifyScreenDump(buf, 'Test_incsearch_substitute_04', {}) call term_sendkeys(buf, "\<Esc>") 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 @@ -795,6 +795,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 278, +/**/ 277, /**/ 276, |