diff options
Diffstat (limited to 'vim/bundle/vim-snippets/UltiSnips/rst.snippets')
m--------- | vim/bundle/vim-snippets | 0 | ||||
-rw-r--r-- | vim/bundle/vim-snippets/UltiSnips/rst.snippets | 293 |
2 files changed, 0 insertions, 293 deletions
diff --git a/vim/bundle/vim-snippets b/vim/bundle/vim-snippets new file mode 160000 +Subproject 15d7e5ec26ec93adee4051b6359be90a943aa38 diff --git a/vim/bundle/vim-snippets/UltiSnips/rst.snippets b/vim/bundle/vim-snippets/UltiSnips/rst.snippets deleted file mode 100644 index 0596eee..0000000 --- a/vim/bundle/vim-snippets/UltiSnips/rst.snippets +++ /dev/null @@ -1,293 +0,0 @@ -# -*- coding: utf-8 -*- - -priority -50 - -########################################################################### -# General Stuff # -########################################################################### -global !p -import vim -from os import path as ospath -from string import Template -import re -from collections import Counter - -from vimsnippets import complete - -#http://docutils.sourceforge.net/docs/ref/rst/roles.html -TEXT_ROLES = ['emphasis','literal','code','math', - 'pep-reference','rfc-reference', - 'strong','subscript','superscript', - 'title-reference','raw'] -TEXT_ROLES_REGEX = r'\.\.\srole::?\s(w+)' - -#http://docutils.sourceforge.net/docs/ref/rst/directives.html#specific-admonitions -SPECIFIC_ADMONITIONS = ["attention", "caution", "danger", - "error", "hint", "important", "note", - "tip", "warning"] -#http://docutils.sourceforge.net/docs/ref/rst/directives.html -DIRECTIVES = ['topic','sidebar','math','epigraph', - 'parsed-literal','code','highlights', - 'pull-quote','compound','container', - 'list-table','class','sectnum', - 'role','default-role','unicode', - 'raw'] - -NONE_CONTENT_DIRECTIVES = ['rubric', 'contents', 'header', - 'footer', 'date', 'include', 'title'] - -INCLUDABLE_DIRECTIVES = ['image', 'figure', 'include'] -# CJK chars -# http://stackoverflow.com/questions/2718196/find-all-chinese-text-in-a-string-using-python-and-regex -CJK_RE = re.compile(u'[⺀-⺙⺛-⻳⼀-⿕々〇〡-〩〸-〺〻㐀-䶵一-鿃豈-鶴侮-頻並-龎]', re.UNICODE) - - -def has_cjk(s): - """Detect if s contains CJK characters.""" - return CJK_RE.search(s) is not None - -def real_filename(filename): - """pealeextension name off if possible - # i.e. "foo.bar.png will return "foo.bar" - """ - return ospath.splitext(filename)[0] - -def check_file_exist(rst_path, relative_path): - """ - For RST file, it can just include files as relative path. - - :param rst_path: absolute path to rst file - :param relative_path: path related to rst file - :return: relative file's absolute path if file exist - """ - abs_path = ospath.join(ospath.dirname(rst_path), relative_path) - if ospath.isfile(abs_path): - return abs_path - - -try: - rst_char_len = vim.strwidth # Requires Vim 7.3+ -except AttributeError: - from unicodedata import east_asian_width - def rst_char_len(s): - """Return the required over-/underline length for s.""" - result = 0 - for c in s: - result += 2 if east_asian_width(c) in ('W', 'F') else 1 - return result - - -def make_items(times, leading='+'): - """ - make lines with leading char multitimes - - :param: times, how many times you need - :param: leading, leading character - """ - times = int(times) - if leading == 1: - msg = "" - for x in range(1, times+1): - msg += "%s. Item\n" % x - return msg - else: - return ("%s Item\n" % leading) * times - - -def look_up_directives(regex, fpath): - """ - find all directive args in given file - :param: regex, the regex that needs to match - :param: path, to path to rst file - - :return: list, empty list if nothing match - """ - try: - with open(fpath) as source: - match = re.findall(regex, source.read()) - except IOError: - match = [] - return match - - -def get_popular_code_type(): - """ - find most popular code type in the given rst - - :param path: file to detect - - :return: string, most popular code type in file - """ - buf = "".join(vim.current.buffer) - types = re.findall(r'[:|\.\.\s]code::?\s(\w+)', buf) - try: - popular_type = Counter(types).most_common()[0][0] - except IndexError: - popular_type = "lua" # Don't break default - return popular_type -endglobal - -snippet part "Part" b -`!p snip.rv = rst_char_len(t[1])*'#'` -${1:${VISUAL:Part name}} -`!p snip.rv = rst_char_len(t[1])*'#'` - -$0 -endsnippet - -snippet chap "Chapter" b -`!p snip.rv = rst_char_len(t[1])*'*'` -${1:${VISUAL:Chapter name}} -`!p snip.rv = rst_char_len(t[1])*'*'` - -$0 -endsnippet - -snippet sec "Section" b -${1:${VISUAL:Section name}} -`!p snip.rv = rst_char_len(t[1])*'='` - -$0 -endsnippet - -snippet ssec "Subsection" b -${1:${VISUAL:Subsection name}} -`!p snip.rv = rst_char_len(t[1])*'-'` - -$0 -endsnippet - -snippet sssec "Subsubsection" b -${1:${VISUAL:Subsubsection name}} -`!p snip.rv = rst_char_len(t[1])*'^'` - -$0 -endsnippet - -snippet para "Paragraph" b -${1:${VISUAL:Paragraph name}} -`!p snip.rv = rst_char_len(t[1])*'"'` - -$0 -endsnippet - -snippet em "Emphasize string" i -`!p -# dirty but works with CJK character detection -if has_cjk(vim.current.line): - snip.rv ="\ "`*${1:${VISUAL:Em}}*`!p -if has_cjk(vim.current.line): - snip.rv ="\ " -else: - snip.rv = " " -`$0 -endsnippet - -snippet st "Strong string" i -`!p -if has_cjk(vim.current.line): - snip.rv ="\ "`**${1:${VISUAL:Strong}}**`!p -if has_cjk(vim.current.line): - snip.rv ="\ " -else: - snip.rv = " " -`$0 -endsnippet - -snippet "li(st)? (?P<num>\d+)" "List" br -$0 -`!p -# usage: li 4<tab> -# which will extand into a unordered list contains 4 items -snip.rv = make_items(match.groupdict()['num']) -` -endsnippet - -snippet "ol(st)? (?P<num>\d+)" "Order List" br -$0 -`!p -# usage: ol 4<tab> -# which will extand into a ordered list contains 4 items -snip.rv = make_items(match.groupdict()['num'], 1) -` -endsnippet -########################################################################### -# More Specialized Stuff. # -########################################################################### -snippet cb "Code Block" b -.. code-block:: ${1:`!p snip.rv = get_popular_code_type()`} - - ${2:${VISUAL:code}} - -$0 -endsnippet - -# match snippets : -# img, inc, fig -snippet id "Includable Directives" b -`!p -real_name=real_filename(ospath.basename(t[2])) -di=t[1][:2] - -link="" -content="" - -if di == 'im': - link = "|{0}|".format(real_name) - -if di == 'fi': - content=""" - :alt: {0} - {0}""".format(real_name) -` -..`!p snip.rv = " %s" % link if link else ""` $1`!p -snip.rv=complete(t[1], INCLUDABLE_DIRECTIVES) -`:: ${2:${VISUAL:file}}`!p -if content: - snip.rv +=" "+content` -`!p -# Tip of whether file is exist in comment type -if not check_file_exist(path, t[2]): - snip.rv='.. FILE {0} does not exist'.format(t[2]) -else: - snip.rv="" -`$0 -endsnippet - -snippet di "Directives" b -.. $1`!p snip.rv=complete(t[1], DIRECTIVES)`:: $2 - - ${3:${VISUAL:Content}} -$0 -endsnippet - -snippet nd "None Content Directives" b -.. $1`!p snip.rv=complete(t[1], NONE_CONTENT_DIRECTIVES)`:: $2 -$0 -endsnippet - -snippet sa "Specific Admonitions" b -.. $1`!p snip.rv =complete(t[1], SPECIFIC_ADMONITIONS)`:: - - ${2:${VISUAL:Content}} - -$0 -endsnippet - -#it will be trigger at start of line or after a word -snippet ro "Text Roles" w -\ :$1`!p snip.rv=complete(t[1], - TEXT_ROLES+look_up_directives(TEXT_ROLES_REGEX, - path))`:\`$2\`\ -endsnippet - -############ -# Sphinx # -############ - -snippet sid "SideBar" b -.. sidebar:: ${1:SideBar Title} - - ${2:${VISUAL:SideBar Content}} -endsnippet -# vim:ft=snippets: |