mirror of
https://github.com/SpaceVim/SpaceVim.git
synced 2025-01-24 02:30:05 +08:00
80 lines
2.2 KiB
Python
80 lines
2.2 KiB
Python
import os
|
|
|
|
exclude_dirs = (
|
|
'.hg',
|
|
'.git',
|
|
'.svn',
|
|
'node_modules',
|
|
'__pycache__',
|
|
)
|
|
|
|
|
|
def djangoplus_find_templates(cwd, app_paths, cmdline=False):
|
|
templates = set()
|
|
project_paths = []
|
|
|
|
app_paths = app_paths.split(',')
|
|
|
|
for file in os.listdir(cwd):
|
|
path = os.path.join(cwd, file)
|
|
|
|
if file[0] == '.' or not os.path.isdir(path) or file in exclude_dirs:
|
|
continue
|
|
|
|
if path not in app_paths and not os.path.exists(os.path.join(path, '__init__.py')):
|
|
continue
|
|
|
|
if path not in app_paths:
|
|
project_paths.append(path)
|
|
|
|
template_paths = set()
|
|
for i, path in enumerate(app_paths):
|
|
if path.startswith('tpl|'):
|
|
path = path[4:]
|
|
elif os.path.split(path)[-1] == 'templates':
|
|
pass
|
|
else:
|
|
path = os.path.join(path, 'templates')
|
|
if not os.path.exists(path):
|
|
path = ''
|
|
|
|
if not path or path in template_paths:
|
|
continue
|
|
template_paths.add(path)
|
|
|
|
for root, dirs, files in os.walk(path):
|
|
directory = root[len(path)+1:]
|
|
if directory:
|
|
templates.add('%s/' % directory)
|
|
templates.update(os.path.join(root, x)[len(path)+1:] for x in files)
|
|
|
|
for path in project_paths:
|
|
for root, dirs, files in os.walk(path):
|
|
dirs[:] = [d for d in dirs if d not in exclude_dirs]
|
|
parts = root.split(os.path.sep)
|
|
if 'templates' not in parts:
|
|
continue
|
|
|
|
i = parts.index('templates')
|
|
i += sum(len(x) for x in parts[:i+1]) + 1
|
|
directory = root[i:]
|
|
if directory:
|
|
templates.add('%s/' % directory)
|
|
templates.update(os.path.join(root, x)[i:] for x in files)
|
|
|
|
templates = list(sorted(templates, key=lambda x:
|
|
(len(x.split(os.path.sep)), x)))
|
|
|
|
try:
|
|
import vim # noqa F811
|
|
vim.command('let s:template_cache = %s' % repr(templates).replace("u'", "'"))
|
|
except ImportError:
|
|
print('\n'.join(templates))
|
|
|
|
|
|
if __name__ == "__main__":
|
|
try:
|
|
import vim # noqa F401
|
|
except ImportError:
|
|
djangoplus_find_templates(os.getcwd(), '', 1)
|