diff options
author | Bram Moolenaar <Bram@vim.org> | 2020-09-14 19:11:45 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2020-09-14 19:11:45 +0200 |
commit | efd5d8a967ba80f9e2826c35be98344d8f00af77 (patch) | |
tree | 131d5feb37fc8521b821f3cbe1ad47ff53b53ca0 | |
parent | 2b22b113c6aedf2a1295cf7e6f2f2a5d463b3868 (diff) | |
download | vim-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.c | 7 | ||||
-rw-r--r-- | src/testdir/test_gf.vim | 21 | ||||
-rw-r--r-- | src/version.c | 2 |
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, |