2014-07-14 22:51:33 +02:00
|
|
|
# http://daringfireball.net/projects/markdown
|
|
|
|
# ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
|
|
|
|
|
|
|
|
# Detection
|
|
|
|
# ‾‾‾‾‾‾‾‾‾
|
|
|
|
|
2015-08-13 21:06:55 +02:00
|
|
|
hook global BufCreate .*[.](markdown|md|mkd) %{
|
2017-11-03 08:34:41 +01:00
|
|
|
set-option buffer filetype markdown
|
2014-07-14 22:51:33 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
# Highlighters
|
|
|
|
# ‾‾‾‾‾‾‾‾‾‾‾‾
|
|
|
|
|
2017-12-12 10:16:37 +01:00
|
|
|
%sh{
|
|
|
|
languages="
|
|
|
|
c cabal clojure coffee cpp css cucumber d diff dockerfile fish gas go
|
|
|
|
haml haskell html ini java javascript json julia kak kickstart latex
|
|
|
|
lisp lua makefile markdown moon objc perl pug python ragel ruby rust
|
|
|
|
sass scala scss sh swift tupfile typescript yaml
|
|
|
|
"
|
|
|
|
echo 'add-highlighter shared/ regions -default content markdown \'
|
|
|
|
for lang in ${languages}; do
|
|
|
|
printf '%s ```\h*%s\\b ``` "" ' "${lang}" "${lang}"
|
|
|
|
done
|
|
|
|
echo 'code ``` ``` "" \
|
|
|
|
code ``[^`] `` "" \
|
|
|
|
code `[^`] ` "" '
|
|
|
|
for lang in ${languages}; do
|
|
|
|
ref=$([ "${lang}" = kak ] && echo kakrc || echo "${lang}")
|
|
|
|
printf '
|
|
|
|
add-highlighter shared/markdown/%s/ regions -default fence outer inner \A```[^\\n]*\K (?=```) ""
|
|
|
|
add-highlighter shared/markdown/%s/outer/fence fill meta
|
|
|
|
add-highlighter shared/markdown/%s/outer/inner ref %s
|
|
|
|
' "${lang}" "${lang}" "${lang}" "${ref}"
|
|
|
|
done
|
|
|
|
}
|
2014-07-14 22:51:33 +02:00
|
|
|
|
2017-10-28 05:00:51 +02:00
|
|
|
add-highlighter shared/markdown/code fill meta
|
|
|
|
|
2014-07-14 22:51:33 +02:00
|
|
|
# Setext-style header
|
2017-10-28 05:00:51 +02:00
|
|
|
add-highlighter shared/markdown/content regex (\A|\n\n)[^\n]+\n={2,}\h*\n\h*$ 0:title
|
|
|
|
add-highlighter shared/markdown/content regex (\A|\n\n)[^\n]+\n-{2,}\h*\n\h*$ 0:header
|
2014-07-14 22:51:33 +02:00
|
|
|
|
|
|
|
# Atx-style header
|
2017-10-28 05:00:51 +02:00
|
|
|
add-highlighter shared/markdown/content regex ^(#+)(\h+)([^\n]+) 1:header
|
|
|
|
|
|
|
|
add-highlighter shared/markdown/content regex ^\h?((?:[\s\t]+)?[-\*])\h+[^\n]*(\n\h+[^-\*]\S+[^\n]*\n)*$ 0:list 1:bullet
|
|
|
|
add-highlighter shared/markdown/content regex \B\+[^\n]+?\+\B 0:mono
|
2017-12-08 23:04:43 +01:00
|
|
|
add-highlighter shared/markdown/content regex [^`](``([^\s`]|([^\s`][^`]*[^\s`]))``)[^`] 1:mono
|
|
|
|
add-highlighter shared/markdown/content regex [^*](\*([^\s*]|([^\s*][^*]*[^\s*]))\*)[^*] 1:italic
|
|
|
|
add-highlighter shared/markdown/content regex [^_](_([^\s_]|([^\s_][^_]*[^\s_]))_)[^_] 1:italic
|
|
|
|
add-highlighter shared/markdown/content regex [^*](\*\*([^\s*]|([^\s*][^*]*[^\s*]))\*\*)[^*] 1:bold
|
|
|
|
add-highlighter shared/markdown/content regex [^_](__([^\s_]|([^\s_][^_]*[^\s_]))__)[^_] 1:bold
|
2017-10-28 05:00:51 +02:00
|
|
|
add-highlighter shared/markdown/content regex <(([a-z]+://.*?)|((mailto:)?[\w+-]+@[a-z]+[.][a-z]+))> 0:link
|
2018-03-15 08:16:47 +01:00
|
|
|
add-highlighter shared/markdown/content regex ^\[[^\]\n]*\]:\h*([^\n]*) 1:link
|
2017-10-28 05:00:51 +02:00
|
|
|
add-highlighter shared/markdown/content regex ^\h*(>\h*)+ 0:comment
|
|
|
|
add-highlighter shared/markdown/content regex \H\K\h\h$ 0:PrimarySelection
|
2014-07-14 22:51:33 +02:00
|
|
|
|
|
|
|
# Commands
|
|
|
|
# ‾‾‾‾‾‾‾‾
|
|
|
|
|
2017-11-03 08:34:41 +01:00
|
|
|
define-command -hidden markdown-indent-on-new-line %{
|
2017-11-03 09:09:45 +01:00
|
|
|
evaluate-commands -draft -itersel %{
|
2017-01-11 14:56:48 +01:00
|
|
|
# copy block quote(s), list item prefix and following white spaces
|
2017-11-03 09:09:45 +01:00
|
|
|
try %{ execute-keys -draft k <a-x> s ^\h*\K((>\h*)+([*+-]\h)?|(>\h*)*[*+-]\h)\h* <ret> y gh j P }
|
2014-07-14 22:51:33 +02:00
|
|
|
# preserve previous line indent
|
2017-11-03 09:09:45 +01:00
|
|
|
try %{ execute-keys -draft \; K <a-&> }
|
2015-11-04 10:48:47 +01:00
|
|
|
# remove trailing white spaces
|
2017-11-03 09:09:45 +01:00
|
|
|
try %{ execute-keys -draft -itersel %{ k<a-x> s \h+$ <ret> d } }
|
2014-07-14 22:51:33 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
# Initialization
|
|
|
|
# ‾‾‾‾‾‾‾‾‾‾‾‾‾‾
|
|
|
|
|
2017-10-28 05:00:51 +02:00
|
|
|
hook -group markdown-highlight global WinSetOption filetype=markdown %{ add-highlighter window ref markdown }
|
2016-09-25 15:15:07 +02:00
|
|
|
|
2014-07-14 22:51:33 +02:00
|
|
|
hook global WinSetOption filetype=markdown %{
|
2017-01-13 01:56:30 +01:00
|
|
|
hook window InsertChar \n -group markdown-indent markdown-indent-on-new-line
|
2014-07-14 22:51:33 +02:00
|
|
|
}
|
|
|
|
|
2017-10-28 05:00:51 +02:00
|
|
|
hook -group markdown-highlight global WinSetOption filetype=(?!markdown).* %{ remove-highlighter window/markdown }
|
2016-09-28 08:45:01 +02:00
|
|
|
|
2014-07-14 22:51:33 +02:00
|
|
|
hook global WinSetOption filetype=(?!markdown).* %{
|
2017-01-04 01:07:45 +01:00
|
|
|
remove-hooks window markdown-indent
|
2014-07-14 22:51:33 +02:00
|
|
|
}
|