Skip to content

Commit efd5d8a

Browse files
committed
patch 8.2.1684: "gF" does not use line number after file in Visual mode
Problem: "gF" does not use line number after file in Visual mode. Solution: Look for ":123" after the Visual area. (closes #6952)
1 parent 2b22b11 commit efd5d8a

3 files changed

Lines changed: 29 additions & 1 deletion

File tree

src/findfile.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1934,6 +1934,13 @@ grab_file_name(long count, linenr_T *file_lnum)
19341934

19351935
if (get_visual_text(NULL, &ptr, &len) == FAIL)
19361936
return NULL;
1937+
// Only recognize ":123" here
1938+
if (file_lnum != NULL && ptr[len] == ':' && isdigit(ptr[len + 1]))
1939+
{
1940+
char_u *p = ptr + len + 1;
1941+
1942+
*file_lnum = getdigits(&p);
1943+
}
19371944
return find_file_name_in_path(ptr, len, options,
19381945
count, curbuf->b_ffname);
19391946
}

src/testdir/test_gf.vim

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ func Test_gf()
124124
endfunc
125125

126126
func Test_gf_visual()
127-
call writefile([], "Xtest_gf_visual")
127+
call writefile(['one', 'two', 'three', 'four'], "Xtest_gf_visual")
128128
new
129129
call setline(1, 'XXXtest_gf_visualXXX')
130130
set hidden
@@ -138,6 +138,25 @@ func Test_gf_visual()
138138
normal VGgf
139139
call assert_equal('Xtest_gf_visual', @%)
140140

141+
" following line number is used for gF
142+
bwipe!
143+
new
144+
call setline(1, 'XXXtest_gf_visual:3XXX')
145+
norm! 0ttvt:gF
146+
call assert_equal('Xtest_gf_visual', bufname('%'))
147+
call assert_equal(3, getcurpos()[1])
148+
149+
" line number in visual area is used for file name
150+
if has('unix')
151+
bwipe!
152+
call writefile([], "Xtest_gf_visual:3")
153+
new
154+
call setline(1, 'XXXtest_gf_visual:3XXX')
155+
norm! 0ttvtXgF
156+
call assert_equal('Xtest_gf_visual:3', bufname('%'))
157+
call delete('Xtest_gf_visual:3')
158+
endif
159+
141160
bwipe!
142161
call delete('Xtest_gf_visual')
143162
set hidden&

src/version.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -750,6 +750,8 @@ static char *(features[]) =
750750

751751
static int included_patches[] =
752752
{ /* Add new patch number below this line */
753+
/**/
754+
1684,
753755
/**/
754756
1683,
755757
/**/

0 commit comments

Comments
 (0)