diff options
Diffstat (limited to 'data/vim/patches/8.1.0351')
-rw-r--r-- | data/vim/patches/8.1.0351 | 194 |
1 files changed, 194 insertions, 0 deletions
diff --git a/data/vim/patches/8.1.0351 b/data/vim/patches/8.1.0351 new file mode 100644 index 000000000..d4427da21 --- /dev/null +++ b/data/vim/patches/8.1.0351 @@ -0,0 +1,194 @@ +To: vim_dev@googlegroups.com +Subject: Patch 8.1.0351 +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.0351 +Problem: 'incsearch' for :/foo/s//<Esc> changes last search pattern. +Solution: Save the last search pattern earlier. +Files: src/ex_docmd.c, src/ex_getln.c, src/testdir/test_search.vim + + +*** ../vim-8.1.0350/src/ex_docmd.c 2018-08-30 15:58:23.244944556 +0200 +--- src/ex_docmd.c 2018-09-06 21:39:52.646486318 +0200 +*************** +*** 2911,2916 **** +--- 2911,2917 ---- + + /* + * Parse the address range, if any, in "eap". ++ * May set the last search pattern. + * Return FAIL and set "errormsg" or return OK. + */ + int +*************** +*** 4436,4445 **** + } + + /* +! * get a single EX address + * + * Set ptr to the next character after the part that was interpreted. + * Set ptr to NULL when an error is encountered. + * + * Return MAXLNUM when no Ex address was found. + */ +--- 4437,4447 ---- + } + + /* +! * Get a single EX address. + * + * Set ptr to the next character after the part that was interpreted. + * Set ptr to NULL when an error is encountered. ++ * This may set the last used search pattern. + * + * Return MAXLNUM when no Ex address was found. + */ +*** ../vim-8.1.0350/src/ex_getln.c 2018-08-31 22:09:31.561549259 +0200 +--- src/ex_getln.c 2018-09-06 21:39:30.638725276 +0200 +*************** +*** 271,276 **** +--- 271,277 ---- + /* + * Return TRUE when 'incsearch' highlighting is to be done. + * Sets search_first_line and search_last_line to the address range. ++ * May change the last search pattern. + */ + static int + do_incsearch_highlighting(int firstc, incsearch_state_T *is_state, +*************** +*** 470,477 **** +--- 471,482 ---- + int next_char; + int use_last_pat; + ++ // Parsing range may already set the last search pattern. ++ save_last_search_pattern(); ++ + if (!do_incsearch_highlighting(firstc, is_state, &skiplen, &patlen)) + { ++ restore_last_search_pattern(); + finish_incsearch_highlighting(FALSE, is_state, TRUE); + return; + } +*************** +*** 479,484 **** +--- 484,490 ---- + // If there is a character waiting, search and redraw later. + if (char_avail()) + { ++ restore_last_search_pattern(); + is_state->incsearch_postponed = TRUE; + return; + } +*************** +*** 493,499 **** + curwin->w_cursor.lnum = search_first_line; + curwin->w_cursor.col = 0; + } +- save_last_search_pattern(); + + // Use the previous pattern for ":s//". + next_char = ccline.cmdbuff[skiplen + patlen]; +--- 499,504 ---- +*************** +*** 627,636 **** +--- 632,650 ---- + int i; + int save; + ++ // Parsing range may already set the last search pattern. ++ save_last_search_pattern(); ++ + if (!do_incsearch_highlighting(firstc, is_state, &skiplen, &patlen)) ++ { ++ restore_last_search_pattern(); + return OK; ++ } + if (patlen == 0 && ccline.cmdbuff[skiplen] == NUL) ++ { ++ restore_last_search_pattern(); + return FAIL; ++ } + + if (firstc == ccline.cmdbuff[skiplen]) + { +*************** +*** 641,647 **** + else + pat = ccline.cmdbuff + skiplen; + +- save_last_search_pattern(); + cursor_off(); + out_flush(); + if (c == Ctrl_G) +--- 655,660 ---- +*************** +*** 721,728 **** +--- 734,747 ---- + { + int skiplen, patlen; + ++ // Parsing range may already set the last search pattern. ++ save_last_search_pattern(); ++ + if (!do_incsearch_highlighting(firstc, is_state, &skiplen, &patlen)) ++ { ++ restore_last_search_pattern(); + return FAIL; ++ } + + // Add a character from under the cursor for 'incsearch'. + if (is_state->did_incsearch) +*** ../vim-8.1.0350/src/testdir/test_search.vim 2018-08-31 22:09:31.561549259 +0200 +--- src/testdir/test_search.vim 2018-09-06 21:36:42.844553891 +0200 +*************** +*** 1043,1048 **** +--- 1043,1065 ---- + call delete('Xis_vimgrep_script') + endfunc + ++ func Test_keep_last_search_pattern() ++ if !exists('+incsearch') ++ return ++ endif ++ new ++ call setline(1, ['foo', 'foo', 'foo']) ++ set incsearch ++ call test_override("char_avail", 1) ++ let @/ = 'bar' ++ call feedkeys(":/foo/s//\<Esc>", 'ntx') ++ call assert_equal('bar', @/) ++ ++ bwipe! ++ call test_override("ALL", 0) ++ set noincsearch ++ endfunc ++ + func Test_search_undefined_behaviour() + if !has("terminal") + return +*** ../vim-8.1.0350/src/version.c 2018-09-06 16:27:20.664831945 +0200 +--- src/version.c 2018-09-06 21:33:45.218506207 +0200 +*************** +*** 796,797 **** +--- 796,799 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 351, + /**/ + +-- +How To Keep A Healthy Level Of Insanity: +3. Every time someone asks you to do something, ask if they want fries + with that. + + /// 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 /// |