1
0
Fork 0
dotfiles/.config/nvim/UltiSnips/markdown.snippets
2022-03-20 03:19:38 -04:00

96 lines
2.6 KiB
Text

snippet h1 "h1 header" bA
# $0
endsnippet
snippet h2 "h2 header" bA
## $0
endsnippet
snippet h3 "h3 header" bA
### $0
endsnippet
snippet h4 "h4 header" bA
#### $0
endsnippet
snippet h5 "h5 header" bA
##### $0
endsnippet
snippet h6 "h6 header" bA
###### $0
endsnippet
snippet link "link"
[$1]($2)$0
endsnippet
snippet img "image"
![$2]($1)$0
endsnippet
snippet im "inline math"
\$$0\$
endsnippet
snippet am "display math"
\$\$
$0
\$\$
endsnippet
snippet cb "code block" bA
\`\`\`$1
$0
\`\`\`
endsnippet
global !p
# A overkill(dirty) table with automatic alignment feature
def create_table(snip):
# retrieving single line from current string and treat it like tabstops count
placeholders_string = snip.buffer[snip.line].strip()
rows_amount = int(placeholders_string[0])
columns_amount = int(placeholders_string[1])
prefix_str = "from vimsnippets import display_width;"
# erase current line
snip.buffer[snip.line] = ""
# create anonymous snippet with expected content and number of tabstops
anon_snippet_title = "| "
anon_snippet_delimiter = "|"
for col in range(1, columns_amount+1):
sync_rows = [x*columns_amount+col for x in range(rows_amount+1)]
sync_str = ",".join(["t[{0}]".format(x) for x in sync_rows])
max_width_str = "max(list(map(display_width, [" + sync_str + "])))"
cur_width_str = "display_width(t[" + str(col) + "])"
rv_val = "(" + max_width_str + "-" + cur_width_str + ")*' '"
anon_snippet_title += "${" + str(col) + ":head" + str(col)\
+ "}`!p " + prefix_str + "snip.rv=" + rv_val + "` | "
anon_snippet_delimiter += ":`!p " + prefix_str + "snip.rv = "\
+ max_width_str + "*'-'" + "`-|"
anon_snippet_title += "\n"
anon_snippet_delimiter += "\n"
anon_snippet_body = ""
for row in range(1, rows_amount+1):
body_row = "| "
for col in range(1, columns_amount+1):
sync_rows = [x*columns_amount+col for x in range(rows_amount+1)]
sync_str = ",".join(["t[{0}]".format(x) for x in sync_rows])
max_width_str = "max(list(map(display_width, [" + sync_str + "])))"
cur_width_str = "display_width(t[" + str(row*columns_amount+col) + "])"
rv_val = "(" + max_width_str + "-" + cur_width_str + ")*' '"
placeholder = "R{0}C{1}".format(row, col)
body_row += "${" + str(row*columns_amount+col) + ":" + placeholder\
+ "}`!p " + prefix_str + "snip.rv=" + rv_val + "` | "
body_row += "\n"
anon_snippet_body += body_row
anon_snippet_table = anon_snippet_title + anon_snippet_delimiter + anon_snippet_body
# expand anonymous snippet
snip.expand_anon(anon_snippet_table)
endglobal
post_jump "create_table(snip)"
snippet "tb([1-9][1-9])" "Fancy table" br
`!p snip.rv = match.group(1)`
endsnippet