Unnamed repository; edit this file 'description' to name the repository.
Auto merge of #16541 - Veykril:highlight-rustdoc, r=Veykril
Highlight rustdoc Updated version of https://github.com/rust-lang/rust-analyzer/pull/16340
bors 2024-02-12
parent 1811210 · parent c6bb352 · commit 35b0d66
-rw-r--r--editors/code/.vscodeignore3
-rw-r--r--editors/code/language-configuration-rustdoc.json37
-rw-r--r--editors/code/package.json28
-rw-r--r--editors/code/rustdoc-inject.json93
-rw-r--r--editors/code/rustdoc.json82
5 files changed, 243 insertions, 0 deletions
diff --git a/editors/code/.vscodeignore b/editors/code/.vscodeignore
index 09dc27056b..5c48205694 100644
--- a/editors/code/.vscodeignore
+++ b/editors/code/.vscodeignore
@@ -12,3 +12,6 @@
!ra_syntax_tree.tmGrammar.json
!server
!README.md
+!language-configuration-rustdoc.json
+!rustdoc-inject.json
+!rustdoc.json
diff --git a/editors/code/language-configuration-rustdoc.json b/editors/code/language-configuration-rustdoc.json
new file mode 100644
index 0000000000..c905d3b606
--- /dev/null
+++ b/editors/code/language-configuration-rustdoc.json
@@ -0,0 +1,37 @@
+{
+ "comments": {
+ "blockComment": ["<!--", "-->"]
+ },
+ "brackets": [
+ ["{", "}"],
+ ["[", "]"],
+ ["(", ")"]
+ ],
+ "colorizedBracketPairs": [],
+ "autoClosingPairs": [
+ { "open": "{", "close": "}" },
+ { "open": "[", "close": "]" },
+ { "open": "(", "close": ")" }
+ ],
+ "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 b42843cdb7..fea11eb56c 100644
--- a/editors/code/package.json
+++ b/editors/code/package.json
@@ -1761,6 +1761,13 @@
"rs"
],
"configuration": "language-configuration.json"
+ },
+ {
+ "id": "rustdoc",
+ "extensions": [
+ ".rustdoc"
+ ],
+ "configuration": "./language-configuration-rustdoc.json"
}
],
"grammars": [
@@ -1768,6 +1775,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..7a4498fea9
--- /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"
+}
diff --git a/editors/code/rustdoc.json b/editors/code/rustdoc.json
new file mode 100644
index 0000000000..cecfae9d75
--- /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"
+ }
+ }
+}