Vim のオレオレ :tab drop を gift.vim で書きなおしてみた

以前書いた、これを gift.vim を使用して書きなおしてみた。


function! s:to_fullpath(filename)
    let name = substitute(fnamemodify(a:filename, ":p"), '\', '/', "g")
    if filereadable(name)
        return name
    else
        return a:filename
    endif
endfunction

function! Tabdrop(filename)
    let bufnr = bufnr(s:to_fullpath(a:filename))
    if index(gift#openable_bufnr_list(), bufnr) == -1
        execute "tabnew" a:filename
        return
    endif
    call gift#jump_window(get(gift#find("bufnr == " . bufnr), 0, [0, 0]))
endfunction


command! -complete=file -nargs=1
\   Tabdrop call Tabdrop(<q-args>)


結構すっきりとした。