markdown.kak: Clean up code-block and code-span formatting.
Previously, a code block was anything between triple-backtics, including inline blocks: some text ``` not a codeblock, but highlighted as one ``` other text and even if the closing backticks had the wrong indent: ``` this is a code block containing a triple backtick ``` this is still a code block, but Kakoune thinks otherwise ``` Now we use the -match-capture flag to ensure the start and end fences have exactly the same indent. Previously, the generic code-block region was defined first, which meant that it took priority over all the language-specific highlighters. Now we define the generic code-block highlighting *after* the others, which fixes #2304. Previously, code-spans were defined as ordinary inline markup, but in Markdown ordinary formatting doesn't work inside code-spans. Therefore, they are now regions unto themselves, defined according to section 6.3 of the CommonMark spec <https://spec.commonmark.org/0.28/#code-spans>, which addresses a comment on #2111.
This commit is contained in:
parent
af8dd681d5
commit
535abe2ba7
|
@ -13,7 +13,6 @@ hook global BufCreate .*[.](markdown|md|mkd) %{
|
||||||
|
|
||||||
add-highlighter shared/markdown regions
|
add-highlighter shared/markdown regions
|
||||||
add-highlighter shared/markdown/content default-region group
|
add-highlighter shared/markdown/content default-region group
|
||||||
add-highlighter shared/markdown/code region ``` ``` fill meta
|
|
||||||
|
|
||||||
evaluate-commands %sh{
|
evaluate-commands %sh{
|
||||||
languages="
|
languages="
|
||||||
|
@ -23,13 +22,19 @@ evaluate-commands %sh{
|
||||||
sass scala scss sh swift tupfile typescript yaml
|
sass scala scss sh swift tupfile typescript yaml
|
||||||
"
|
"
|
||||||
for lang in ${languages}; do
|
for lang in ${languages}; do
|
||||||
printf 'add-highlighter shared/markdown/%s region ```\h*%s\\b ``` regions\n' "${lang}" "${lang}"
|
printf 'add-highlighter shared/markdown/%s region -match-capture ^(\h*)```\h*%s\\b ^(\h*)``` regions\n' "${lang}" "${lang}"
|
||||||
printf 'add-highlighter shared/markdown/%s/ default-region fill meta\n' "${lang}"
|
printf 'add-highlighter shared/markdown/%s/ default-region fill meta\n' "${lang}"
|
||||||
[ "${lang}" = kak ] && ref=kakrc || ref="${lang}"
|
[ "${lang}" = kak ] && ref=kakrc || ref="${lang}"
|
||||||
printf 'add-highlighter shared/markdown/%s/inner region \A```[^\\n]*\K (?=```) ref %s\n' "${lang}" "${ref}"
|
printf 'add-highlighter shared/markdown/%s/inner region \A```[^\\n]*\K (?=```) ref %s\n' "${lang}" "${ref}"
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
add-highlighter shared/markdown/codeblock region -match-capture \
|
||||||
|
^(\h*)```\h* \
|
||||||
|
^(\h*)```\h*$ \
|
||||||
|
fill meta
|
||||||
|
add-highlighter shared/markdown/codespan region -match-capture (`+) (`+) fill mono
|
||||||
|
|
||||||
# Setext-style header
|
# Setext-style header
|
||||||
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:title
|
||||||
add-highlighter shared/markdown/content/ regex (\A|\n\n)[^\n]+\n-{2,}\h*\n\h*$ 0:header
|
add-highlighter shared/markdown/content/ regex (\A|\n\n)[^\n]+\n-{2,}\h*\n\h*$ 0:header
|
||||||
|
@ -39,8 +44,6 @@ 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 ^\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
|
add-highlighter shared/markdown/content/ regex \B\+[^\n]+?\+\B 0:mono
|
||||||
add-highlighter shared/markdown/content/ regex [^`](`([^\s`]|([^\s`](\n?[^\n`])*[^\s`]))`)[^`] 1:mono
|
|
||||||
add-highlighter shared/markdown/content/ regex [^`](``([^\s`]|([^\s`](\n?[^\n`])*[^\s`]))``)[^`] 1:mono
|
|
||||||
add-highlighter shared/markdown/content/ regex [^*](\*([^\s*]|([^\s*](\n?[^\n*])*[^\s*]))\*)[^*] 1:italic
|
add-highlighter shared/markdown/content/ regex [^*](\*([^\s*]|([^\s*](\n?[^\n*])*[^\s*]))\*)[^*] 1:italic
|
||||||
add-highlighter shared/markdown/content/ regex [^_](_([^\s_]|([^\s_](\n?[^\n_])*[^\s_]))_)[^_] 1:italic
|
add-highlighter shared/markdown/content/ regex [^_](_([^\s_]|([^\s_](\n?[^\n_])*[^\s_]))_)[^_] 1:italic
|
||||||
add-highlighter shared/markdown/content/ regex [^*](\*\*([^\s*]|([^\s*](\n?[^\n*])*[^\s*]))\*\*)[^*] 1:bold
|
add-highlighter shared/markdown/content/ regex [^*](\*\*([^\s*]|([^\s*](\n?[^\n*])*[^\s*]))\*\*)[^*] 1:bold
|
||||||
|
|
Loading…
Reference in New Issue
Block a user