summaryrefslogtreecommitdiff
path: root/rc/filetype
diff options
context:
space:
mode:
authorIvan Tham <pickfire@riseup.net>2020-05-30 19:34:59 +0800
committerIvan Tham <pickfire@riseup.net>2020-05-31 11:47:47 +0800
commit4ccb5fd315641aed96ebdcd9391f03bd22e3f541 (patch)
tree76593ed30951f2ade4a3629a5ae94a9838e76246 /rc/filetype
parent479790633bd6c3c7a2845230d568563abfdc9868 (diff)
Highlight doc tests in rust
Feels a big laggy when system overloaded
Diffstat (limited to 'rc/filetype')
-rw-r--r--rc/filetype/rust.kak31
1 files changed, 28 insertions, 3 deletions
diff --git a/rc/filetype/rust.kak b/rc/filetype/rust.kak
index 69392cf7..8dfd0929 100644
--- a/rc/filetype/rust.kak
+++ b/rc/filetype/rust.kak
@@ -34,9 +34,34 @@ add-highlighter shared/rust regions
add-highlighter shared/rust/code default-region group
add-highlighter shared/rust/string region %{(?<!')"} (?<!\\)(\\\\)*" fill string
add-highlighter shared/rust/raw_string region -match-capture %{(?<!')r(#*)"} %{"(#*)} fill string
-add-highlighter shared/rust/comment region -recurse "/\*" "/\*" "\*/" fill comment
-add-highlighter shared/rust/documentation region "//[!/]" "$" fill documentation
-add-highlighter shared/rust/line_comment region "//" "$" fill comment
+
+add-highlighter shared/rust/line_doctest region ^\h*//[!/]\h*```($|should_panic|no_run|ignore|allow_fail|rust|test_harness|compile_fail|E\d{4}|edition201[58]) ^\h*//[!/]\h*```$ regions
+add-highlighter shared/rust/line_doctest/marker region ```.* $ group
+add-highlighter shared/rust/line_doctest/marker/fence regex ``` 0:meta
+add-highlighter shared/rust/line_doctest/marker/keywords regex [\d\w] 0:meta # already matched above, just ignore comma
+add-highlighter shared/rust/line_doctest/inner region '^\h*//[!/]\h+#' ' ' group
+add-highlighter shared/rust/line_doctest/inner/comment regex //[!/] 0:documentation
+add-highlighter shared/rust/line_doctest/inner/hidden regex '#' 0:meta
+add-highlighter shared/rust/line_doctest/comment region ^\h*//[!/] ' ' fill documentation
+add-highlighter shared/rust/line_doctest/code default-region ref rust
+add-highlighter shared/rust/line_code_rest region ^\h*//[!/]\h*``` ^\h*//[!/]\h*```$ fill documentation # reset invalid doctest
+add-highlighter shared/rust/line_comment2 region //[!/]{2} $ fill comment
+add-highlighter shared/rust/line_doc region //[!/] $ fill documentation
+add-highlighter shared/rust/line_comment1 region // $ fill comment
+
+add-highlighter shared/rust/block_comment2 region -recurse /\*\*\* /\*\*\* \*/ fill comment
+add-highlighter shared/rust/block_doc region -recurse /\*\* /\*\* \*/ regions
+add-highlighter shared/rust/block_doc/doctest region ```($|should_panic|no_run|ignore|allow_fail|rust|test_harness|compile_fail|E\d{4}|edition201[58]) ```$ regions
+add-highlighter shared/rust/block_doc/doctest/marker region ```.* $ group
+add-highlighter shared/rust/block_doc/doctest/marker/fence regex ``` 0:meta
+add-highlighter shared/rust/block_doc/doctest/marker/keywords regex [\d\w] 0:meta # already matched above, just ignore comma
+add-highlighter shared/rust/block_doc/doctest/inner default-region group
+add-highlighter shared/rust/block_doc/doctest/inner/hidden regex '^\h*\**\h*#' 0:meta
+add-highlighter shared/rust/block_doc/doctest/inner/comment regex ^\h*\* 0:documentation
+add-highlighter shared/rust/block_doc/doctest/inner/code ref rust
+add-highlighter shared/rust/block_doc/code_rest region ``` ``` fill documentation
+add-highlighter shared/rust/block_doc/doc default-region fill documentation
+add-highlighter shared/rust/block_comment1 region -recurse /\* /\* \*/ fill comment
add-highlighter shared/rust/macro_attributes region -recurse "\[" "#!?\[" "\]" regions
add-highlighter shared/rust/macro_attributes/ default-region fill meta