dotfiles/dot_vim/plugin/AppleT.vim
2024-05-18 18:50:38 -07:00

73 lines
1.6 KiB
VimL

function! AppleT(name)
python << EOF
import sys
import os
import re
import vim
def walkIt(search):
fullpath = os.path.expanduser(set_path)
fullsearch = ".*%s.*" % ".*".join(search)
fullsearch = re.sub(" ","[/.]", fullsearch)
bsearch = re.sub(" ",".*[/.].*", search)
exactsearch = "%s" % bsearch
exclude = re.compile("\.quer$|\.resp$|\.pyc$")
ignoredirs = [".svn", "_site-packages"]
fullmatch = re.compile(fullsearch, re.I)
exactmatch = re.compile(exactsearch, re.I)
length = len(fullpath)
results = []
exactresults = []
for root, dirs, files in os.walk(set_path):
for x in ignoredirs:
if x in dirs:
dirs.remove(x)
for f in files:
filename = os.path.join(root,f)
if exclude.search(filename):
pass
elif exactmatch.search(filename):
exactresults.append("%s" % filename)
elif fullmatch.search(filename):
results.append("%s" % filename)
if len(results) == 0:
return
def cmplen(x,y):
return cmp(len(x), len(y))
results.sort(cmplen)
exactresults.sort(cmplen)
results = exactresults + results
for i, a in enumerate(results):
print "%d: %s" % (i + 1, a[length:])
which = vim.eval('input("Which? ")')
if re.match("^[0-9]+$", which) == None:
return
which = int(which) - 1
vim.command("tabnew " + results[which])
thingtosearch = vim.eval("expand(a:name)")
walkIt(thingtosearch)
EOF
endfunction
function! AppleTSetPath(path)
python << EOF
import vim
set_path = vim.eval("expand(a:path)")
EOF
endfunction
if !exists(":AppleTSetPath")
command! -nargs=+ AppleTSetPath :call AppleTSetPath(<q-args>)
endif
if !exists(":CmdT")
command! -nargs=+ CmdT :call AppleT(<q-args>)
endif