From 441b6df7f397ef00b17695d5943a19be3512dc9b Mon Sep 17 00:00:00 2001 From: Max Bucknell Date: Wed, 15 Mar 2017 14:40:53 +0400 Subject: [PATCH] Some templating improvements --- lib/python/mbutils.py | 66 ++++++++++++++++++- vim/vim.symlink/UltiSnips/php.snippets | 42 ------------ vim/vim.symlink/UltiSnips/php_class.snippets | 65 ++++++++++++++++++ vim/vim.symlink/UltiSnips/php_field.snippets | 22 +++++++ .../UltiSnips/php_methods.snippets | 44 ++++++++----- vim/vim.symlink/UltiSnips/xml.snippets | 17 +++-- vim/vim.symlink/colors/maxbucknell.vim | 16 +++++ 7 files changed, 207 insertions(+), 65 deletions(-) create mode 100644 vim/vim.symlink/UltiSnips/php_class.snippets create mode 100644 vim/vim.symlink/UltiSnips/php_field.snippets diff --git a/lib/python/mbutils.py b/lib/python/mbutils.py index 5066b23..7ffce44 100644 --- a/lib/python/mbutils.py +++ b/lib/python/mbutils.py @@ -25,6 +25,13 @@ def _parse_composer_manifest(path): manifest = json.load(composer_file) return manifest +def _get_package_name(manifest): + '''Return the name field from composer.json.''' + try: + return manifest['name'] + except KeyError: + return 'foo/bar' + def _get_all_autoloaders(manifest): '''Combine all PSR-0 and PSR-4 autoloaders''' autoloaders = dict() @@ -61,7 +68,10 @@ def convert_path(dirname): def get_namespace(dirname): '''Convert dirname into namespace intelligently.''' - composer_json = find_in_parent('composer.json', dirname) + try: + composer_json = find_in_parent('composer.json', dirname) + except IOError: + return None composer_manifest = _parse_composer_manifest(composer_json) repo_root = path.dirname(composer_json) relative_path = path.relpath(dirname, repo_root) @@ -72,9 +82,59 @@ def get_namespace(dirname): return namespace + convert_path(remainder) +def get_package_name(dirname): + '''Find package name from current location.''' + try: + composer_json = find_in_parent('composer.json', dirname) + except IOError: + return 'foo/bar' + composer_manifest = _parse_composer_manifest(composer_json) + name = _get_package_name(composer_manifest) + return name + def prepare_arguments(param_tags): arguments = generate_arguments(param_tags) +def add_argument(snip): + '''Search for the next argument list, and insert one. + + These arguments will be of the form + + TypeName $variableName + + and will come from the body the @param snippet: + + * @param Typename $variableName Description + ''' + buffer = snip.buffer + param_line_number = snip.snippet_start[0] + param_line = buffer[param_line_number] + try: + argument_line_number = find_argument_line_number(param_line_number, buffer) + except IndexError: + return + argument_line = buffer[argument_line_number] + argument = get_argument_line(param_line) + new_argument_line = insert_argument(argument, argument_line) + buffer[argument_line_number] = new_argument_line + +def insert_argument(arg, line): + insert_point = line.find(')') + + # No arguments yet, so no comma + if line[insert_point - 1] is '(': + return line[:insert_point] + arg + line[insert_point:] + else: + return line[:insert_point] + ', ' + arg + line[insert_point:] + +def find_argument_line_number(start, buffer): + for line_number, line in enumerate(buffer[start:]): + if line.endswith('*/'): + return line_number + 1 + start + else: + pass + raise IndexError('Could not find end of comment and start of method') + def format_method(snip): '''Convert expanded snippet into method name and args.''' params = get_params_map(snip) @@ -167,7 +227,7 @@ def is_array_type(type): def format_argument_line(type, name): if (type is None): - return ' {},'.format(name) + return name else: - return ' {} {},'.format(type, name) + return '{} {}'.format(type, name) diff --git a/vim/vim.symlink/UltiSnips/php.snippets b/vim/vim.symlink/UltiSnips/php.snippets index ca2d19a..e69de29 100644 --- a/vim/vim.symlink/UltiSnips/php.snippets +++ b/vim/vim.symlink/UltiSnips/php.snippets @@ -1,42 +0,0 @@ -global !p -from mbutils import get_namespace, format_method, map_type, prepare_arguments -import os - -def full_path(filename): - cwd = os.getcwd() - filepath = os.path.join(cwd, filename) - - return os.path.dirname(filepath) -endglobal - -snippet class - - + $0 @@ -10,15 +12,20 @@ endsnippet snippet mdixml - + $0 endsnippet snippet mwidgets - + $0 endsnippet diff --git a/vim/vim.symlink/colors/maxbucknell.vim b/vim/vim.symlink/colors/maxbucknell.vim index 9995c91..82f1898 100644 --- a/vim/vim.symlink/colors/maxbucknell.vim +++ b/vim/vim.symlink/colors/maxbucknell.vim @@ -62,6 +62,10 @@ hi markdownH3 cterm=NONE ctermbg=NONE ctermfg=7 hi markdownH4 cterm=NONE ctermbg=NONE ctermfg=7 hi markdownH5 cterm=NONE ctermbg=NONE ctermfg=7 hi markdownH6 cterm=NONE ctermbg=NONE ctermfg=7 +hi markdownBlockQuote cterm=NONE ctermbg=NONE ctermfg=7 + +" Residual HTML +hi htmlTitle cterm=NONE ctermbg=NONE ctermfg=7 " Miscellaneous leftovers hi helpNote cterm=NONE ctermfg=7 ctermbg=NONE @@ -71,10 +75,16 @@ hi MatchParen cterm=NONE ctermfg=7 ctermbg=5 hi String cterm=NONE ctermfg=6 ctermbg=NONE hi Number cterm=NONE ctermfg=6 ctermbg=NONE hi Boolean cterm=NONE ctermfg=6 ctermbg=NONE +hi phpHereDoc cterm=NONE ctermfg=6 ctermbg=NONE +hi phpNowDoc cterm=NONE ctermfg=6 ctermbg=NONE +hi phpBackslashSequences cterm=NONE ctermfg=6 ctermbg=NONE " Comments are green hi Comment cterm=NONE ctermfg=2 ctermbg=NONE +" Todos are almost green +hi Todo cterm=NONE ctermfg=0 ctermbg=2 + " Preprocessor statements aren't comments. hi PreProc cterm=NONE ctermfg=7 ctermbg=NONE @@ -144,3 +154,9 @@ hi ALEErrorSign cterm=NONE ctermbg=1 ctermfg=1 hi snipLeadingSpaces cterm=NONE ctermbg=0 ctermfg=NONE hi snipTabStop cterm=NONE ctermbg=NONE ctermfg=6 hi snipTabStopDefault cterm=NONE ctermbg=NONE ctermfg=6 + +"""""""""""" +" Long lines +"""""""""""" + +hi ColorColumn cterm=NONE ctermbg=1 ctermfg=NONE