diff options
| author | Ivan Tham <pickfire@riseup.net> | 2020-05-30 19:34:59 +0800 |
|---|---|---|
| committer | Ivan Tham <pickfire@riseup.net> | 2020-05-31 11:47:47 +0800 |
| commit | 4ccb5fd315641aed96ebdcd9391f03bd22e3f541 (patch) | |
| tree | 76593ed30951f2ade4a3629a5ae94a9838e76246 | |
| parent | 479790633bd6c3c7a2845230d568563abfdc9868 (diff) | |
Highlight doc tests in rust
Feels a big laggy when system overloaded
| -rw-r--r-- | rc/filetype/rust.kak | 31 | ||||
| -rw-r--r-- | test/highlight/rust/comment/cmd | 1 | ||||
| -rw-r--r-- | test/highlight/rust/comment/in | 88 | ||||
| -rw-r--r-- | test/highlight/rust/comment/rc | 3 | ||||
| -rw-r--r-- | test/highlight/rust/comment/script | 7 |
5 files changed, 127 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 diff --git a/test/highlight/rust/comment/cmd b/test/highlight/rust/comment/cmd new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/test/highlight/rust/comment/cmd @@ -0,0 +1 @@ + diff --git a/test/highlight/rust/comment/in b/test/highlight/rust/comment/in new file mode 100644 index 00000000..2ce32f0a --- /dev/null +++ b/test/highlight/rust/comment/in @@ -0,0 +1,88 @@ +//! # Hello World +//! +//! ```shell +//! $ cargo install +//! ``` +//! +//! ``` +//! # use foo; +//! foo::bar("Hello world"); +//! ``` + +//!! ``` +//!! foo::bar("Hello world"); +//!! ``` + +//// ``` +//// foo::bar("Hello world"); +//// ``` + +// ``` +// foo::bar("Hello world"); +// ``` + +// make sure the color does not break +/// ``` +/// # use foo; +/// foo::bar("Hello world"); +/// ``` +fn bar(s: &str) { + println!("{}", s); +} + + /// ```shell + /// $ cargo install + /// ``` + /// + /// ```edition2018,no_run + /// # use foo; + /// foo::bar("Hello world"); + /// ``` + /// + /// ``` + /// # use foo; + /// foo::bar("Hello world"); + /// ``` + + //!! ``` + //!! foo::bar("Hello world"); + //!! ``` + + //// ``` + //// foo::bar("Hello world"); + //// ``` + + // ``` + // foo::bar("Hello world"); + // ``` + + /** + * ```shell + * $ cargo install + * ``` + * + * ```edition2018,no_run + * # use foo; + * foo::bar("Hello world"); + * ``` + */ + + /** + ``` + # use foo; + foo::bar("Hello world"); + ``` + */ + + /*** + * ``` + * foo::bar("Hello world"); + * ``` + */ + + /* + * ``` + * foo::bar("Hello world"); + * ``` + */ + diff --git a/test/highlight/rust/comment/rc b/test/highlight/rust/comment/rc new file mode 100644 index 00000000..64064c25 --- /dev/null +++ b/test/highlight/rust/comment/rc @@ -0,0 +1,3 @@ +source "%val{runtime}/colors/default.kak" +source "%val{runtime}/rc/filetype/rust.kak" +set buffer filetype rust diff --git a/test/highlight/rust/comment/script b/test/highlight/rust/comment/script new file mode 100644 index 00000000..560e4d98 --- /dev/null +++ b/test/highlight/rust/comment/script @@ -0,0 +1,7 @@ +ui_out '{ "jsonrpc": "2.0", "method": "set_ui_options", "params": [{}] }' +ui_out '{ "jsonrpc": "2.0", "method": "draw", "params": [[[{ "face": { "fg": "black", "bg": "white", "attributes": ["final_fg","final_bg"] }, "contents": "/" }, { "face": { "fg": "cyan", "bg": "default", "attributes": [] }, "contents": "/! # Hello World" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "\u000a" }], [{ "face": { "fg": "cyan", "bg": "default", "attributes": [] }, "contents": "//!" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "\u000a" }], [{ "face": { "fg": "cyan", "bg": "default", "attributes": [] }, "contents": "//! ```shell\u000a" }], [{ "face": { "fg": "cyan", "bg": "default", "attributes": [] }, "contents": "//! $ cargo install\u000a" }], [{ "face": { "fg": "cyan", "bg": "default", "attributes": [] }, "contents": "//! ```" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "\u000a" }], [{ "face": { "fg": "cyan", "bg": "default", "attributes": [] }, "contents": "//!" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "\u000a" }], [{ "face": { "fg": "cyan", "bg": "default", "attributes": [] }, "contents": "//! " }, { "face": { "fg": "magenta", "bg": "default", "attributes": [] }, "contents": "```" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "\u000a" }], [{ "face": { "fg": "cyan", "bg": "default", "attributes": [] }, "contents": "//!" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "magenta", "bg": "default", "attributes": [] }, "contents": "#" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "blue", "bg": "default", "attributes": [] }, "contents": "use" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " foo;\u000a" }], [{ "face": { "fg": "cyan", "bg": "default", "attributes": [] }, "contents": "//! " }, { "face": { "fg": "green", "bg": "default", "attributes": [] }, "contents": "foo" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "::" }, { "face": { "fg": "cyan", "bg": "default", "attributes": [] }, "contents": "bar" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "(" }, { "face": { "fg": "magenta", "bg": "default", "attributes": [] }, "contents": "\"Hello world\"" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": ");\u000a" }], [{ "face": { "fg": "cyan", "bg": "default", "attributes": [] }, "contents": "//! " }, { "face": { "fg": "magenta", "bg": "default", "attributes": [] }, "contents": "```" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "\u000a" }], [{ "face": { "fg": "cyan", "bg": "default", "attributes": [] }, "contents": "//!! ```" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "\u000a" }], [{ "face": { "fg": "cyan", "bg": "default", "attributes": [] }, "contents": "//!! foo::bar(\"Hello world\");" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "\u000a" }], [{ "face": { "fg": "cyan", "bg": "default", "attributes": [] }, "contents": "//!! ```" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "\u000a" }], [{ "face": { "fg": "cyan", "bg": "default", "attributes": [] }, "contents": "//// ```" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "\u000a" }], [{ "face": { "fg": "cyan", "bg": "default", "attributes": [] }, "contents": "//// foo::bar(\"Hello world\");" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "\u000a" }], [{ "face": { "fg": "cyan", "bg": "default", "attributes": [] }, "contents": "//// ```" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "\u000a" }], [{ "face": { "fg": "cyan", "bg": "default", "attributes": [] }, "contents": "// ```" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "\u000a" }], [{ "face": { "fg": "cyan", "bg": "default", "attributes": [] }, "contents": "// foo::bar(\"Hello world\");" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "\u000a" }], [{ "face": { "fg": "cyan", "bg": "default", "attributes": [] }, "contents": "// ```" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "\u000a" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "\u000a" }], [{ "face": { "fg": "cyan", "bg": "default", "attributes": [] }, "contents": "// make sure the color does not break" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "\u000a" }]], { "fg": "default", "bg": "default", "attributes": [] }, { "fg": "blue", "bg": "default", "attributes": [] }] }' +ui_out '{ "jsonrpc": "2.0", "method": "menu_hide", "params": [] }' +ui_out '{ "jsonrpc": "2.0", "method": "info_hide", "params": [] }' +ui_out '{ "jsonrpc": "2.0", "method": "draw_status", "params": [[], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "out 1:1 " }, { "face": { "fg": "black", "bg": "yellow", "attributes": [] }, "contents": "" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "blue", "bg": "default", "attributes": [] }, "contents": "1 sel" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " - client0@[kak-tests]" }], { "fg": "cyan", "bg": "default", "attributes": [] }] }' +ui_out '{ "jsonrpc": "2.0", "method": "set_cursor", "params": ["buffer", { "line": 0, "column": 0 }] }' +ui_out '{ "jsonrpc": "2.0", "method": "refresh", "params": [true] }' |
