diff options
Diffstat (limited to 'data/vim/patches/8.1.0356')
-rw-r--r-- | data/vim/patches/8.1.0356 | 224 |
1 files changed, 224 insertions, 0 deletions
diff --git a/data/vim/patches/8.1.0356 b/data/vim/patches/8.1.0356 new file mode 100644 index 000000000..907ebef7e --- /dev/null +++ b/data/vim/patches/8.1.0356 @@ -0,0 +1,224 @@ +To: vim_dev@googlegroups.com +Subject: Patch 8.1.0356 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 8.1.0356 +Problem: Using :s with 'incsearch' prevents CTRL-R CTRL-W. (Boris Staletic) +Solution: When past the pattern put cursor back in the start position. + (closes #3413) +Files: src/ex_getln.c, src/testdir/test_search.vim + + +*** ../vim-8.1.0355/src/ex_getln.c 2018-09-06 21:44:13.660006996 +0200 +--- src/ex_getln.c 2018-09-09 15:53:37.117142011 +0200 +*************** +*** 462,468 **** + incsearch_state_T *is_state) + { + int skiplen, patlen; +! int i; + pos_T end_pos; + struct cmdline_info save_ccline; + #ifdef FEAT_RELTIME +--- 462,468 ---- + incsearch_state_T *is_state) + { + int skiplen, patlen; +! int found; // do_search() result + pos_T end_pos; + struct cmdline_info save_ccline; + #ifdef FEAT_RELTIME +*************** +*** 508,514 **** + // If there is no pattern, don't do anything. + if (patlen == 0 && !use_last_pat) + { +! i = 0; + set_no_hlsearch(TRUE); // turn off previous highlight + redraw_all_later(SOME_VALID); + } +--- 508,514 ---- + // If there is no pattern, don't do anything. + if (patlen == 0 && !use_last_pat) + { +! found = 0; + set_no_hlsearch(TRUE); // turn off previous highlight + redraw_all_later(SOME_VALID); + } +*************** +*** 528,534 **** + if (search_first_line != 0) + search_flags += SEARCH_START; + ccline.cmdbuff[skiplen + patlen] = NUL; +! i = do_search(NULL, firstc == ':' ? '/' : firstc, + ccline.cmdbuff + skiplen, count, search_flags, + #ifdef FEAT_RELTIME + &tm, NULL +--- 528,534 ---- + if (search_first_line != 0) + search_flags += SEARCH_START; + ccline.cmdbuff[skiplen + patlen] = NUL; +! found = do_search(NULL, firstc == ':' ? '/' : firstc, + ccline.cmdbuff + skiplen, count, search_flags, + #ifdef FEAT_RELTIME + &tm, NULL +*************** +*** 543,549 **** + || curwin->w_cursor.lnum > search_last_line) + { + // match outside of address range +! i = 0; + curwin->w_cursor = is_state->search_start; + } + +--- 543,549 ---- + || curwin->w_cursor.lnum > search_last_line) + { + // match outside of address range +! found = 0; + curwin->w_cursor = is_state->search_start; + } + +*************** +*** 552,564 **** + { + (void)vpeekc(); // remove <C-C> from input stream + got_int = FALSE; // don't abandon the command line +! i = 0; + } + else if (char_avail()) + // cancelled searching because a char was typed + is_state->incsearch_postponed = TRUE; + } +! if (i != 0) + highlight_match = TRUE; // highlight position + else + highlight_match = FALSE; // remove highlight +--- 552,564 ---- + { + (void)vpeekc(); // remove <C-C> from input stream + got_int = FALSE; // don't abandon the command line +! found = 0; + } + else if (char_avail()) + // cancelled searching because a char was typed + is_state->incsearch_postponed = TRUE; + } +! if (found != 0) + highlight_match = TRUE; // highlight position + else + highlight_match = FALSE; // remove highlight +*************** +*** 569,575 **** + changed_cline_bef_curs(); + update_topline(); + +! if (i != 0) + { + pos_T save_pos = curwin->w_cursor; + +--- 569,575 ---- + changed_cline_bef_curs(); + update_topline(); + +! if (found != 0) + { + pos_T save_pos = curwin->w_cursor; + +*************** +*** 604,611 **** + restore_cmdline(&save_ccline); + restore_last_search_pattern(); + +! // Leave it at the end to make CTRL-R CTRL-W work. +! if (i != 0) + curwin->w_cursor = end_pos; + + msg_starthere(); +--- 604,614 ---- + restore_cmdline(&save_ccline); + restore_last_search_pattern(); + +! // Leave it at the end to make CTRL-R CTRL-W work. But not when beyond the +! // end of the pattern, e.g. for ":s/pat/". +! if (ccline.cmdbuff[skiplen + patlen] != NUL) +! curwin->w_cursor = is_state->search_start; +! else if (found != 0) + curwin->w_cursor = end_pos; + + msg_starthere(); +*** ../vim-8.1.0355/src/testdir/test_search.vim 2018-09-06 21:44:13.660006996 +0200 +--- src/testdir/test_search.vim 2018-09-09 15:50:31.934618534 +0200 +*************** +*** 1060,1065 **** +--- 1060,1101 ---- + set noincsearch + endfunc + ++ func Test_word_under_cursor_after_match() ++ if !exists('+incsearch') ++ return ++ endif ++ new ++ call setline(1, 'foo bar') ++ set incsearch ++ call test_override("char_avail", 1) ++ try ++ call feedkeys("/foo\<C-R>\<C-W>\<CR>", 'ntx') ++ catch /E486:/ ++ endtry ++ call assert_equal('foobar', @/) ++ ++ bwipe! ++ call test_override("ALL", 0) ++ set noincsearch ++ endfunc ++ ++ func Test_subst_word_under_cursor() ++ if !exists('+incsearch') ++ return ++ endif ++ new ++ call setline(1, ['int SomeLongName;', 'for (xxx = 1; xxx < len; ++xxx)']) ++ set incsearch ++ call test_override("char_avail", 1) ++ call feedkeys("/LongName\<CR>", 'ntx') ++ call feedkeys(":%s/xxx/\<C-R>\<C-W>/g\<CR>", 'ntx') ++ call assert_equal('for (SomeLongName = 1; SomeLongName < len; ++SomeLongName)', getline(2)) ++ ++ bwipe! ++ call test_override("ALL", 0) ++ set noincsearch ++ endfunc ++ + func Test_search_undefined_behaviour() + if !has("terminal") + return +*** ../vim-8.1.0355/src/version.c 2018-09-09 15:27:54.812344748 +0200 +--- src/version.c 2018-09-09 15:52:51.437517050 +0200 +*************** +*** 796,797 **** +--- 796,799 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 356, + /**/ + +-- +"So this is it," said Arthur, "we are going to die." +"Yes," said Ford, "except...no! Wait a minute!" He suddenly lunged across +the chamber at something behind Arthur's line of vision. "What's this +switch?" he cried. +"What? Where?" cried Arthur, twisting around. +"No, I was only fooling," said Ford, "we are going to die after all." + -- Douglas Adams, "The Hitchhiker's Guide to the Galaxy" + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// |