summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2017-05-24 09:51:39 +0200
committerBram Moolenaar <Bram@vim.org>2017-05-24 09:51:39 +0200
commit2a79ed293c077ba791db962f0e121cf97ba4f7a7 (patch)
tree65412b41e41eedd2ba9674575d97a3504d3047eb
parent545cb79da586be3333a0a55616046f94b01f6b1a (diff)
patch 8.0.0602: when gF fails to edit the file the cursor still movesv8.0.0602
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)
-rw-r--r--src/normal.c6
-rw-r--r--src/testdir/test_gf.vim25
-rw-r--r--src/version.c2
3 files changed, 28 insertions, 5 deletions
diff --git a/src/normal.c b/src/normal.c
index 25c0986b43..9a12267720 100644
--- a/src/normal.c
+++ b/src/normal.c
@@ -6250,9 +6250,9 @@ nv_gotofile(cmdarg_T *cap)
if (curbufIsChanged() && curbuf->b_nwindows <= 1 && !P_HID(curbuf))
(void)autowrite(curbuf, FALSE);
setpcmark();
- (void)do_ecmd(0, ptr, NULL, NULL, ECMD_LAST,
- P_HID(curbuf) ? ECMD_HIDE : 0, curwin);
- if (cap->nchar == 'F' && lnum >= 0)
+ if (do_ecmd(0, ptr, NULL, NULL, ECMD_LAST,
+ P_HID(curbuf) ? ECMD_HIDE : 0, curwin) == OK
+ && cap->nchar == 'F' && lnum >= 0)
{
curwin->w_cursor.lnum = lnum;
check_cursor_lnum();
diff --git a/src/testdir/test_gf.vim b/src/testdir/test_gf.vim
index c4aa6f9218..1f3db2401e 100644
--- a/src/testdir/test_gf.vim
+++ b/src/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
diff --git a/src/version.c b/src/version.c
index 202ce954ba..cb355208ec 100644
--- a/src/version.c
+++ b/src/version.c
@@ -765,6 +765,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 602,
+/**/
601,
/**/
600,