73 lines
1.6 KiB
VimL
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
|