2020-09-14 15:24:02 -07:00
|
|
|
" Test for the gf and gF (goto file) commands
|
2017-03-28 16:30:54 -07:00
|
|
|
|
|
|
|
" This is a test if a URL is recognized by "gf", with the cursor before and
|
|
|
|
" after the "://". Also test ":\\".
|
2018-06-16 08:05:31 -07:00
|
|
|
func Test_gf_url()
|
2017-03-28 16:30:54 -07:00
|
|
|
enew!
|
|
|
|
call append(0, [
|
|
|
|
\ "first test for URL://machine.name/tmp/vimtest2a and other text",
|
|
|
|
\ "second test for URL://machine.name/tmp/vimtest2b. And other text",
|
|
|
|
\ "third test for URL:\\\\machine.name\\vimtest2c and other text",
|
2018-08-21 09:04:44 -07:00
|
|
|
\ "fourth test for URL:\\\\machine.name\\tmp\\vimtest2d, and other text",
|
|
|
|
\ "fifth test for URL://machine.name/tmp?q=vim&opt=yes and other text",
|
2019-03-09 20:53:51 -07:00
|
|
|
\ "sixth test for URL://machine.name:1234?q=vim and other text",
|
2017-03-28 16:30:54 -07:00
|
|
|
\ ])
|
|
|
|
call cursor(1,1)
|
|
|
|
call search("^first")
|
|
|
|
call search("tmp")
|
|
|
|
call assert_equal("URL://machine.name/tmp/vimtest2a", expand("<cfile>"))
|
|
|
|
call search("^second")
|
|
|
|
call search("URL")
|
|
|
|
call assert_equal("URL://machine.name/tmp/vimtest2b", expand("<cfile>"))
|
2022-01-31 18:31:25 -07:00
|
|
|
set isf=@,48-57,/,.,-,_,+,,,$,~,\
|
2017-03-28 16:30:54 -07:00
|
|
|
call search("^third")
|
|
|
|
call search("name")
|
|
|
|
call assert_equal("URL:\\\\machine.name\\vimtest2c", expand("<cfile>"))
|
|
|
|
call search("^fourth")
|
|
|
|
call search("URL")
|
|
|
|
call assert_equal("URL:\\\\machine.name\\tmp\\vimtest2d", expand("<cfile>"))
|
|
|
|
|
2018-08-21 09:04:44 -07:00
|
|
|
call search("^fifth")
|
|
|
|
call search("URL")
|
|
|
|
call assert_equal("URL://machine.name/tmp?q=vim&opt=yes", expand("<cfile>"))
|
|
|
|
|
2019-03-09 20:53:51 -07:00
|
|
|
call search("^sixth")
|
|
|
|
call search("URL")
|
|
|
|
call assert_equal("URL://machine.name:1234?q=vim", expand("<cfile>"))
|
|
|
|
|
2017-03-28 16:30:54 -07:00
|
|
|
set isf&vim
|
|
|
|
enew!
|
2018-06-16 08:05:31 -07:00
|
|
|
endfunc
|
|
|
|
|
|
|
|
func Test_gF()
|
|
|
|
new
|
|
|
|
call setline(1, ['111', '222', '333', '444'])
|
|
|
|
w! Xfile
|
|
|
|
close
|
|
|
|
new
|
2018-06-16 08:16:19 -07:00
|
|
|
set isfname-=:
|
|
|
|
call setline(1, ['one', 'Xfile:3', 'three'])
|
2018-06-16 08:05:31 -07:00
|
|
|
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])
|
|
|
|
|
2019-12-22 16:45:17 -07:00
|
|
|
enew!
|
|
|
|
call setline(1, ['one', 'the Xfile line 2, and more', 'three'])
|
|
|
|
w! Xfile2
|
|
|
|
normal 2GfX
|
|
|
|
normal gF
|
|
|
|
call assert_equal('Xfile', bufname('%'))
|
|
|
|
call assert_equal(2, getcurpos()[1])
|
|
|
|
|
2018-06-16 08:16:19 -07:00
|
|
|
set isfname&
|
2018-06-16 08:05:31 -07:00
|
|
|
call delete('Xfile')
|
|
|
|
call delete('Xfile2')
|
|
|
|
bwipe Xfile
|
|
|
|
bwipe Xfile2
|
|
|
|
endfunc
|
2019-05-06 18:10:48 -07:00
|
|
|
|
|
|
|
" Test for invoking 'gf' on a ${VAR} variable
|
|
|
|
func Test_gf()
|
2022-01-31 18:31:25 -07:00
|
|
|
set isfname=@,48-57,/,.,-,_,+,,,$,:,~,{,}
|
2019-05-06 18:10:48 -07:00
|
|
|
|
|
|
|
call writefile(["Test for gf command"], "Xtest1")
|
|
|
|
if has("unix")
|
|
|
|
call writefile([" ${CDIR}/Xtest1"], "Xtestgf")
|
|
|
|
else
|
|
|
|
call writefile([" $TDIR/Xtest1"], "Xtestgf")
|
|
|
|
endif
|
|
|
|
new Xtestgf
|
|
|
|
if has("unix")
|
|
|
|
let $CDIR = "."
|
|
|
|
/CDIR
|
|
|
|
else
|
|
|
|
if has("amiga")
|
|
|
|
let $TDIR = "/testdir"
|
|
|
|
else
|
|
|
|
let $TDIR = "."
|
|
|
|
endif
|
|
|
|
/TDIR
|
|
|
|
endif
|
|
|
|
|
|
|
|
normal gf
|
|
|
|
call assert_equal('Xtest1', fnamemodify(bufname(''), ":t"))
|
|
|
|
close!
|
|
|
|
|
|
|
|
call delete('Xtest1')
|
|
|
|
call delete('Xtestgf')
|
|
|
|
endfunc
|
2019-11-08 19:59:31 -07:00
|
|
|
|
|
|
|
func Test_gf_visual()
|
2020-09-14 15:24:02 -07:00
|
|
|
call writefile(['one', 'two', 'three', 'four'], "Xtest_gf_visual")
|
2019-11-08 19:59:31 -07:00
|
|
|
new
|
|
|
|
call setline(1, 'XXXtest_gf_visualXXX')
|
|
|
|
set hidden
|
|
|
|
|
|
|
|
" Visually select Xtest_gf_visual and use gf to go to that file
|
|
|
|
norm! ttvtXgf
|
|
|
|
call assert_equal('Xtest_gf_visual', bufname('%'))
|
|
|
|
|
2020-09-14 15:24:02 -07:00
|
|
|
" if multiple lines are selected, then gf should fail
|
|
|
|
call setline(1, ["one", "two"])
|
|
|
|
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
|
|
|
|
|
2019-11-08 19:59:31 -07:00
|
|
|
bwipe!
|
|
|
|
call delete('Xtest_gf_visual')
|
2021-08-17 20:30:58 -07:00
|
|
|
set nohidden
|
2019-11-08 19:59:31 -07:00
|
|
|
endfunc
|
|
|
|
|
|
|
|
func Test_gf_error()
|
|
|
|
new
|
|
|
|
call assert_fails('normal gf', 'E446:')
|
|
|
|
call assert_fails('normal gF', 'E446:')
|
|
|
|
call setline(1, '/doesnotexist')
|
|
|
|
call assert_fails('normal gf', 'E447:')
|
|
|
|
call assert_fails('normal gF', 'E447:')
|
|
|
|
bwipe!
|
|
|
|
endfunc
|