将Visual Studio Code路径设置为.clang_format文件的路径

6
如何告诉 VS Code 查找 .clang_format 文件的位置?我在一个不是 vscode 项目根目录下的位置有这个文件。
Clang_format_path 显然不是我需要的,因为它指定了 clang 可执行文件的路径:
C_Cpp: Clang_format_path:clang-format 可执行文件的完整路径。如果未指定,并且在环境变量路径中可用,则使用该路径。如果在环境变量路径中找不到,则将使用扩展程序捆绑的 clang-format 副本。
然后有 Clang_format_style。
C_Cpp: Clang_format_style:编码风格,目前支持:Visual Studio、LLVM、Google、Chromium、Mozilla、WebKit。使用“file”从当前或父目录中的 .clang-format 文件加载样式。使用 {key: value,...} 设置特定参数。例如,“Visual Studio”风格类似于:{ BasedOnStyle: LLVM, UseTab: Never, IndentWidth: 4, TabWidth: 4, BreakBeforeBraces: Allman, AllowShortIfStatementsOnASingleLine: false, IndentCaseLabels: false, ColumnLimit: 0, AccessModifierOffset: -4 }
我可以将其设置为“file”,但是如何指定文件的位置呢?

四年过去了,这个简单的东西还是没有被添加到扩展中。 - undefined
3个回答

4

很可惜,目前看来这是不可能的。该扩展程序只会在项目目录中查找.clang-format文件。


1
2022年现在已经可以了,参见这个答案 - Déjà vu
@Déjàvu 不,VS Code扩展不支持这个功能。 - undefined

4

我也曾经寻找此类功能,但是微软提供的 C/CPP 扩展无法实现。

你需要下载并安装 Clang,它与 LLVM 捆绑在一起。下载链接为 https://releases.llvm.org/download.html(在预构建二进制文件下选择适合你系统的版本)。

安装时,它会要求你将 LLVM 添加到路径目录中。如果你不想手动添加它,那么稍后就必须将其添加到 vscode 的 settings.json 文件中。

首先在 VS Code 中安装 clang-format 扩展程序 - https://marketplace.visualstudio.com/items?itemName=xaver.clang-format

安装完成后将 clang-format 设置为默认格式化工具

将 .clang-format 文件放置在打开的项目目录中

然后前往你的 settings.json 文件并添加以下行

"clang-format.language.cpp.style": "file"

(如果您已将LLVM添加到路径中,请跳过此步骤) 在settings.json文件中添加以下行,将地址替换为您的LLVM(clang)路径

"clang-format.executable": "/absolute/path/to/clang-format"

现在,该扩展将自动在活动目录中搜索 .clang-format 文件。

每次更改活动目录时,您必须粘贴 .clang-format 文件。没有其他直接在设置中定义 .clang-format 路径的方法。

有关路径设置的更多信息,请参见此处的答案:如何指定 clang-format 文件?


2

看起来这是设置:

"C_Cpp.clang_format_style": "file : ./clang_format"

请使用相对路径或绝对路径从settings.jsonxyz.code-workspace中指定的设置中获取。

来源:https://github.com/microsoft/vscode-cpptools/issues/10445#issuecomment-1411249767

附:

来自Intellisense:

编码风格,目前支持:Visual Studio、LLVM、Google、Chromium、Mozilla、WebKit、Microsoft、GNU。使用文件加载当前或父目录中的.clang-format文件,或使用file:/.clang-format引用特定路径。使用{key: value, ...}设置特定参数。例如,Visual Studio风格类似于:{ BasedOnStyle: LLVM, UseTab: Never, IndentWidth: 4, TabWidth: 4, BreakBeforeBraces: Allman, AllowShortIfStatementsOnASingleLine: false, IndentCaseLabels: false, ColumnLimit: 0, AccessModifierOffset: -4, NamespaceIndentation: All, FixNamespaceComments: false }。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接