Prog/formatter/clang-format
の編集
[
トップ
] [
編集
|
差分
|
履歴
|
添付
|
リロード
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
-- 雛形とするページ --
App
App/archiver
App/audio
App/audio/audacity
App/audio/mpg321
App/audio/puddletag
App/base64
App/Browser
App/column
App/diff-patch
App/downloader
App/ffmpeg
App/ffprobe
App/find
App/gimp
App/gnuplot
App/ImageMagick
App/info
App/inxi
App/LibreOffice
App/locate
App/md5
App/Music
App/Music/frescobaldi
App/Music/MuseScore
App/OCR
App/od
App/OpenOffice.org
App/pagers
App/pdf
App/QRコード
App/ripgrep
App/screen
App/script
App/sed
App/selenium
App/signal-desktop
App/skype
App/sylpheed
App/tmux
App/ttyrec
App/uniq
App/UUID
App/wget
App/xargs
App/テキスト処理
App/仮想化
App/仮想化/Docker
App/仮想化/qemu
App/仮想化/webos
AutoTicketLinkName
BracketName
CentOS
CentOS/yum
CrossCompile
Debian
Debian/kernel
Debian/kernel/ver8-or-older
Debian/Plan9関連
Debian/ver5
Debian/ver6
Debian/ver7
Debian/ver8
Debian/ver9
Debian/ver10
Debian/ver11
Debian/ver12
Debian/X
Debian/X/日本語
Debian/パッケージ管理
Deveice/Sensor/MotionSensor
Device
Device/Mouse
Device/Net/wifi
Device/Scanner
Device/Sensor
Device/Sensor/MotionSensor
Device/tty
Device/xmodmap
Editor
Editor/atom
Editor/binary
Editor/binary/beav
Editor/binary/hexedit
Editor/emacs
Editor/emacs/clang-format
Editor/emacs/flycheck
Editor/emacs/gdb-mode
Editor/emacs/github/copilot
Editor/emacs/html-mode
Editor/emacs/lisp
Editor/emacs/lsp-mode
Editor/emacs/markdown-mode
Editor/emacs/neotree
Editor/emacs/package-install
Editor/emacs/sdic
Editor/emacs/speedbar
Editor/emacs/XEmacs
Editor/emacs/ローカルビルド
Editor/emacs/多言語
Editor/fte
Editor/vi
FormattingRules
FrontPage
Help
InterWiki
InterWikiName
InterWikiSandBox
iPhone
Lang
Lang/C++
Lang/C++/Boost
Lang/C++/C++11
Lang/C++/C++11/thread
Lang/C++/C++11/コンテナ
Lang/C++/C++11/コンテナ/string
Lang/C++/C++11/初期化子
Lang/C++/C++17
Lang/C++/C++20
Lang/C++/error
Lang/C++/macro
Lang/C++/template
Lang/C++/コンテナ
Lang/C++/処理系
Lang/C-Sharp
Lang/Go
Lang/html
Lang/html/5
Lang/html/5/canvas
Lang/html/css
Lang/Java
Lang/Java/jar
Lang/Objective-C
Lang/Pascal
Lang/Perl
Lang/Perl/CGI
Lang/Perl/thread
Lang/Perl/utf-8
Lang/pike
Lang/Python
Lang/Python/Class
Lang/Python/Error
Lang/Python/import対象パス
Lang/Python/pip
Lang/Python/基本文法
Lang/Python/開発環境
Lang/Rust
Lang/sed
Lang/shell
Lang/shell/bash
Lang/shell/bash/設定
Lang/shell/bash/設定/command-not-found
Lang/Tcl_Tk_Expect
Lang/Tcl_Tk_Expect/Ctrl-キーマップ
Lang/TypeScript
Lang/xml
Mac
Memo
memo
MenuBar
midi
Multimedia
Net
Net/apache
Net/apache2
Net/dig
Net/dns/server
Net/domain
Net/http/アクセス制御
Net/iptables
Net/IRC
Net/Jenkins
Net/lighttpd
Net/mail
Net/mail/X-Face
Net/news
Net/news/gnus
Net/ntp
Net/pukiwiki
Net/pukiwiki/plugin
Net/resolv.conf
Net/SPAM
Net/ss
Net/tcpdump
Net/traceroute
Net/twitter
Net/vpn
Net/web
Net/webAPI
Net/wifi
Net/wifi/AP
Net/監視
otherlinks
PHP
Plan9
PPC
PPC/LinuxPPC
PPC/MkLinux
Prog
Prog/AI
Prog/autotools
Prog/cmake
Prog/Compiler/gcc
Prog/CrossReferencer
Prog/debug
Prog/debug/gdb
Prog/debug/lldb
Prog/debug/ltrace
Prog/debug/memory
Prog/debug/strace
Prog/formatter/clang-format
Prog/GoogleTest
Prog/Gtk
Prog/IDE
Prog/IDE/Geany
Prog/ldd
Prog/make
Prog/nm
Prog/Profiler
Prog/Qt
Prog/readelf
Prog/Sound
Prog/StaticCodeAnalysis
Prog/StaticCodeAnalysis/cppcheck
Prog/strip
Prog/TagSystem
Prog/TagSystem/cscope
Prog/TagSystem/ctags-exuberant
Prog/TagSystem/ebrowse
Prog/TagSystem/etags
Prog/TagSystem/gtags
Prog/TagSystem/id-utils
Prog/TagSystem/lctags
Prog/TagSystem/rtags
Prog/TagSystem/SilentBob
Prog/X/X11
Prog/プロセス間通信
Prog/プロセス間通信/SharedMemory
Prog/プロセス間通信/singal
Prog/人為的なシグナル
Prog/分散ビルド/distcc
Prog/逆アセンブル
PukiWiki
PukiWiki/1.4
PukiWiki/1.4/Manual
PukiWiki/1.4/Manual/Plugin
PukiWiki/1.4/Manual/Plugin/A-D
PukiWiki/1.4/Manual/Plugin/E-G
PukiWiki/1.4/Manual/Plugin/H-K
PukiWiki/1.4/Manual/Plugin/L-N
PukiWiki/1.4/Manual/Plugin/O-R
PukiWiki/1.4/Manual/Plugin/S-U
PukiWiki/1.4/Manual/Plugin/V-Z
RecentDeleted
RS232C
SandBox
Security
Security/aide
Security/chkrootkit
Security/clamav
Security/gpg
Security/pkcs
Security/ssh
Security/test
Security/パスワード解析
System
System/Audio
System/beep
System/bluetooth
System/cpu
System/dm-crypt
System/fs
System/fs/ext2-3
System/fs/mount
System/fs/nfs
System/fs/tmpfs
System/fs/xfs
System/fs/大容量のファイルを高速に作成する
System/fs/強制物理フォーマット
System/grub
System/Hardware情報
System/HDD/IDE/チューニング
System/input
System/iostat
System/Kernel
System/Kernel/Module
System/locale
System/memory
System/OpenCL
System/os
System/power/battery
System/Process
System/random
System/rpm
System/runlevel
System/signal
System/sudo
System/swap
System/USB-Boot
System/user
System/シリアル接続
System/環境変数
TeX
TeX/MusiXTeX
tools
Top/Editor/emacs/python開発環境
transcription/old
Ubuntu
VersionCtl
VersionCtl/git
VersionCtl/git/Gerrit
VersionCtl/git/Gerrit/old
VersionCtl/git/git-gutter+
VersionCtl/git/git-imerge
VersionCtl/git/magit
VersionCtl/git/magit/2.1.0
VersionCtl/git/magit/2.8.0
VersionCtl/git/magit/2.13.1
VersionCtl/git/magit/v3.2.1
VersionCtl/git/magit/v3.3.0
VersionCtl/git/subversion からの移行
VersionCtl/git/subversion とのコマンド対比
VersionCtl/git/tig
VersionCtl/git/統計
VersionCtl/hg
VersionCtl/Mercurial
VersionCtl/repo
VersionCtl/Subversion
WikiEngines
WikiName
WikiWikiWeb
Windows
Windows/cmd
X
X/DisplayManager
X/DisplayManager/gdm3
X/DisplayManager/lightdm
X/font
X/font/old
X/GNOME3
X/input
X/input/OnScreenKeyboard
X/input/キーアサインを変更する
X/input/グラゴル文字
X/input/日本語
X/input/日本語/ATOK X3
X/input/日本語/ibus
X/input/日本語/uim
X/KDE
X/remote
X/screensaver
X/terminal
X/terminal/mlterm
X/terminal/urxvt
X/terminal/uxterm
X/vnc
X/vnc/tigervnc
X/WindowManager
X/WindowManager/9wm
X/WindowManager/amiwm
X/WindowManager/awesome
X/WindowManager/CDE
X/WindowManager/cinnamon
X/WindowManager/dwm
X/WindowManager/flwm
X/WindowManager/i3
X/WindowManager/jwm
X/WindowManager/matchbox
X/WindowManager/MATE
X/WindowManager/mlvwm
X/WindowManager/qvwm
X/WindowManager/ratpoison
X/WindowManager/ude
X/WindowManager/WindowMaker
X/WindowManager/xfce4
X/xdotool
X/Xnest
X/xrdp
X/xvfb
YukiWiki
スタジオ・ホール
旅
旅/Czech
旅/三重
旅/京都・滋賀
旅/兵庫
旅/千葉
旅/各務
旅/和歌山
旅/埼玉
旅/山形
旅/岐阜
旅/岡山
旅/岩手
旅/島根
旅/愛媛
旅/新潟
旅/東京
旅/栃木
旅/神奈川
旅/秋田
旅/群馬
旅/茨城
旅/長野・山梨
旅/静岡
旅/静岡/伊豆
未整理
食
食/チェコ
食/各国
食/料理
食/激辛
食/蕎麦
食/郷土料理
#topicpath ////////////////////////////////////////////////////////////////////////////// * 目次 [#zf6aaa09] #contents(); ////////////////////////////////////////////////////////////////////////////// * 書式オプション(抜粋) [#cbbe2cff] - clang-format で使用される書式設定ファイル ''.clang-format'' に記述するオプションについて記載する。 //============================================================================ ** Language: [#Language] |~val |~description | |None |使用しない | |Cpp |C, C++, Objective-C, Objective-C++ を使用する | |Java |Java を使用する | |JavaScript |JavaScript を使用する | |Proto |[[Protocol Buffers>https://developers.google.com/protocol-buffers/]] | //============================================================================ ** AccessModifierOffset: [#AccessModifierOffset] - アクセス修飾子(C++ class の public:, private:, protected: など)の追加のインデント幅を指定する。 - パラメータと挙動 -- ''0'' class CFoo : public CSuperFoo { public: CFoo(int ini_a, char* ini_b) : m_a(ini_a), m_b(ini_b), m_c{} {} private: char* m_b; uint64_t m_c; }; -- ''-2'' class CFoo : public CSuperFoo { public: CFoo(int ini_a, char* ini_b) : m_a(ini_a), m_b(ini_b), m_c{} {} private: int m_a; char* m_b; uint64_t m_c; }; -- ''-4'' class CFoo : public CSuperFoo { public: CFoo(int ini_a, char* ini_b) : m_a(ini_a), m_b(ini_b), m_c{} {} private: int m_a; char* m_b; uint64_t m_c; }; //============================================================================ ** AlignAfterOpenBracket: [#AlignAfterOpenBracket] - 括弧 (()、<>、[]) 内のパラメータが1行に収まらない場合の開始括弧の直後の整列方法を指定する。下記の例では、1行を80カラムとしている(ColumnLimit:80) - パラメータと挙動 -- Align // 仮引数は、カラム上限にかかった場合に改行される。仮引数の整列はアリ void func_c(std::string& hoge_name, std::vector<std::string>& name_list, std::vector<uint64_t> param_list) { uint32_t local_count(0); for (std::vector<std::string>::iterator it_of_name_list = name_list.begin(); it_of_name_list != name_list.end(); ++it_of_name_list) { uint32_t ret = sub_func(hoge_name, *it_of_name_list, param_list, local_count); ++local_count; } // カラム上限に達していなければ改行されない for (uint32_t i = 1; i < max_count; ++i) { sub_func_2(hoge_name, name_list, param_list); } } -- DontAlign // 仮引数は、カラム上限にかかった場合に改行される。仮引数の整列はナシ void func_c(std::string& hoge_name, std::vector<std::string>& name_list, std::vector<uint64_t> param_list) { uint32_t local_count(0); for (std::vector<std::string>::iterator it_of_name_list = name_list.begin(); it_of_name_list != name_list.end(); ++it_of_name_list) { uint32_t ret = sub_func(hoge_name, *it_of_name_list, param_list, local_count); ++local_count; } // カラム上限に達していなければ改行されない for (uint32_t i = 1; i < max_count; ++i) { sub_func_2(hoge_name, name_list, param_list); } } -- AlwaysBreak // 仮引数は、先頭と、カラム上限にかかった場合に改行される。結果的に整列されたに等しくなる。 void func_c( std::string& hoge_name, std::vector<std::string>& name_list, std::vector<uint64_t> param_list) { uint32_t local_count(0); for (std::vector<std::string>::iterator it_of_name_list = name_list.begin(); it_of_name_list != name_list.end(); ++it_of_name_list) { uint32_t ret = sub_func(hoge_name, *it_of_name_list, param_list, local_count); ++local_count; } // カラム上限に達していなければ改行されない for (uint32_t i = 1; i < max_count; ++i) { sub_func_2(hoge_name, name_list, param_list); } } //============================================================================ ** AlignConsecutiveAssignments: [#AlignConsecutiveAssignments] - 連続する行の代入式を ''='' で整列するか否か - パラメータと挙動 -- true : 整列する int32_t var_1 = 12; std::string var_2 = "foo"; const char* const var_3 = "bar"; -- false : 整列しない int32_t var_1 = 12; std::string var_2 = "foo"; const char* const var_3 = "bar"; //============================================================================ ** AlignConsecutiveDeclarations: [#AlignConsecutiveDeclarations] - 連続する行の宣言の変数名を整列させるか否か - パラメータと挙動 -- true : 整列する int32_t var_11 = 12; std::string var_2 = "foo"; const char* const var_3 = "bar"; -- false : 整列しない int32_t var_11 = 12; std::string var_2 = "foo"; const char* const var_3 = "bar"; //============================================================================ ** AlignEscapedNewlinesLeft: [#AlignEscapedNewlinesLeft] - エスケープされた改行の位置を調整する - パラメータと挙動 -- true : 可能な限り左に寄せる #define LOG_PREFIX \ "[DEBUG]" \ "[MODULE_A]" \ "[MOD_SUB_2]" -- false : column limit に配置する // ColumnLimit: 80 の場合 #define LOG_PREFIX \ "[DEBUG]" \ "[MODULE_A]" \ "[MOD_SUB_2]" //============================================================================ ** AlignOperands: [#n00eac18] //============================================================================ ** AlignTrailingComments: [#vfbf452b] //============================================================================ ** AllowAllParametersOfDeclarationOnNextLine: [#sae7368d] //============================================================================ ** AllowShortBlocksOnASingleLine: [#AllowShortBlocksOnASingleLine] - 短いブレース文を単一の行に押し込むか否か - パラメータと挙動 - true : 単一行に押し込む if (arg > 10) { var_11 += arg; } - false : 単一行に押し込まない if (arg > 10) { var_11 += arg; } - 但し、以下のような構造体初期化文には効力がない模様 st_aaa aaa = { 0, }; //============================================================================ ** AllowShortCaseLabelsOnASingleLine: [#AllowShortCaseLabelsOnASingleLine] - switch-case 文に於いて、短い case 文を1行で書くことを許容するか否かを指定する。 - true 短い case 文を1行にする switch (tcx_type) { case TCX_TYPE1: break; case TCX_TYPE2: break; case TCX_TYPE2_NORMAL_STYLE: break; case TCX_TYPE3: break; case TCX_TYPE3_______________________________LONG: break; default: break; } - false 短い case 文を1行にしない。 switch (tcx_type) { case TCX_TYPE1: break; case TCX_TYPE2: break; case TCX_TYPE2_NORMAL_STYLE: break; case TCX_TYPE3: break; case TCX_TYPE3_______________________________LONG: break; default: break; } //============================================================================ ** AllowShortFunctionsOnASingleLine: [#dce76bfa] //============================================================================ ** AllowShortIfStatementsOnASingleLine: [#w26c3548] //============================================================================ ** AllowShortLoopsOnASingleLine: [#kff2e776] //============================================================================ ** AlwaysBreakAfterDefinitionReturnType: [#e2cf0f79] //============================================================================ ** AlwaysBreakAfterReturnType: [#u32cd482] //============================================================================ ** AlwaysBreakBeforeMultilineStrings: [#v40e1938] //============================================================================ ** AlwaysBreakTemplateDeclarations: [#y25557f4] //============================================================================ ** BinPackArguments: [#ia3d009b] //============================================================================ ** BinPackParameters: [#v9fb1dea] //============================================================================ ** BraceWrapping: [#n9ac2f6f] //---------------------------------------------------------------------------- *** AfterClass: [#r3ca3958] //---------------------------------------------------------------------------- *** AfterControlStatement: [#kae57280] //---------------------------------------------------------------------------- *** AfterEnum: [#k51b89c7] //---------------------------------------------------------------------------- *** AfterFunction: [#a31f9cf9] //---------------------------------------------------------------------------- *** AfterNamespace: [#c3c1226f] //---------------------------------------------------------------------------- *** AfterObjCDeclaration: [#c89d4168] //---------------------------------------------------------------------------- *** AfterStruct: [#g2564b61] //---------------------------------------------------------------------------- *** AfterUnion: [#haacaa46] //---------------------------------------------------------------------------- *** BeforeCatch: [#ae2a006c] //---------------------------------------------------------------------------- *** BeforeElse: [#m3b859c3] //---------------------------------------------------------------------------- *** IndentBraces: [#w79f7cc5] //============================================================================ ** BreakBeforeBinaryOperators: [#eba844fb] |~style |~style option | |LLVM |BasedOnStyle: LLVM | |google |BasedOnStyle: Google | |Chromium |BasedOnStyle: Chromium | |Mozilla |BasedOnStyle: Mozilla | |WebKit |BasedOnStyle: WebKit | |linux |BasedOnStyle: LLVM | |~| IndentWidth: 8 | |~| UseTab: Always | |~| BreakBeforeBraces: Linux | |~| AllowShortIfStatementsOnASingleLine: false | |~| IndentCaseLabels: false | |Visual Studio |UseTab: Never | |~| IndentWidth: 4 | |~| BreakBeforeBraces: Allman | |~| AllowShortIfStatementsOnASingleLine: false | |~| IndentCaseLabels: false | |~| ColumnLimit: 0 | //============================================================================ ** BreakBeforeBraces: [#BreakBeforeBraces] - 波括弧 ''{ }'' の改行の設定 - パラメータと挙動 -- Attach // 波括弧は常に周囲のコンテキストにくっつける。 enum HOGE_EN { EN_AAA, EN_ABC, EN_ZZZ, }; struct st_aaa { int aaa[2]; uint64_t ax; }; void func(int arg) { // ... if (arg == 0) { // ... } else { // ... } return; } -- Linux // Attach に似るが、関数や名前空間、クラス定義の前は改行する。 enum HOGE_EN { EN_AAA, EN_ABC, EN_ZZZ, }; struct st_aaa { int aaa[2]; uint64_t ax; }; void func(int arg) { // ... if (arg == 0) { // ... } else { // ... } return; } -- Mozilla // Attach と似るが、 enum、関数定義などの前には改行する。 enum HOGE_EN { EN_AAA, EN_ABC, EN_ZZZ, }; struct st_aaa { int aaa[2]; uint64_t ax; }; void func(int arg) { // ... if (arg == 0) { // ... } else { // ... } return; } -- Stroustrup // Attach と似るが、catch, else などの前は改行する。 enum HOGE_EN { EN_AAA, EN_ABC, EN_ZZZ, }; struct st_aaa { int aaa[2]; uint64_t ax; }; void func(int arg) { // ... if (arg == 0) { // ... } else { // ... } return; } -- Allman // 波括弧の前は全て改行する。 enum HOGE_EN { EN_AAA, EN_ABC, EN_ZZZ, }; struct st_aaa { int aaa[2]; uint64_t ax; }; void func(int arg) { // ... if (arg == 0) { // ... } else { // ... } return; } -- GNU // 波括弧の前は全て改行するし、新たにインデントを加える。但し、クラス定義や関数定義などの場合は除く。 enum HOGE_EN { EN_AAA, EN_ABC, EN_ZZZ, }; struct st_aaa { int aaa[2]; uint64_t ax; }; void func(int arg) { // ... if (arg == 0) { // ... } else { // ... } return; } //============================================================================ ** BreakBeforeTernaryOperators: [#sffea887] //============================================================================ ** BreakConstructorInitializersBeforeComma: [#r8e30fba] - コンストラクタの変数初期化のコンマの前で改行し、コンマとコロンを整列させるかどうか - パラメータと挙動 -- true -- false //============================================================================ ** ColumnLimit: [#ColumnLimit] - 行の長さの上限値。 - 0 に設定した場合は、上限なしとなる。 //============================================================================ ** CommentPragmas: [#u99be49b] //============================================================================ ** ConstructorInitializerAllOnOneLineOrOnePerLine: [#r75290fb] //============================================================================ ** ConstructorInitializerIndentWidth: [#ze984459] //============================================================================ ** ContinuationIndentWidth: [#aaefdf2a] //============================================================================ ** Cpp11BracedListStyle: [#iedfc19b] //============================================================================ ** DerivePointerAlignment: [#f9b31830] //============================================================================ ** DisableFormat: [#v21da5cf] //============================================================================ ** ExperimentalAutoDetectBinPacking: [#q9649d58] //============================================================================ ** ForEachMacros: [#e39475f0] //============================================================================ ** IncludeCategories: [#ucb42990] //---------------------------------------------------------------------------- *** - [#be585d44] //---------------------------------------------------------------------------- *** Priority: [#lc646fac] //---------------------------------------------------------------------------- *** - [#w1262625] //---------------------------------------------------------------------------- *** Priority: [#hde528d1] //---------------------------------------------------------------------------- *** - [#l3196565] //---------------------------------------------------------------------------- *** Priority: [#g1cb84bf] //============================================================================ ** IndentCaseLabels: [#x3a42b57] //============================================================================ ** IndentWidth: [#d4935225] //============================================================================ ** IndentWrappedFunctionNames: [#vb5d40c0] //============================================================================ ** KeepEmptyLinesAtTheStartOfBlocks: [#n643d905] //============================================================================ ** MacroBlockBegin: [#h7d1a026] //============================================================================ ** MacroBlockEnd: [#k77ca862] //============================================================================ ** MaxEmptyLinesToKeep: [#mf4db716] //============================================================================ ** NamespaceIndentation: [#o82a7483] //============================================================================ ** ObjCBlockIndentWidth: [#d2ad2676] //============================================================================ ** ObjCSpaceAfterProperty: [#p8f59fc2] //============================================================================ ** ObjCSpaceBeforeProtocolList: [#rc1aedf9] //============================================================================ ** PenaltyBreakBeforeFirstCallParameter: [#b8c42877] //============================================================================ ** PenaltyBreakComment: [#s63e6446] //============================================================================ ** PenaltyBreakFirstLessLess: [#v647e833] //============================================================================ ** PenaltyBreakString: [#qbd919c2] //============================================================================ ** PenaltyExcessCharacter: [#t230560c] //============================================================================ ** PenaltyReturnTypeOnItsOwnLine: [#cc33121d] //============================================================================ ** PointerAlignment: [#v30bb7ce] //============================================================================ ** ReflowComments: [#ucf9ed66] //============================================================================ ** SortIncludes: [#b6797f9d] //============================================================================ ** SpaceAfterCStyleCast: [#uebb1034] //============================================================================ ** SpaceBeforeAssignmentOperators: [#x29447e9] //============================================================================ ** SpaceBeforeParens: [#iacb23cc] //============================================================================ ** SpaceInEmptyParentheses: [#t24393b1] //============================================================================ ** SpacesBeforeTrailingComments: [#da132129] //============================================================================ ** SpacesInAngles: [#i7770e5a] //============================================================================ ** SpacesInContainerLiterals: [#k77db928] //============================================================================ ** SpacesInCStyleCastParentheses: [#w07105c2] //============================================================================ ** SpacesInParentheses: [#d281fbe1] //============================================================================ ** SpacesInSquareBrackets: [#m8113bc9] //============================================================================ ** Standard: [#z92f7f34] //============================================================================ ** TabWidth: [#pbdbd121] //============================================================================ ** UseTab: [#f5d7899e] ////////////////////////////////////////////////////////////////////////////// * 参考リンク [#links] - [[ClangFormat — Algo13 2016.12.17 ドキュメント>http://algo13.net/clang/clang-format-style-oputions.html]] - [[clang-format を イイ感じに設定する - def yasuharu519(self):>https://yasuharu519.hatenablog.com/entry/2015/12/13/210825]]
#topicpath ////////////////////////////////////////////////////////////////////////////// * 目次 [#zf6aaa09] #contents(); ////////////////////////////////////////////////////////////////////////////// * 書式オプション(抜粋) [#cbbe2cff] - clang-format で使用される書式設定ファイル ''.clang-format'' に記述するオプションについて記載する。 //============================================================================ ** Language: [#Language] |~val |~description | |None |使用しない | |Cpp |C, C++, Objective-C, Objective-C++ を使用する | |Java |Java を使用する | |JavaScript |JavaScript を使用する | |Proto |[[Protocol Buffers>https://developers.google.com/protocol-buffers/]] | //============================================================================ ** AccessModifierOffset: [#AccessModifierOffset] - アクセス修飾子(C++ class の public:, private:, protected: など)の追加のインデント幅を指定する。 - パラメータと挙動 -- ''0'' class CFoo : public CSuperFoo { public: CFoo(int ini_a, char* ini_b) : m_a(ini_a), m_b(ini_b), m_c{} {} private: char* m_b; uint64_t m_c; }; -- ''-2'' class CFoo : public CSuperFoo { public: CFoo(int ini_a, char* ini_b) : m_a(ini_a), m_b(ini_b), m_c{} {} private: int m_a; char* m_b; uint64_t m_c; }; -- ''-4'' class CFoo : public CSuperFoo { public: CFoo(int ini_a, char* ini_b) : m_a(ini_a), m_b(ini_b), m_c{} {} private: int m_a; char* m_b; uint64_t m_c; }; //============================================================================ ** AlignAfterOpenBracket: [#AlignAfterOpenBracket] - 括弧 (()、<>、[]) 内のパラメータが1行に収まらない場合の開始括弧の直後の整列方法を指定する。下記の例では、1行を80カラムとしている(ColumnLimit:80) - パラメータと挙動 -- Align // 仮引数は、カラム上限にかかった場合に改行される。仮引数の整列はアリ void func_c(std::string& hoge_name, std::vector<std::string>& name_list, std::vector<uint64_t> param_list) { uint32_t local_count(0); for (std::vector<std::string>::iterator it_of_name_list = name_list.begin(); it_of_name_list != name_list.end(); ++it_of_name_list) { uint32_t ret = sub_func(hoge_name, *it_of_name_list, param_list, local_count); ++local_count; } // カラム上限に達していなければ改行されない for (uint32_t i = 1; i < max_count; ++i) { sub_func_2(hoge_name, name_list, param_list); } } -- DontAlign // 仮引数は、カラム上限にかかった場合に改行される。仮引数の整列はナシ void func_c(std::string& hoge_name, std::vector<std::string>& name_list, std::vector<uint64_t> param_list) { uint32_t local_count(0); for (std::vector<std::string>::iterator it_of_name_list = name_list.begin(); it_of_name_list != name_list.end(); ++it_of_name_list) { uint32_t ret = sub_func(hoge_name, *it_of_name_list, param_list, local_count); ++local_count; } // カラム上限に達していなければ改行されない for (uint32_t i = 1; i < max_count; ++i) { sub_func_2(hoge_name, name_list, param_list); } } -- AlwaysBreak // 仮引数は、先頭と、カラム上限にかかった場合に改行される。結果的に整列されたに等しくなる。 void func_c( std::string& hoge_name, std::vector<std::string>& name_list, std::vector<uint64_t> param_list) { uint32_t local_count(0); for (std::vector<std::string>::iterator it_of_name_list = name_list.begin(); it_of_name_list != name_list.end(); ++it_of_name_list) { uint32_t ret = sub_func(hoge_name, *it_of_name_list, param_list, local_count); ++local_count; } // カラム上限に達していなければ改行されない for (uint32_t i = 1; i < max_count; ++i) { sub_func_2(hoge_name, name_list, param_list); } } //============================================================================ ** AlignConsecutiveAssignments: [#AlignConsecutiveAssignments] - 連続する行の代入式を ''='' で整列するか否か - パラメータと挙動 -- true : 整列する int32_t var_1 = 12; std::string var_2 = "foo"; const char* const var_3 = "bar"; -- false : 整列しない int32_t var_1 = 12; std::string var_2 = "foo"; const char* const var_3 = "bar"; //============================================================================ ** AlignConsecutiveDeclarations: [#AlignConsecutiveDeclarations] - 連続する行の宣言の変数名を整列させるか否か - パラメータと挙動 -- true : 整列する int32_t var_11 = 12; std::string var_2 = "foo"; const char* const var_3 = "bar"; -- false : 整列しない int32_t var_11 = 12; std::string var_2 = "foo"; const char* const var_3 = "bar"; //============================================================================ ** AlignEscapedNewlinesLeft: [#AlignEscapedNewlinesLeft] - エスケープされた改行の位置を調整する - パラメータと挙動 -- true : 可能な限り左に寄せる #define LOG_PREFIX \ "[DEBUG]" \ "[MODULE_A]" \ "[MOD_SUB_2]" -- false : column limit に配置する // ColumnLimit: 80 の場合 #define LOG_PREFIX \ "[DEBUG]" \ "[MODULE_A]" \ "[MOD_SUB_2]" //============================================================================ ** AlignOperands: [#n00eac18] //============================================================================ ** AlignTrailingComments: [#vfbf452b] //============================================================================ ** AllowAllParametersOfDeclarationOnNextLine: [#sae7368d] //============================================================================ ** AllowShortBlocksOnASingleLine: [#AllowShortBlocksOnASingleLine] - 短いブレース文を単一の行に押し込むか否か - パラメータと挙動 - true : 単一行に押し込む if (arg > 10) { var_11 += arg; } - false : 単一行に押し込まない if (arg > 10) { var_11 += arg; } - 但し、以下のような構造体初期化文には効力がない模様 st_aaa aaa = { 0, }; //============================================================================ ** AllowShortCaseLabelsOnASingleLine: [#AllowShortCaseLabelsOnASingleLine] - switch-case 文に於いて、短い case 文を1行で書くことを許容するか否かを指定する。 - true 短い case 文を1行にする switch (tcx_type) { case TCX_TYPE1: break; case TCX_TYPE2: break; case TCX_TYPE2_NORMAL_STYLE: break; case TCX_TYPE3: break; case TCX_TYPE3_______________________________LONG: break; default: break; } - false 短い case 文を1行にしない。 switch (tcx_type) { case TCX_TYPE1: break; case TCX_TYPE2: break; case TCX_TYPE2_NORMAL_STYLE: break; case TCX_TYPE3: break; case TCX_TYPE3_______________________________LONG: break; default: break; } //============================================================================ ** AllowShortFunctionsOnASingleLine: [#dce76bfa] //============================================================================ ** AllowShortIfStatementsOnASingleLine: [#w26c3548] //============================================================================ ** AllowShortLoopsOnASingleLine: [#kff2e776] //============================================================================ ** AlwaysBreakAfterDefinitionReturnType: [#e2cf0f79] //============================================================================ ** AlwaysBreakAfterReturnType: [#u32cd482] //============================================================================ ** AlwaysBreakBeforeMultilineStrings: [#v40e1938] //============================================================================ ** AlwaysBreakTemplateDeclarations: [#y25557f4] //============================================================================ ** BinPackArguments: [#ia3d009b] //============================================================================ ** BinPackParameters: [#v9fb1dea] //============================================================================ ** BraceWrapping: [#n9ac2f6f] //---------------------------------------------------------------------------- *** AfterClass: [#r3ca3958] //---------------------------------------------------------------------------- *** AfterControlStatement: [#kae57280] //---------------------------------------------------------------------------- *** AfterEnum: [#k51b89c7] //---------------------------------------------------------------------------- *** AfterFunction: [#a31f9cf9] //---------------------------------------------------------------------------- *** AfterNamespace: [#c3c1226f] //---------------------------------------------------------------------------- *** AfterObjCDeclaration: [#c89d4168] //---------------------------------------------------------------------------- *** AfterStruct: [#g2564b61] //---------------------------------------------------------------------------- *** AfterUnion: [#haacaa46] //---------------------------------------------------------------------------- *** BeforeCatch: [#ae2a006c] //---------------------------------------------------------------------------- *** BeforeElse: [#m3b859c3] //---------------------------------------------------------------------------- *** IndentBraces: [#w79f7cc5] //============================================================================ ** BreakBeforeBinaryOperators: [#eba844fb] |~style |~style option | |LLVM |BasedOnStyle: LLVM | |google |BasedOnStyle: Google | |Chromium |BasedOnStyle: Chromium | |Mozilla |BasedOnStyle: Mozilla | |WebKit |BasedOnStyle: WebKit | |linux |BasedOnStyle: LLVM | |~| IndentWidth: 8 | |~| UseTab: Always | |~| BreakBeforeBraces: Linux | |~| AllowShortIfStatementsOnASingleLine: false | |~| IndentCaseLabels: false | |Visual Studio |UseTab: Never | |~| IndentWidth: 4 | |~| BreakBeforeBraces: Allman | |~| AllowShortIfStatementsOnASingleLine: false | |~| IndentCaseLabels: false | |~| ColumnLimit: 0 | //============================================================================ ** BreakBeforeBraces: [#BreakBeforeBraces] - 波括弧 ''{ }'' の改行の設定 - パラメータと挙動 -- Attach // 波括弧は常に周囲のコンテキストにくっつける。 enum HOGE_EN { EN_AAA, EN_ABC, EN_ZZZ, }; struct st_aaa { int aaa[2]; uint64_t ax; }; void func(int arg) { // ... if (arg == 0) { // ... } else { // ... } return; } -- Linux // Attach に似るが、関数や名前空間、クラス定義の前は改行する。 enum HOGE_EN { EN_AAA, EN_ABC, EN_ZZZ, }; struct st_aaa { int aaa[2]; uint64_t ax; }; void func(int arg) { // ... if (arg == 0) { // ... } else { // ... } return; } -- Mozilla // Attach と似るが、 enum、関数定義などの前には改行する。 enum HOGE_EN { EN_AAA, EN_ABC, EN_ZZZ, }; struct st_aaa { int aaa[2]; uint64_t ax; }; void func(int arg) { // ... if (arg == 0) { // ... } else { // ... } return; } -- Stroustrup // Attach と似るが、catch, else などの前は改行する。 enum HOGE_EN { EN_AAA, EN_ABC, EN_ZZZ, }; struct st_aaa { int aaa[2]; uint64_t ax; }; void func(int arg) { // ... if (arg == 0) { // ... } else { // ... } return; } -- Allman // 波括弧の前は全て改行する。 enum HOGE_EN { EN_AAA, EN_ABC, EN_ZZZ, }; struct st_aaa { int aaa[2]; uint64_t ax; }; void func(int arg) { // ... if (arg == 0) { // ... } else { // ... } return; } -- GNU // 波括弧の前は全て改行するし、新たにインデントを加える。但し、クラス定義や関数定義などの場合は除く。 enum HOGE_EN { EN_AAA, EN_ABC, EN_ZZZ, }; struct st_aaa { int aaa[2]; uint64_t ax; }; void func(int arg) { // ... if (arg == 0) { // ... } else { // ... } return; } //============================================================================ ** BreakBeforeTernaryOperators: [#sffea887] //============================================================================ ** BreakConstructorInitializersBeforeComma: [#r8e30fba] - コンストラクタの変数初期化のコンマの前で改行し、コンマとコロンを整列させるかどうか - パラメータと挙動 -- true -- false //============================================================================ ** ColumnLimit: [#ColumnLimit] - 行の長さの上限値。 - 0 に設定した場合は、上限なしとなる。 //============================================================================ ** CommentPragmas: [#u99be49b] //============================================================================ ** ConstructorInitializerAllOnOneLineOrOnePerLine: [#r75290fb] //============================================================================ ** ConstructorInitializerIndentWidth: [#ze984459] //============================================================================ ** ContinuationIndentWidth: [#aaefdf2a] //============================================================================ ** Cpp11BracedListStyle: [#iedfc19b] //============================================================================ ** DerivePointerAlignment: [#f9b31830] //============================================================================ ** DisableFormat: [#v21da5cf] //============================================================================ ** ExperimentalAutoDetectBinPacking: [#q9649d58] //============================================================================ ** ForEachMacros: [#e39475f0] //============================================================================ ** IncludeCategories: [#ucb42990] //---------------------------------------------------------------------------- *** - [#be585d44] //---------------------------------------------------------------------------- *** Priority: [#lc646fac] //---------------------------------------------------------------------------- *** - [#w1262625] //---------------------------------------------------------------------------- *** Priority: [#hde528d1] //---------------------------------------------------------------------------- *** - [#l3196565] //---------------------------------------------------------------------------- *** Priority: [#g1cb84bf] //============================================================================ ** IndentCaseLabels: [#x3a42b57] //============================================================================ ** IndentWidth: [#d4935225] //============================================================================ ** IndentWrappedFunctionNames: [#vb5d40c0] //============================================================================ ** KeepEmptyLinesAtTheStartOfBlocks: [#n643d905] //============================================================================ ** MacroBlockBegin: [#h7d1a026] //============================================================================ ** MacroBlockEnd: [#k77ca862] //============================================================================ ** MaxEmptyLinesToKeep: [#mf4db716] //============================================================================ ** NamespaceIndentation: [#o82a7483] //============================================================================ ** ObjCBlockIndentWidth: [#d2ad2676] //============================================================================ ** ObjCSpaceAfterProperty: [#p8f59fc2] //============================================================================ ** ObjCSpaceBeforeProtocolList: [#rc1aedf9] //============================================================================ ** PenaltyBreakBeforeFirstCallParameter: [#b8c42877] //============================================================================ ** PenaltyBreakComment: [#s63e6446] //============================================================================ ** PenaltyBreakFirstLessLess: [#v647e833] //============================================================================ ** PenaltyBreakString: [#qbd919c2] //============================================================================ ** PenaltyExcessCharacter: [#t230560c] //============================================================================ ** PenaltyReturnTypeOnItsOwnLine: [#cc33121d] //============================================================================ ** PointerAlignment: [#v30bb7ce] //============================================================================ ** ReflowComments: [#ucf9ed66] //============================================================================ ** SortIncludes: [#b6797f9d] //============================================================================ ** SpaceAfterCStyleCast: [#uebb1034] //============================================================================ ** SpaceBeforeAssignmentOperators: [#x29447e9] //============================================================================ ** SpaceBeforeParens: [#iacb23cc] //============================================================================ ** SpaceInEmptyParentheses: [#t24393b1] //============================================================================ ** SpacesBeforeTrailingComments: [#da132129] //============================================================================ ** SpacesInAngles: [#i7770e5a] //============================================================================ ** SpacesInContainerLiterals: [#k77db928] //============================================================================ ** SpacesInCStyleCastParentheses: [#w07105c2] //============================================================================ ** SpacesInParentheses: [#d281fbe1] //============================================================================ ** SpacesInSquareBrackets: [#m8113bc9] //============================================================================ ** Standard: [#z92f7f34] //============================================================================ ** TabWidth: [#pbdbd121] //============================================================================ ** UseTab: [#f5d7899e] ////////////////////////////////////////////////////////////////////////////// * 参考リンク [#links] - [[ClangFormat — Algo13 2016.12.17 ドキュメント>http://algo13.net/clang/clang-format-style-oputions.html]] - [[clang-format を イイ感じに設定する - def yasuharu519(self):>https://yasuharu519.hatenablog.com/entry/2015/12/13/210825]]
テキスト整形のルールを表示する