]> granicus.if.org Git - vim/commitdiff
patch 8.0.0602: when gF fails to edit the file the cursor still moves v8.0.0602
authorBram Moolenaar <Bram@vim.org>
Wed, 24 May 2017 07:51:39 +0000 (09:51 +0200)
committerBram Moolenaar <Bram@vim.org>
Wed, 24 May 2017 07:51:39 +0000 (09:51 +0200)
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)

src/normal.c
src/testdir/test_gf.vim
src/version.c

index 25c0986b43dcabd3118ea08860a78108525d973a..9a12267720e83f899775693683620015c2f55d94 100644 (file)
@@ -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();
index c4aa6f92185e133ab28fa7cdfbdc76f24c20cd68..1f3db2401ea87a3e0c5c1979f066124b30746f9d 100644 (file)
@@ -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
index 202ce954ba5b5440171ff86d94f9a7e023a02cf6..cb355208ec369aded54354e133ae22e8b2db0423 100644 (file)
@@ -764,6 +764,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    602,
 /**/
     601,
 /**/