To: vim_dev@googlegroups.com Subject: Patch 8.1.2244 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 8.1.2244 Problem: 'wrapscan' is not used for "gn". Solution: Only reset 'wrapscan' for the first search round. (closes #5164) Files: src/search.c, src/testdir/test_gn.vim *** ../vim-8.1.2243/src/search.c 2019-10-26 14:41:52.426302376 +0200 --- src/search.c 2019-11-02 23:11:03.860523451 +0100 *************** *** 4765,4773 **** pos_T save_VIsual = VIsual; int zero_width; - /* wrapping should not occur */ - p_ws = FALSE; - /* Correct cursor when 'selection' is exclusive */ if (VIsual_active && *p_sel == 'e' && LT_POS(VIsual, curwin->w_cursor)) dec_cursor(); --- 4765,4770 ---- *************** *** 4786,4795 **** zero_width = is_zero_width(spats[last_idx].pat, TRUE, &curwin->w_cursor, FORWARD); if (zero_width == -1) - { - p_ws = old_p_ws; return FAIL; /* pattern not found */ - } /* * The trick is to first search backwards and then search forward again, --- 4783,4789 ---- *************** *** 4808,4818 **** --- 4802,4818 ---- flags = SEARCH_END; end_pos = pos; + // wrapping should not occur in the first round + if (i == 0) + p_ws = FALSE; + result = searchit(curwin, curbuf, &pos, &end_pos, (dir ? FORWARD : BACKWARD), spats[last_idx].pat, (long) (i ? count : 1), SEARCH_KEEP | flags, RE_SEARCH, NULL); + p_ws = old_p_ws; + /* First search may fail, but then start searching from the * beginning of the file (cursor might be on the search match) * except when Visual mode is active, so that extending the visual *************** *** 4822,4828 **** curwin->w_cursor = orig_pos; if (VIsual_active) VIsual = save_VIsual; - p_ws = old_p_ws; return FAIL; } else if (i == 0 && !result) --- 4822,4827 ---- *************** *** 4844,4850 **** } start_pos = pos; - p_ws = old_p_ws; if (!VIsual_active) VIsual = start_pos; --- 4843,4848 ---- *** ../vim-8.1.2243/src/testdir/test_gn.vim 2019-10-26 14:41:52.426302376 +0200 --- src/testdir/test_gn.vim 2019-11-02 23:17:21.294650269 +0100 *************** *** 135,142 **** call assert_equal(['ABCDEFGHi'], getline(1,'$')) call setline('.', ['abcdefghi']) let @/ = 'b' exe "norm! 0fhvhhgngU" ! call assert_equal(['abcdefghi'], getline(1,'$')) sil! %d _ call setline('.', ['abcdefghi']) let @/ = 'f' --- 135,143 ---- call assert_equal(['ABCDEFGHi'], getline(1,'$')) call setline('.', ['abcdefghi']) let @/ = 'b' + " this gn wraps around the end of the file exe "norm! 0fhvhhgngU" ! call assert_equal(['aBCDEFGHi'], getline(1,'$')) sil! %d _ call setline('.', ['abcdefghi']) let @/ = 'f' *** ../vim-8.1.2243/src/version.c 2019-11-02 22:54:37.409188799 +0100 --- src/version.c 2019-11-02 23:22:05.305333861 +0100 *************** *** 743,744 **** --- 743,746 ---- { /* Add new patch number below this line */ + /**/ + 2244, /**/ -- I have a drinking problem -- I can't afford it. /// 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 ///