Mercurial > vim
changeset 11436:69b52a770b29 v8.0.0602
patch 8.0.0602: when gF fails to edit the file the cursor still moves
commit https://github.com/vim/vim/commit/2a79ed293c077ba791db962f0e121cf97ba4f7a7
Author: Bram Moolenaar <Bram@vim.org>
Date: Wed May 24 09:51:39 2017 +0200
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)
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Wed, 24 May 2017 10:00:03 +0200 |
parents | e97a062b6065 |
children | e14cd10f19ae |
files | src/normal.c src/testdir/test_gf.vim src/version.c |
diffstat | 3 files changed, 28 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- 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();
--- 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