Auto merge of #16541 - Veykril:highlight-rustdoc, r=Veykril

Highlight rustdoc

Updated version of https://github.com/rust-lang/rust-analyzer/pull/16340
This commit is contained in:
bors 2024-02-12 15:20:33 +00:00
commit 35b0d66875
5 changed files with 243 additions and 0 deletions

View file

@ -12,3 +12,6 @@
!ra_syntax_tree.tmGrammar.json !ra_syntax_tree.tmGrammar.json
!server !server
!README.md !README.md
!language-configuration-rustdoc.json
!rustdoc-inject.json
!rustdoc.json

View file

@ -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"
}
}

View file

@ -1761,6 +1761,13 @@
"rs" "rs"
], ],
"configuration": "language-configuration.json" "configuration": "language-configuration.json"
},
{
"id": "rustdoc",
"extensions": [
".rustdoc"
],
"configuration": "./language-configuration-rustdoc.json"
} }
], ],
"grammars": [ "grammars": [
@ -1768,6 +1775,27 @@
"language": "ra_syntax_tree", "language": "ra_syntax_tree",
"scopeName": "source.ra_syntax_tree", "scopeName": "source.ra_syntax_tree",
"path": "ra_syntax_tree.tmGrammar.json" "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": [ "problemMatchers": [

View file

@ -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"
}

82
editors/code/rustdoc.json Normal file
View file

@ -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"
}
}
}