vimfiles/plugin/qnamefile.vim

72 lines
2.0 KiB
VimL

"=============================================================================
" File: qnamefile.vim
" Author: batman900 <batman900+vim@gmail.com>
" Last Change: 5/12/2011
" Version: 0.07
if v:version < 700
finish
endif
if exists("g:qnamefile_loaded") && g:qnamefile_loaded
finish
endif
let g:qnamefile_loaded = 1
if !exists("g:qnamefile_hotkey") || g:qnamefile_hotkey == ""
let g:qnamefile_hotkey = "<S-F4>"
endif
if !hasmapto('QNameFileInit')
exe "nmap <unique>" g:qnamefile_hotkey ":call QNameFileInit('', '', 0)<cr>:~"
endif
let s:qnamefile_hotkey = eval('"\' . g:qnamefile_hotkey . '"')
let g:qnamefile_height = 0
let g:qnamefile_leader = 0
let g:qnamefile_regexp = 0
" Find all files from path of the given extension ignoring hidden files
" a:path Where to start searching from
" a:extensions A space separated list of extensions to filter on (e.g. "java cpp h")
function! QNameFileInit(path, extensions, include_hidden)
let path = a:path
if !path
let path = '.'
endif
let ext = ''
if a:extensions
let ext = join(split(a:extensions, ' '), '\|')
let ext = '-and -regex ".*/.*\.\(' . ext . '\)"'
endif
let hidden = ''
if !a:include_hidden
let hidden = '-not -regex ".*/\..*"'
endif
let ofnames = sort(split(system('find ' . a:path . ' -type f ' . hidden . ' ' . ext . ' -print'), "\n"))
let g:cmd_arr = map(ofnames, "fnamemodify(v:val, ':.')")
call QNamePickerStart(g:cmd_arr, {
\ "complete_func": function("QNameFileCompletion"),
\ "acceptors": ["v", "s", "t", "\<M-v>", "\<M-s>", "\<M-t>"],
\ "cancelors": ["g", "\<C-g>", s:qnamefile_hotkey],
\ "regexp": g:qnamefile_regexp,
\ "use_leader": g:qnamefile_leader,
\ "height": g:qnamefile_height,
\})
endfunction
function! QNameFileCompletion(index, key)
if a:key == "s" || a:key == "\<M-s>"
let cmd = "sp"
elseif a:key == "v" || a:key == "\<M-v>"
let cmd = "vert sp"
elseif a:key == "t" || a:key == "\<M-t>"
let cmd = "tabe"
else
let cmd = "e"
endif
exe ':' . cmd . ' ' . g:cmd_arr[a:index]
unlet g:cmd_arr
endfunction