我已将
.clang-format
文件放入我的工作区中。但该格式并未应用于我的代码。我已经检查了设置,后备样式设置为 None,文件设置为 clang_format_style
。
好消息是后备样式不再起作用。这意味着当我尝试设置文档或选择的格式时,什么也没有发生。
这就是我制作自定义格式的方法:
visualstudio.com:在 Visual Studio Code 中编辑 C++
但是缺少一些东西并且格式化没有发生。这就是我工作区中的
.clang-format
的样子:
{
UseTab: 14,
IndentWidth: 4,
BreakBeforeBraces: BS_Attach,
AllowShortIfStatementsOnASingleLine: false,
IndentCaseLabels: false,
ColumnLimit: 0
}
我刚刚遇到了这个问题,但这似乎是 VS Code 中的一个小错误。在我的设置中,我打开了
Editor: Format On Save
,将 C_Cpp: Clang_format_style
设置为 file
,并将 C_Cpp: Formatting
设置为 Default
(这被称为 clang-format)。但保存时什么也没发生。
为了“修复”它,我通过选择一些代码并单击
Format Selection
来强制触发格式,然后出现一个对话框,抱怨有多个可用的格式化程序,我必须从命令面板中选择一个。看起来内置的 MS Intellisense 和 clang-format 正在争夺主导地位 - 尽管 clang-format 在设置中被列为默认格式!在这里选择 clang-format 后,一切又好了。
仅供参考,如果其他人遇到此问题,我也遇到过此问题,但由于不同的原因。我向 .clang-format 文件添加了一个较新的选项,但我在系统上安装的 clang-format 版本不支持该选项。最终它默默地失败了,症状是文件没有被格式化。
因此,请确保您知道您正在使用哪种 clang-format、完整路径,并使用它手动格式化您的一个文件,以查看是否抛出任何错误消息。
TL;DR - 如果 .clang-format 的编码是 UTF-16,请转换或生成 UTF-8 来解决问题。
我希望这对某些人有帮助。
我通常通过使用格式化程序转储样式配置来生成 .clang-format 文件,然后编辑我需要的选项。 IE。
clang-format.exe --style=Microsoft --dump-config > .clang-format
尝试格式化时,我不断出现格式化失败 - 请参阅输出窗口。输出窗口没有显示任何有用的内容。在命令行上输入这个似乎只是想从标准输入获取输入。
事实证明,Windows 版本的 clang-format.exe 在转储配置时会重定向到一个文件,Windows 会尽职尽责地将其保存为 UTF-16。
Windows 中的某个位置可能有一些设置要以 UTF-8 保存,但我通过使用 Linux 版本的 clang-format 生成文件,然后复制到 Windows 中我需要它的位置来修复此问题。
由于某种原因,格式中出现以下选项
粘贴时设置格式
保存时格式化
保存模式下的格式:文件
必须检查。现在效果很好。另请查看应用程序创建的 settings.json 文件。仔细检查您的设置,然后重试。
天啊!这太令人沮丧了。但以一个周六早上为代价,我相信我理解了根本原因(正如 Henrique Bucher 在另一个答案中所暗示的那样,谢谢 Henrique!)。
VS Code 调用 clang-format 的方式具有“优雅”的故障转移:如果您的 .clang-format 包含无法识别的设置,那么它会回退到“完全不同”的配置。但它默默地这样做! 那么会发生什么:
您的项目具有功能完美的 .clang 格式,您正在愉快地一起编码。
BasedOnStyle: Visual Studio
format
因此,如果您尝试调试为什么您的 .clang-format 显然不适用于 VS Code(尤其是以前适用的情况),请务必跳到终端并尝试手动调用。
副驾驶给予,副驾驶拿走:-(