| Tests for: |
| - "gf" on ${VAR}, |
| - ":checkpath!" with various 'include' settings. |
| |
| STARTTEST |
| :so small.vim |
| :if has("ebcdic") |
| : set isfname=@,240-249,/,.,-,_,+,,,$,:,~,{,} |
| :else |
| : set isfname=@,48-57,/,.,-,_,+,,,$,:,~,{,} |
| :endif |
| :function! DeleteDirectory(dir) |
| : if has("win16") || has("win32") || has("win64") || has("dos16") || has("dos32") |
| : exec "silent !rmdir /Q /S " . a:dir |
| : else |
| : exec "silent !rm -rf " . a:dir |
| : endif |
| :endfun |
| :if has("unix") |
| :let $CDIR = "." |
| /CDIR |
| :else |
| :if has("amiga") |
| :let $TDIR = "/testdir" |
| :else |
| :let $TDIR = "." |
| :endif |
| /TDIR |
| :endif |
| :" Dummy writing for making that sure gf doesn't fail even if the current |
| :" file is modified. It can be occurred when executing the following command |
| :" directly on Windows without fixing the 'fileformat': |
| :" > nmake -f Make_dos.mak test17.out |
| :w! test.out |
| gf |
| :set ff=unix |
| :w! test.out |
| :brewind |
| ENDTEST |
| |
| ${CDIR}/test17a.in |
| $TDIR/test17a.in |
| |
| STARTTEST |
| :" check for 'include' without \zs or \ze |
| :lang C |
| :call delete("./Xbase.a") |
| :call DeleteDirectory("Xdir1") |
| :!mkdir Xdir1 |
| :!mkdir "Xdir1/dir2" |
| :e! Xdir1/dir2/foo.a |
| i#include "bar.a": |
| :w |
| :e Xdir1/dir2/bar.a |
| i#include "baz.a": |
| :w |
| :e Xdir1/dir2/baz.a |
| i#include "foo.a": |
| :w |
| :e Xbase.a |
| :set path=Xdir1/dir2 |
| i#include <foo.a>: |
| :w |
| :redir! >>test.out |
| :checkpath! |
| :redir END |
| :brewind |
| ENDTEST |
| |
| STARTTEST |
| :" check for 'include' with \zs and \ze |
| :call delete("./Xbase.b") |
| :call DeleteDirectory("Xdir1") |
| :!mkdir Xdir1 |
| :!mkdir "Xdir1/dir2" |
| :let &include='^\s*%inc\s*/\zs[^/]\+\ze' |
| :function! DotsToSlashes() |
| : return substitute(v:fname, '\.', '/', 'g') . '.b' |
| :endfunction |
| :let &includeexpr='DotsToSlashes()' |
| :e! Xdir1/dir2/foo.b |
| i%inc /bar/: |
| :w |
| :e Xdir1/dir2/bar.b |
| i%inc /baz/: |
| :w |
| :e Xdir1/dir2/baz.b |
| i%inc /foo/: |
| :w |
| :e Xbase.b |
| :set path=Xdir1/dir2 |
| i%inc /foo/: |
| :w |
| :redir! >>test.out |
| :checkpath! |
| :redir END |
| :brewind |
| ENDTEST |
| |
| STARTTEST |
| :" check for 'include' with \zs and no \ze |
| :call delete("./Xbase.c") |
| :call DeleteDirectory("Xdir1") |
| :!mkdir Xdir1 |
| :!mkdir "Xdir1/dir2" |
| :let &include='^\s*%inc\s*\%([[:upper:]][^[:space:]]*\s\+\)\?\zs\S\+\ze' |
| :function! StripNewlineChar() |
| : if v:fname =~ '\n$' |
| : return v:fname[:-2] |
| : endif |
| : return v:fname |
| :endfunction |
| :let &includeexpr='StripNewlineChar()' |
| :e! Xdir1/dir2/foo.c |
| i%inc bar.c: |
| :w |
| :e Xdir1/dir2/bar.c |
| i%inc baz.c: |
| :w |
| :e Xdir1/dir2/baz.c |
| i%inc foo.c: |
| :w |
| :e Xdir1/dir2/FALSE.c |
| i%inc foo.c: |
| :w |
| :e Xbase.c |
| :set path=Xdir1/dir2 |
| i%inc FALSE.c foo.c: |
| :w |
| :redir! >>test.out |
| :checkpath! |
| :redir END |
| :brewind |
| :" change "\" to "/" for Windows and fix 'fileformat' |
| :e test.out |
| :%s#\\#/#g |
| :set ff& |
| :w |
| :q |
| ENDTEST |
| |