gnu缩进的Google c样式设置
Google c style settings for gnu indent?
我使用谷歌c缩进风格的Emacs (google-c-style.el)和Vim(google. Vim)。
但是因为我有一些现有的代码不是这种风格,我希望我能改变它。我发现有一个叫做GNU缩进的工具可以自动完成这样的事情,它提供了一些通用的样式设置在这个页面上,但是没有为Google c缩进样式。那么它也有等价的吗?
(我尝试了Linux和伯克利风格,感觉它们对我来说绝不是令人满意的)
对于那些对Clang和LLVM感兴趣的人来说,这里有一个替代的解决方案。
clang-format绝对可以帮助您轻松高效地格式化现有源代码。它具有显式内置支持5种格式,即LLVM
(默认),Google
, Chromium
, Mozilla
, WebKit
。
用Google样式格式化文件的简单方法是:
clang-format -style=Google -i filename
其中-i
表示就地修改,您可以尝试不使用此选项预览更改。
要批量格式化现有的C/c++代码,我们可以简单地使用如下命令:
find . -name "*.cc" | xargs clang-format -style=Google -i
除了列出的5种格式,实际上还有其他样式,如GNU
(在修订197138;很遗憾文件没有同步)。
注意clang-format像一样接受rc文件。clang-format或_clang-format在项目中,添加这样一个配置文件(如clang-format的官方教程页面所述)的最简单方法是转储现有格式的配置,如:
clang-format -style=Google -dump-config >.clang-format
也可以使用BasedOnStyle
选项,这样配置文件可能看起来像:
---
BasedOnStyle: Chromium
PointerBindsToType: false
ObjCSpaceAfterProperty: true
...
使用。clang-format或_clang-format作为关键字在Github上搜索,还有其他示例;或者你可以参考这个网站来帮助建立一个。
还集成了ide/编辑器,如Visual Studio(在clang-format-vs目录下),Sublime, Emacs, Vim(都在clang-format目录下)。
对于Emacs集成(
clang-format.el
),我个人认为最好为clang-format-buffer
绑定键而不是clang-format-region
。对于Mac OSX的自制安装,使用
brew install --with-clang, --with-lld, --with-python --HEAD llvm
可以获得clang-format
支持,其集成文件在$(brew --cache)/llvm--clang--svn-HEAD/tools/clang-format
中(奖励:那里甚至有git-clang-format
!!)。clang-extra-tools中还有其他很棒的工具,例如
clang-modernize
(用于"在适当的情况下自动将针对旧标准编写的c++代码转换为使用最新的c++标准的特性"),真的值得一试!
简单阅读一下google的编码风格就会发现,除了有2个空格缩进(包括case语句)、80列行和没有制表符之外,它基本上是K&R编码风格。因此,以下选项应该可以完成:
-kr -ci2 -cli2 -i2 -l80 -nut
从这个开始。您可能需要调整生成的代码。c++对indent
的支持特别弱。
传奇:
-
-kr
: K&R style -
-ci2
:继续缩进,多行代码语句的第一行之后的行被缩进2个空格 -
-cli2
:大小写标签缩进,case
标签从switch
缩进2个空格 -
-i2
:缩进,2个空格 -
-l80
:长度,80列 -
-nut
: No tabs
作为一种选择,你可以考虑在批处理模式下执行emacs
来为你的代码应用缩进。简要:
创建一个名为emacs-format-file
的文件,内容为:
(defun emacs-format-function ()
"Format the whole buffer."
(c-set-style "Google")
(indent-region (point-min) (point-max) nil)
(untabify (point-min) (point-max))
(save-buffer))
在shell中执行以下命令:
emacs -batch your_source_file.c
-l emacs-format-file -f emacs-format-function
- 在QComboBox或QListWidget中设置所选元素的样式文本?
- 在 QTabWidget 中动态设置单个选项卡的样式
- 如何仅设置 QTabWidget 背景颜色样式表
- Qt自定义小部件外观在设置样式表后没有变化
- 无法增加 QToolButton 的大小(按钮样式设置为 Qt::ToolButtonTextBesideIcon)
- 无法在 qt 中为 QWidget 中的派生类设置样式表
- QT设置了所有对象以外的所有对象样式
- 如何在QT中设置样式表以选择假发背景的随机图像
- 为 QWidget 的私有成员设置样式表
- wxStyledTextCtrl 如何设置关键字样式
- 如何在C++中有条件地设置 C 样式字符串?
- QT Designer-设置样式表 - 现在进行硬编码 - 想要以编程方式设置
- 应用字体更改后,丢失样式表设置
- 设置精度应用于旧的 C 样式代码
- 如何设置Clang-Format样式选项,以在捕获前保持不合格
- 101 Qt 样式表边距填充黑客指南在C++。设置填充不起作用
- 在 foreach 样式循环中设置无符号 int 始终为零
- 如何使用样式表设置QGraphicsScene的背景笔刷
- 我们是否可以像jquery一样在C++/Java中使用链式样式设置器
- gnu缩进的Google c样式设置