From b97b9ad9044a7d2ef4dc2946df5daba4f2222e9c Mon Sep 17 00:00:00 2001 From: Karsten Hopp Date: Feb 17 2015 17:00:08 +0000 Subject: - patchlevel 636 --- diff --git a/7.4.636 b/7.4.636 new file mode 100644 index 0000000..b592648 --- /dev/null +++ b/7.4.636 @@ -0,0 +1,166 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.636 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.636 +Problem: A search with end offset gets stuck at end of file. (Gary Johnson) +Solution: When a search doesn't move the cursor repeat it with a higher + count. (Christian Brabandt) +Files: src/normal.c, src/testdir/test44.in, src/testdir/test44.ok + + +*** ../vim-7.4.635/src/normal.c 2015-01-27 20:59:26.496971751 +0100 +--- src/normal.c 2015-02-17 15:43:29.216732977 +0100 +*************** +*** 100,106 **** + static void nv_dollar __ARGS((cmdarg_T *cap)); + static void nv_search __ARGS((cmdarg_T *cap)); + static void nv_next __ARGS((cmdarg_T *cap)); +! static void normal_search __ARGS((cmdarg_T *cap, int dir, char_u *pat, int opt)); + static void nv_csearch __ARGS((cmdarg_T *cap)); + static void nv_brackets __ARGS((cmdarg_T *cap)); + static void nv_percent __ARGS((cmdarg_T *cap)); +--- 100,106 ---- + static void nv_dollar __ARGS((cmdarg_T *cap)); + static void nv_search __ARGS((cmdarg_T *cap)); + static void nv_next __ARGS((cmdarg_T *cap)); +! static int normal_search __ARGS((cmdarg_T *cap, int dir, char_u *pat, int opt)); + static void nv_csearch __ARGS((cmdarg_T *cap)); + static void nv_brackets __ARGS((cmdarg_T *cap)); + static void nv_percent __ARGS((cmdarg_T *cap)); +*************** +*** 5765,5771 **** + init_history(); + add_to_history(HIST_SEARCH, buf, TRUE, NUL); + #endif +! normal_search(cap, cmdchar == '*' ? '/' : '?', buf, 0); + } + else + do_cmdline_cmd(buf); +--- 5765,5771 ---- + init_history(); + add_to_history(HIST_SEARCH, buf, TRUE, NUL); + #endif +! (void)normal_search(cap, cmdchar == '*' ? '/' : '?', buf, 0); + } + else + do_cmdline_cmd(buf); +*************** +*** 6301,6307 **** + return; + } + +! normal_search(cap, cap->cmdchar, cap->searchbuf, + (cap->arg ? 0 : SEARCH_MARK)); + } + +--- 6301,6307 ---- + return; + } + +! (void)normal_search(cap, cap->cmdchar, cap->searchbuf, + (cap->arg ? 0 : SEARCH_MARK)); + } + +*************** +*** 6313,6326 **** + nv_next(cap) + cmdarg_T *cap; + { +! normal_search(cap, 0, NULL, SEARCH_MARK | cap->arg); + } + + /* + * Search for "pat" in direction "dir" ('/' or '?', 0 for repeat). + * Uses only cap->count1 and cap->oap from "cap". + */ +! static void + normal_search(cap, dir, pat, opt) + cmdarg_T *cap; + int dir; +--- 6313,6338 ---- + nv_next(cap) + cmdarg_T *cap; + { +! pos_T old = curwin->w_cursor; +! int i = normal_search(cap, 0, NULL, SEARCH_MARK | cap->arg); +! +! if (i == 1 && equalpos(old, curwin->w_cursor)) +! { +! /* Avoid getting stuck on the current cursor position, which can +! * happen when an offset is given and the cursor is on the last char +! * in the buffer: Repeat with count + 1. */ +! cap->count1 += 1; +! (void)normal_search(cap, 0, NULL, SEARCH_MARK | cap->arg); +! cap->count1 -= 1; +! } + } + + /* + * Search for "pat" in direction "dir" ('/' or '?', 0 for repeat). + * Uses only cap->count1 and cap->oap from "cap". ++ * Return 0 for failure, 1 for found, 2 for found and line offset added. + */ +! static int + normal_search(cap, dir, pat, opt) + cmdarg_T *cap; + int dir; +*************** +*** 6354,6359 **** +--- 6366,6372 ---- + /* "/$" will put the cursor after the end of the line, may need to + * correct that here */ + check_cursor(); ++ return i; + } + + /* +*** ../vim-7.4.635/src/testdir/test44.in 2013-09-19 17:00:14.000000000 +0200 +--- src/testdir/test44.in 2015-02-17 15:39:42.387675976 +0100 +*************** +*** 42,47 **** +--- 42,53 ---- + :put =matchstr(\"אבגד\", \"..\", 0, 2) " בג + :put =matchstr(\"אבגד\", \".\", 0, 0) " א + :put =matchstr(\"אבגד\", \".\", 4, -1) " ג ++ :new ++ :$put =['dog(a', 'cat('] ++ /(/e+ ++ "ayn:bd! ++ :$put ='' ++ G"ap + :w! + :qa! + ENDTEST +*** ../vim-7.4.635/src/testdir/test44.ok 2013-05-26 14:16:28.000000000 +0200 +--- src/testdir/test44.ok 2015-02-17 15:31:20.586185997 +0100 +*************** +*** 22,24 **** +--- 22,26 ---- + בג + א + ג ++ a ++ cat( +*** ../vim-7.4.635/src/version.c 2015-02-17 14:15:13.005523167 +0100 +--- src/version.c 2015-02-17 15:32:53.024986843 +0100 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 636, + /**/ + +-- +Marriage isn't a word. It's a sentence. + + /// 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 ///