summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2020-09-14 19:11:45 +0200
committerBram Moolenaar <Bram@vim.org>2020-09-14 19:11:45 +0200
commitefd5d8a967ba80f9e2826c35be98344d8f00af77 (patch)
tree131d5feb37fc8521b821f3cbe1ad47ff53b53ca0
parent2b22b113c6aedf2a1295cf7e6f2f2a5d463b3868 (diff)
downloadvim-git-efd5d8a967ba80f9e2826c35be98344d8f00af77.tar.gz
patch 8.2.1684: "gF" does not use line number after file in Visual modev8.2.1684
Problem: "gF" does not use line number after file in Visual mode. Solution: Look for ":123" after the Visual area. (closes #6952)
-rw-r--r--src/findfile.c7
-rw-r--r--src/testdir/test_gf.vim21
-rw-r--r--src/version.c2
3 files changed, 29 insertions, 1 deletions
diff --git a/src/findfile.c b/src/findfile.c
index 190fc69dc..4f69c47ca 100644
--- a/src/findfile.c
+++ b/src/findfile.c
@@ -1934,6 +1934,13 @@ grab_file_name(long count, linenr_T *file_lnum)
if (get_visual_text(NULL, &ptr, &len) == FAIL)
return NULL;
+ // Only recognize ":123" here
+ if (file_lnum != NULL && ptr[len] == ':' && isdigit(ptr[len + 1]))
+ {
+ char_u *p = ptr + len + 1;
+
+ *file_lnum = getdigits(&p);
+ }
return find_file_name_in_path(ptr, len, options,
count, curbuf->b_ffname);
}
diff --git a/src/testdir/test_gf.vim b/src/testdir/test_gf.vim
index eaa8c0fc9..deede22f8 100644
--- a/src/testdir/test_gf.vim
+++ b/src/testdir/test_gf.vim
@@ -124,7 +124,7 @@ func Test_gf()
endfunc
func Test_gf_visual()
- call writefile([], "Xtest_gf_visual")
+ call writefile(['one', 'two', 'three', 'four'], "Xtest_gf_visual")
new
call setline(1, 'XXXtest_gf_visualXXX')
set hidden
@@ -138,6 +138,25 @@ func Test_gf_visual()
normal VGgf
call assert_equal('Xtest_gf_visual', @%)
+ " following line number is used for gF
+ bwipe!
+ new
+ call setline(1, 'XXXtest_gf_visual:3XXX')
+ norm! 0ttvt:gF
+ call assert_equal('Xtest_gf_visual', bufname('%'))
+ call assert_equal(3, getcurpos()[1])
+
+ " line number in visual area is used for file name
+ if has('unix')
+ bwipe!
+ call writefile([], "Xtest_gf_visual:3")
+ new
+ call setline(1, 'XXXtest_gf_visual:3XXX')
+ norm! 0ttvtXgF
+ call assert_equal('Xtest_gf_visual:3', bufname('%'))
+ call delete('Xtest_gf_visual:3')
+ endif
+
bwipe!
call delete('Xtest_gf_visual')
set hidden&
diff --git a/src/version.c b/src/version.c
index 1b05536d4..67ccfb621 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1684,
+/**/
1683,
/**/
1682,