From 440c33343dc569a8d77c858c3f9f2d7c4652a497 Mon Sep 17 00:00:00 2001 From: Jan Edmund Lazo Date: Sat, 16 Jun 2018 11:05:31 -0400 Subject: [PATCH 1/3] vim-patch:8.0.0602: when gF fails to edit the file the cursor still moves Problem: When gF fails to edit the file the cursor still moves to the found line number. Solution: Check the return value of do_ecmd(). (Michael Hwang) https://github.com/vim/vim/commit/2a79ed293c077ba791db962f0e121cf97ba4f7a7 --- src/nvim/normal.c | 8 ++++---- src/nvim/testdir/test_gf.vim | 25 +++++++++++++++++++++++-- 2 files changed, 27 insertions(+), 6 deletions(-) diff --git a/src/nvim/normal.c b/src/nvim/normal.c index a7c4c255b7..6d3ffab030 100644 --- a/src/nvim/normal.c +++ b/src/nvim/normal.c @@ -5234,9 +5234,9 @@ static void nv_gotofile(cmdarg_T *cap) (void)autowrite(curbuf, false); } setpcmark(); - (void)do_ecmd(0, ptr, NULL, NULL, ECMD_LAST, - buf_hide(curbuf) ? ECMD_HIDE : 0, curwin); - if (cap->nchar == 'F' && lnum >= 0) { + if (do_ecmd(0, ptr, NULL, NULL, ECMD_LAST, + buf_hide(curbuf) ? ECMD_HIDE : 0, curwin) == OK + && cap->nchar == 'F' && lnum >= 0) { curwin->w_cursor.lnum = lnum; check_cursor_lnum(); beginline(BL_SOL | BL_FIX); @@ -7151,7 +7151,7 @@ static void set_op_var(int optype) assert(opchar0 >= 0 && opchar0 <= UCHAR_MAX); opchars[0] = (char) opchar0; - int opchar1 = get_extra_op_char(optype); + int opchar1 = get_extra_op_char(optype); assert(opchar1 >= 0 && opchar1 <= UCHAR_MAX); opchars[1] = (char) opchar1; diff --git a/src/nvim/testdir/test_gf.vim b/src/nvim/testdir/test_gf.vim index c4aa6f9218..1f3db2401e 100644 --- a/src/nvim/testdir/test_gf.vim +++ b/src/nvim/testdir/test_gf.vim @@ -1,7 +1,7 @@ " This is a test if a URL is recognized by "gf", with the cursor before and " after the "://". Also test ":\\". -function! Test_gf_url() +func Test_gf_url() enew! call append(0, [ \ "first test for URL://machine.name/tmp/vimtest2a and other text", @@ -30,4 +30,25 @@ function! Test_gf_url() set isf&vim enew! -endfunction +endfunc + +func Test_gF() + new + call setline(1, ['111', '222', '333', '444']) + w! Xfile + close + new + call setline(1, ['one', 'Xfile:3', 'three']) + 2 + call assert_fails('normal gF', 'E37:') + call assert_equal(2, getcurpos()[1]) + w! Xfile2 + normal gF + call assert_equal('Xfile', bufname('%')) + call assert_equal(3, getcurpos()[1]) + + call delete('Xfile') + call delete('Xfile2') + bwipe Xfile + bwipe Xfile2 +endfunc From 0d3557ad72f724af908b408313cdfedba57edf96 Mon Sep 17 00:00:00 2001 From: Jan Edmund Lazo Date: Sat, 16 Jun 2018 11:15:23 -0400 Subject: [PATCH 2/3] vim-patch:8.0.0603: gF test fails on MS-Windows Problem: gF test fails on MS-Windows. Solution: Use @ instead of : before the line number https://github.com/vim/vim/commit/d7aca7a71c7254501c08f04db1798df479df0e89 --- src/nvim/testdir/test_gf.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/nvim/testdir/test_gf.vim b/src/nvim/testdir/test_gf.vim index 1f3db2401e..d5bdfab652 100644 --- a/src/nvim/testdir/test_gf.vim +++ b/src/nvim/testdir/test_gf.vim @@ -38,7 +38,7 @@ func Test_gF() w! Xfile close new - call setline(1, ['one', 'Xfile:3', 'three']) + call setline(1, ['one', 'Xfile@3', 'three']) 2 call assert_fails('normal gF', 'E37:') call assert_equal(2, getcurpos()[1]) From de022d25707718029abdb539484dd242e36e4aa5 Mon Sep 17 00:00:00 2001 From: Jan Edmund Lazo Date: Sat, 16 Jun 2018 11:16:19 -0400 Subject: [PATCH 3/3] vim-patch:8.0.0604: gF test fails still on MS-Windows Problem: gF test fails still on MS-Windows. Solution: Use : before the line number and remove it from 'isfname'. https://github.com/vim/vim/commit/712598f210570627534246cb5dcbb4f213367997 --- src/nvim/testdir/test_gf.vim | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/nvim/testdir/test_gf.vim b/src/nvim/testdir/test_gf.vim index d5bdfab652..ef1bf1075b 100644 --- a/src/nvim/testdir/test_gf.vim +++ b/src/nvim/testdir/test_gf.vim @@ -38,7 +38,8 @@ func Test_gF() w! Xfile close new - call setline(1, ['one', 'Xfile@3', 'three']) + set isfname-=: + call setline(1, ['one', 'Xfile:3', 'three']) 2 call assert_fails('normal gF', 'E37:') call assert_equal(2, getcurpos()[1]) @@ -47,6 +48,7 @@ func Test_gF() call assert_equal('Xfile', bufname('%')) call assert_equal(3, getcurpos()[1]) + set isfname& call delete('Xfile') call delete('Xfile2') bwipe Xfile