VSCode C/C++ 远程开发 - 语法高亮颜色不起作用

VSCode C/C++ Remote Development - Syntax Highlighting Colors Not Working

我正在 Linux 机器上使用 VSCode Remote-SSH 进行远程开发。我已经通过 VSCode 在远程机器上安装了 C/C++ 扩展。大多数代码确实正确地突出显示了语法,但我注意到了一些问题。

C 结构根本没有颜色。

有趣的是当我 ctrl+click 转到结构时,颜色起作用了。

这真的很困扰我。为什么这些结构没有像我在 windows 机器上进行本地开发时那样着色?

这是我的 c_cpp_properties.json

{
    "configurations": [
        {
            "name": "Linux",
            "includePath": [
                "${workspaceFolder}/**",
                "${workspaceFolder}",
                "${workspaceFolder}/../../dwcore/dwcore",
                "${workspaceFolder}/../../dwcore/ilsutil",
                "${workspaceFolder}/../../dwcore/ilslog"
            ],
            "defines": [],
            "compilerPath": "/usr/bin/gcc",
            "cStandard": "c11",
            "cppStandard": "c++17",
            "intelliSenseMode": "clang-x64",
            "compilerArgs": [],
            "browse": {
                "path": [
                    "${workspaceFolder}/**",
                    "${workspaceFolder}"
                ],
                "limitSymbolsToIncludedHeaders": true
            }
        }
    ],
    "version": 4
}

不幸的是,根据对以下问题的讨论,目前远程开发似乎不支持增强着色:https://github.com/microsoft/vscode-cpptools/issues/4569

Enhanced colorization does not currently work via remoting, as we don't have access to the current Theme's files to look up colors.

这意味着通常基于语法的语法高亮会起作用,如在 typedef struct mystruct 中,所有标记的功能只能根据周围的上下文来确定,但高级高亮需要更多的知识,需要不会被intellisense提供。

请注意,intellisense 整体与远程开发一起工作,ctrl+click 会显示相应的定义,根据语法正确着色。

自 cpptools 版本 0.29.0 以来已修复此问题

您可以在此处的变更日志中看到它: https://github.com/microsoft/vscode-cpptools/releases/tag/0.29.0

上面写着:

Switch to using the VS Code Semantic Tokens API for semantic colorization (works with remoting). PR #5401, #3932, #3933, #3942

更新您的扩展程序,它现在应该可以正常工作了