mirror of
https://github.com/neovim/neovim.git
synced 2025-09-19 17:58:18 +00:00
vim-patch:7.4.1940 (#5849)
Problem: "gd" hangs in some situations. (Eric Biggers)
Solution: Remove the SEARCH_START flag when looping. Add a test.
23c60f21b0
This commit is contained in:

committed by
Justin M. Keyes

parent
aa35cd9af0
commit
b37da9c664
@@ -3666,7 +3666,7 @@ find_decl (
|
|||||||
size_t len,
|
size_t len,
|
||||||
bool locally,
|
bool locally,
|
||||||
bool thisblock,
|
bool thisblock,
|
||||||
int searchflags /* flags passed to searchit() */
|
int flags_arg // flags passed to searchit()
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
char_u *pat;
|
char_u *pat;
|
||||||
@@ -3678,6 +3678,7 @@ find_decl (
|
|||||||
bool save_p_scs;
|
bool save_p_scs;
|
||||||
bool retval = true;
|
bool retval = true;
|
||||||
bool incll;
|
bool incll;
|
||||||
|
int searchflags = flags_arg;
|
||||||
|
|
||||||
pat = xmalloc(len + 7);
|
pat = xmalloc(len + 7);
|
||||||
|
|
||||||
@@ -3751,10 +3752,12 @@ find_decl (
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* For finding a local variable and the match is before the "{" search
|
// For finding a local variable and the match is before the "{" search
|
||||||
* to find a later match. For K&R style function declarations this
|
// to find a later match. For K&R style function declarations this
|
||||||
* skips the function header without types. */
|
// skips the function header without types. Remove SEARCH_START from
|
||||||
|
// flags to avoid getting stuck at one position.
|
||||||
found_pos = curwin->w_cursor;
|
found_pos = curwin->w_cursor;
|
||||||
|
searchflags &= ~SEARCH_START;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (t == false) {
|
if (t == false) {
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
" Test commands that jump somewhere.
|
" Test commands that jump somewhere.
|
||||||
|
|
||||||
func Test_geedee()
|
func Test_geeDEE()
|
||||||
new
|
new
|
||||||
call setline(1, ["Filename x;", "", "int Filename", "int func() {", "Filename y;"])
|
call setline(1, ["Filename x;", "", "int Filename", "int func() {", "Filename y;"])
|
||||||
/y;/
|
/y;/
|
||||||
@@ -8,3 +8,13 @@ func Test_geedee()
|
|||||||
call assert_equal(1, line('.'))
|
call assert_equal(1, line('.'))
|
||||||
quit!
|
quit!
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
func Test_gee_dee()
|
||||||
|
new
|
||||||
|
call setline(1, ["int x;", "", "int func(int x)", "{", " return x;", "}"])
|
||||||
|
/return/
|
||||||
|
normal $hgd
|
||||||
|
call assert_equal(3, line('.'))
|
||||||
|
call assert_equal(14, col('.'))
|
||||||
|
quit!
|
||||||
|
endfunc
|
||||||
|
@@ -500,7 +500,7 @@ static int included_patches[] = {
|
|||||||
// 1943 NA
|
// 1943 NA
|
||||||
// 1942 NA
|
// 1942 NA
|
||||||
1941,
|
1941,
|
||||||
// 1940,
|
1940,
|
||||||
// 1939 NA
|
// 1939 NA
|
||||||
// 1938 NA
|
// 1938 NA
|
||||||
1937,
|
1937,
|
||||||
|
Reference in New Issue
Block a user