Vscode Rust Analyzer语法突出显示标点符号不工作

dfddblmv  于 2023-04-21  发布在  Vscode
关注(0)|答案(2)|浏览(168)

我试图在vscode中改变rust中标点符号的语法突出显示,但它似乎对 * 分号,冒号,尖括号和括号 * 不起作用。
我注意到即使设置"*": "#660066"也不能突出显示那些标点符号。那么rust-analyzer会有问题吗?
我的当前settings.json

{
    "rust-analyzer.linkedProjects": [
        "./Cargo.toml"
    ],
    "editor.semanticTokenColorCustomizations": {
        "[Dracula]": {
            "enabled": true,
            "rules": {
                // "macro": "#fa7f38",
                // "*": "#660066", // no effect on ';',':','<>','()','[]'
                "attribute": "#fa7f38",
                "attribute.bracket": "#fa7f38",

                // "builtinAttribute": "#fa7f38",
                "attributeBracket": "#fa7f38",
                "generic": "#fa7f38",- // no effect on ';',':','<>','()','[]'
                "bracket": "#fa7f38",
                // "unresolvedReference": "#fa7f38",

                "enumMember": "#cc9900", // works!
                "namespace": "#99ccff", // works!

                // Punctutation
                "parenthesis": "#660066", // no effect on ';',':','<>','()','[]'
                "brace": "#660066", // no effect on ';',':','<>','()','[]'
                "colon": "#66ff33" // no effect on ';',':','<>','()','[]'
            }
        }
    }
}

对于属性中的括号[]也是如此,如#[cfg(test)]
到目前为止我所尝试的:

  • 重新打开+重新加载vscode
  • 重新安装 rust eclipse 分析仪
  • 在vscode中重新打开打开的标签

有谁知道如何使它工作?
参考:rust-analyzer syntax highlighting,settings.json from reddit user

slsn1g29

slsn1g291#

您需要启用以下设置rust-analyzer.semanticHighlighting.punctuation.enable,否则rust-analyzer不会为标点发出语义突出标记

j7dteeu8

j7dteeu82#

将以下内容放入settings.json文件中:

"rust-analyzer.semanticHighlighting.punctuation.enable": true

设置说明:
对标点符号使用语义标记。
当禁用时,rust-analyzer将仅为标点符号标记语义标记,当它们被标记修饰符或具有特殊角色时。
我假设这是为Add semantic token modifiers for punctuation #6152实现的。
另请参阅rust-analyzer.semanticHighlighting.punctuation.separate.macro.bang设置,该设置使Rust Analyzer在宏调用中为!发出标点符号语义令牌,如果您想让Rust Analyzer为标点符号发出专门的语义令牌类型而不是通用的语义令牌类型,请参阅rust-analyzer.semanticHighlighting.punctuation.specialization.enable
在撰写本文时,上述所有设置的默认值都是false
您可以在its package.json file中找到Rust Analyzer扩展定义的语义令牌类型列表。

相关问题