| Tests for getcwd(), haslocaldir(), and :lcd vim: set ft=vim : |
| |
| STARTTEST |
| :so small.vim |
| :" Do all test in a separate window to avoid E211 when we recursively |
| :" delete the Xtopdir directory during cleanup |
| :" |
| :" This will cause a few errors, do it silently. |
| :set visualbell |
| :set nocp viminfo+=nviminfo |
| :" |
| :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 |
| :" |
| :function! GetCwdInfo(win, tab) |
| : let tab_changed = 0 |
| : let mod = ":t" |
| : if a:tab > 0 && a:tab != tabpagenr() |
| : let tab_changed = 1 |
| : exec "tabnext " . a:tab |
| : endif |
| : let bufname = fnamemodify(bufname(winbufnr(a:win)), mod) |
| : if tab_changed |
| : tabprevious |
| : endif |
| : if a:win == 0 && a:tab == 0 |
| : let dirname = fnamemodify(getcwd(), mod) |
| : let lflag = haslocaldir() |
| : elseif a:tab == 0 |
| : let dirname = fnamemodify(getcwd(a:win), mod) |
| : let lflag = haslocaldir(a:win) |
| : else |
| : let dirname = fnamemodify(getcwd(a:win, a:tab), mod) |
| : let lflag = haslocaldir(a:win, a:tab) |
| : endif |
| : return bufname . ' ' . dirname . ' ' . lflag |
| :endfunction |
| :" On windows a stale "Xtopdir" directory may exist, remove it so that |
| :" we start from a clean state. |
| :call DeleteDirectory("Xtopdir") |
| :let r=[] |
| :new |
| :let cwd=getcwd() |
| :let test_out = cwd . '/test.out' |
| :call mkdir('Xtopdir') |
| :cd Xtopdir |
| :call mkdir('Xdir1') |
| :call mkdir('Xdir2') |
| :call mkdir('Xdir3') |
| :new a |
| :new b |
| :new c |
| :3wincmd w |
| :lcd Xdir1 |
| :call add(r, GetCwdInfo(0, 0)) |
| :wincmd W |
| :call add(r, GetCwdInfo(0, 0)) |
| :wincmd W |
| :lcd Xdir3 |
| :call add(r, GetCwdInfo(0, 0)) |
| :call add(r, GetCwdInfo(bufwinnr("a"), 0)) |
| :call add(r, GetCwdInfo(bufwinnr("b"), 0)) |
| :call add(r, GetCwdInfo(bufwinnr("c"), 0)) |
| :wincmd W |
| :call add(r, GetCwdInfo(bufwinnr("a"), tabpagenr())) |
| :call add(r, GetCwdInfo(bufwinnr("b"), tabpagenr())) |
| :call add(r, GetCwdInfo(bufwinnr("c"), tabpagenr())) |
| :" |
| :tabnew x |
| :new y |
| :new z |
| :3wincmd w |
| :call add(r, GetCwdInfo(0, 0)) |
| :wincmd W |
| :lcd Xdir2 |
| :call add(r, GetCwdInfo(0, 0)) |
| :wincmd W |
| :lcd Xdir3 |
| :call add(r, GetCwdInfo(0, 0)) |
| :call add(r, GetCwdInfo(bufwinnr("x"), 0)) |
| :call add(r, GetCwdInfo(bufwinnr("y"), 0)) |
| :call add(r, GetCwdInfo(bufwinnr("z"), 0)) |
| :let tp_nr = tabpagenr() |
| :tabrewind |
| :call add(r, GetCwdInfo(3, tp_nr)) |
| :call add(r, GetCwdInfo(2, tp_nr)) |
| :call add(r, GetCwdInfo(1, tp_nr)) |
| :" |
| :call writefile(r, test_out, "a") |
| :q |
| :exec "cd " . cwd |
| :call DeleteDirectory("Xtopdir") |
| :qa! |
| ENDTEST |
| |
| |