[英]Google c style settings for gnu indent?
我正在為Emacs( google-c-style.el )和Vim( google.vim )使用google c縮進樣式。
但是因為我有一些不是這種風格的現有代碼,我希望我能改變它。 我發現有一個名為GNU indent的工具可以自動執行此操作,它在此頁面上提供了一些常見的樣式設置,但是沒有Google c縮進樣式。 SO也有同等效力嗎?
(我嘗試了Linux和Berkley的風格,覺得它們對我來說並不滿意)
對於記錄,對於那些對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在項目中接受名為.clang-format或_clang-format的 rc文件,添加這樣的配置文件的最簡單方法(如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格式 )。
另外3個提示:
對於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 ++標准的特性”),真的值得一試!
谷歌編碼風格的簡要說明顯示它主要是K&R編碼風格,除了2個空格縮進(包括案例陳述),80列行和沒有標簽。 因此,以下選項應該實現:
-kr -ci2 -cli2 -i2 -l80 -nut
從那開始。 您可能需要調整生成的代碼。 特別是C ++支持對indent
很弱。
傳說:
-kr
:K&R風格 -ci2
:延續縮進,多行代碼語句第一行后面的行縮進2個空格 -cli2
:案例標簽縮進, case
標簽從switch
縮進2個空格 -i2
:縮進,2個空格 -l80
:長度,80列 -nut
:沒有標簽 作為替代方案,您可以考慮以批處理模式執行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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.