簡體   English   中英

gnu縮進的Google c樣式設置?

[英]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 (默認), GoogleChromiumMozillaWebKit

使用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個提示:

  1. 對於Emacs集成( clang-format.el ),我個人認為最好綁定clang-format-buffer鍵而不是clang-format-region

  2. 對於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 !!)。

  3. 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM