Unnamed repository; edit this file 'description' to name the repository.
-rw-r--r--editors/code/language-configuration-rustdoc.json54
-rw-r--r--editors/code/package.json28
-rw-r--r--editors/code/rustdoc-inject.json93
-rw-r--r--editors/code/rustdoc.json82
4 files changed, 257 insertions, 0 deletions
diff --git a/editors/code/language-configuration-rustdoc.json b/editors/code/language-configuration-rustdoc.json
new file mode 100644
index 0000000000..d7cbf2a0d2
--- /dev/null
+++ b/editors/code/language-configuration-rustdoc.json
@@ -0,0 +1,54 @@
+{
+ "comments": {
+ "blockComment": [
+ "<!--",
+ "-->"
+ ]
+ },
+ "brackets": [
+ ["{", "}"],
+ ["[", "]"],
+ ["(", ")"]
+ ],
+ "colorizedBracketPairs": [
+ ],
+ "autoClosingPairs": [
+ {
+ "open": "{",
+ "close": "}"
+ },
+ {
+ "open": "[",
+ "close": "]"
+ },
+ {
+ "open": "(",
+ "close": ")"
+ },
+ {
+ "open": "<",
+ "close": ">",
+ "notIn": [
+ "string"
+ ]
+ }
+ ],
+ "surroundingPairs": [
+ ["(", ")"],
+ ["[", "]"],
+ ["`", "`"],
+ ["_", "_"],
+ ["*", "*"],
+ ["{", "}"],
+ ["'", "'"],
+ ["\"", "\""]
+ ],
+ "folding": {
+ "offSide": true,
+ "markers": {
+ "start": "^\\s*<!--\\s*#?region\\b.*-->",
+ "end": "^\\s*<!--\\s*#?endregion\\b.*-->"
+ }
+ },
+ "wordPattern": { "pattern": "(\\p{Alphabetic}|\\p{Number}|\\p{Nonspacing_Mark})(((\\p{Alphabetic}|\\p{Number}|\\p{Nonspacing_Mark})|[_])?(\\p{Alphabetic}|\\p{Number}|\\p{Nonspacing_Mark}))*", "flags": "ug" },
+}
diff --git a/editors/code/package.json b/editors/code/package.json
index 8307f6833e..351370a096 100644
--- a/editors/code/package.json
+++ b/editors/code/package.json
@@ -1729,6 +1729,13 @@
"rs"
],
"configuration": "language-configuration.json"
+ },
+ {
+ "id": "rustdoc",
+ "extensions": [
+ ".rustdoc"
+ ],
+ "configuration": "./language-configuration-rustdoc.json"
}
],
"grammars": [
@@ -1736,6 +1743,27 @@
"language": "ra_syntax_tree",
"scopeName": "source.ra_syntax_tree",
"path": "ra_syntax_tree.tmGrammar.json"
+ },
+ {
+ "language": "rustdoc",
+ "scopeName": "text.html.markdown.rustdoc",
+ "path": "rustdoc.json",
+ "embeddedLanguages": {
+ "meta.embedded.block.html": "html",
+ "meta.embedded.block.markdown": "markdown",
+ "meta.embedded.block.rust": "rust"
+ }
+ },
+ {
+ "injectTo": [
+ "source.rust"
+ ],
+ "scopeName": "comment.markdown-cell-inject.rustdoc",
+ "path": "rustdoc-inject.json",
+ "embeddedLanguages": {
+ "meta.embedded.block.rustdoc": "rustdoc",
+ "meta.embedded.block.rust": "rust"
+ }
}
],
"problemMatchers": [
diff --git a/editors/code/rustdoc-inject.json b/editors/code/rustdoc-inject.json
new file mode 100644
index 0000000000..45ca2fa96b
--- /dev/null
+++ b/editors/code/rustdoc-inject.json
@@ -0,0 +1,93 @@
+{
+ "injectionSelector": "L:source.rust -string -comment -meta.embedded.block.rustdoc.md",
+ "patterns": [
+ {
+ "include": "#triple-slash"
+ },
+ {
+ "include": "#double-slash-exclamation"
+ },
+ {
+ "include": "#slash-start-exclamation"
+ },
+ {
+ "include": "#slash-double-start"
+ }
+ ],
+ "repository": {
+ "triple-slash": {
+ "begin": "(^|\\G)\\s*(///) ?",
+ "captures": {
+ "2": {
+ "name": "comment.line.double-slash.rust"
+ }
+ },
+ "name": "comment.quote_code.triple-slash.rust",
+ "contentName": "meta.embedded.block.rustdoc",
+ "patterns": [
+ {
+ "include": "text.html.markdown.rustdoc"
+ }
+ ],
+ "while": "(^|\\G)\\s*(///) ?"
+ },
+ "double-slash-exclamation": {
+ "begin": "(^|\\G)\\s*(//!) ?",
+ "captures": {
+ "2": {
+ "name": "comment.line.double-slash.rust"
+ }
+ },
+ "name": "comment.quote_code.double-slash-exclamation.rust",
+ "contentName": "meta.embedded.block.rustdoc",
+ "patterns": [
+ {
+ "include": "text.html.markdown.rustdoc"
+ }
+ ],
+ "while": "(^|\\G)\\s*(//!) ?"
+ },
+ "slash-start-exclamation": {
+ "begin": "(^)(/\\*!) ?$",
+ "captures": {
+ "2": {
+ "name": "comment.block.rust"
+ }
+ },
+ "name": "comment.quote_code.slash-start-exclamation.rust",
+ "contentName": "meta.embedded.block.rustdoc",
+ "patterns": [
+ {
+ "include": "text.html.markdown.rustdoc"
+ }
+ ],
+ "end": "( ?)(\\*/)"
+ },
+ "slash-double-start": {
+ "name": "comment.quote_code.slash-double-start-quote-star.rust",
+ "begin": "(?:^)\\s*/\\*\\* ?$",
+ "end": "\\*/",
+ "patterns": [
+ {
+ "include": "#quote-star"
+ }
+ ]
+ },
+ "quote-star": {
+ "begin": "(^|\\G)\\s*(\\*(?!/)) ?",
+ "captures": {
+ "2": {
+ "name": "comment.punctuation.definition.quote_code.slash-star.MR"
+ }
+ },
+ "contentName": "meta.embedded.block.rustdoc",
+ "patterns": [
+ {
+ "include": "text.html.markdown.rustdoc"
+ }
+ ],
+ "while": "(^|\\G)\\s*(\\*(?!/)) ?"
+ }
+ },
+ "scopeName": "comment.markdown-cell-inject.rustdoc"
+} \ No newline at end of file
diff --git a/editors/code/rustdoc.json b/editors/code/rustdoc.json
new file mode 100644
index 0000000000..230d2de1cf
--- /dev/null
+++ b/editors/code/rustdoc.json
@@ -0,0 +1,82 @@
+{
+ "name": "rustdoc",
+ "patterns": [
+ {
+ "include": "#fenced_code_block"
+ },
+ {
+ "include": "#markdown"
+ }
+ ],
+ "scopeName": "text.html.markdown.rustdoc",
+ "repository": {
+ "markdown":{
+ "patterns": [
+ {
+ "include": "text.html.markdown"
+ }
+ ]
+ },
+ "fenced_code_block":{
+ "patterns": [
+ {
+ "include": "#fenced_code_block_rust"
+ },
+ {
+ "include": "#fenced_code_block_unknown"
+ }
+ ]
+ },
+ "fenced_code_block_rust": {
+ "begin": "(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(rust|not run|not_run)?((\\s+|:|,|\\{|\\?)[^`~]*)?$)",
+ "name": "markup.fenced_code.block.markdown",
+ "end": "(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",
+ "beginCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ },
+ "4": {
+ "name": "fenced_code.block.language.markdown"
+ },
+ "5": {
+ "name": "fenced_code.block.language.attributes.markdown"
+ }
+ },
+ "endCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(^|\\G)(\\s*)(.*)",
+ "while": "(^|\\G)(?!\\s*([`~]{3,})\\s*$)",
+ "contentName": "meta.embedded.block.rust",
+ "patterns": [
+ {
+ "include": "source.rust"
+ }
+ ]
+ }
+ ]
+ },
+ "fenced_code_block_unknown": {
+ "begin": "(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?=([^`~]+)?$)",
+ "beginCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ },
+ "4": {
+ "name": "fenced_code.block.language"
+ }
+ },
+ "end": "(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",
+ "endCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ }
+ },
+ "name": "markup.fenced_code.block.markdown"
+ }
+ }
+} \ No newline at end of file