Skip to content

Instantly share code, notes, and snippets.

@tune
Last active May 31, 2019 02:54
Show Gist options
  • Save tune/5140846 to your computer and use it in GitHub Desktop.
Save tune/5140846 to your computer and use it in GitHub Desktop.
qiitaに投稿されていた解説をベースに微修正を加えたUncrustify設定ファイル
# 一般設定
# http://qiita.com/items/d8998dd5e90697744e3c
newlines = crlf # 改行コードはLFCR
input_tab_size = 4 # 入力ファイルのタブサイズ
output_tab_size = 4 # 出力ファイルのタブサイズ
string_escape_char = 92 # エスケープシーケンス('\')
tok_split_gte = false # '>='と'>>='を'void f(list<list<B>>=val);'のテンプレートの一部と解釈させない
utf8_bom = add # UTF-8ファイルのBOMコードを追加する
utf8_byte = false # 値128〜255を持つバイトを含むUTF-8でないファイルの場合、出力をUTF-8としない
utf8_force = true # 出力エンコーディングを強制的にUTF-8にする
# プリプロセッサ
# http://qiita.com/items/dd7c5ffdff27451dae16
pp_indent = add # #if、#ifdef、#ifndef〜#else〜#endifブロック内のプロプロセッサをインデントする
pp_indent_at_level = false # ソースコードのインデントレベルに合わせてインデントしない
pp_indent_count = 4 # プリプロセッサのインデント幅
pp_space = remove # #の後にあるスペースを削除する
pp_space_count = 0 # #の後のインデント幅は0
pp_indent_region = 0 # #region/#endregionをインデントしない
pp_region_indent_code = false #regionと#endregionの間のコードをインデントしない
pp_indent_if = 0 # インデント幅は固定されない。その他の整形オプションに応じてインデントされる。
pp_if_indent_code = false # プリプロセッサレベル (#if〜#endifブロック) でインデントされない。
pp_define_at_level = false # #defineがソースコード(struct bar)のインデントレベルにはインデントされない。その他の整形オプションに応じてインデントされる。
# インデント
# http://qiita.com/items/b3fee3560e4ae746b468
indent_columns = 4 # インデントレベルのインデント幅
indent_continue = 0 # '='-改行の後は位置揃えする。
indent_with_tabs = 2 # インデントも位置揃えもタブを用いる。
indent_cmt_with_tabs = true # コメントまでのスペースをタブ位置までタブ文字でスペーシングする
indent_align_string = true # '\'-改行でされた文字列を位置揃えさせる
indent_brace = 0 # ボディレベルと同じインデント位置に'{'、'}'を配置する。
indent_braces = false # ボディレベルと同じレベルで'{'、'}'を配置する。
indent_brace_parent = false # ブレースオーナーの文字数ベースでインデントしない
indent_namespace = false # 'namespace'のボディをインデントしない
indent_extern = false # extern "C" ボディをインデントしない
indent_class = true # クラスボディをインデントしない。
indent_class_colon = true # コンストラクタのイニシャライザのインデントを細かく整形する。
indent_ctor_init_leading = 2 # メンバー初期化の1行目のコロンに対して2行目以降はインデント幅が半角空白2個分インデントされる。
indent_ctor_init = 0 # 追加のインデントを行わない
indent_else_if = false # 'else\nif'を'if'をインデントしない。
indent_var_def_blk = 0 # 変数宣言の位置ぞろえを行わない
indent_var_def_cont = false # 複数行の変数宣言をインデントではなく位置揃え (align) する。
indent_func_def_force_col1 = false # 関数定義を現在のコードのインデントレベルに合わせる。
indent_func_call_param = false # 引数リストを'('の下に位置揃えする。
indent_func_def_param = false # 引数リストを'('の下に位置揃えする。
indent_func_proto_param = false # 引数リストを'('の下に位置揃えする。
indent_func_class_param = false # 引数リストを'('の下に位置揃えする。
indent_func_ctor_var_param = false # 引数リストを'('の下に位置揃えする。
indent_template_param = false # 引数リストを'<'の下に位置揃えする。
indent_func_param_double = false # 引数リストをインデントする。
indent_func_const = 0 # 行頭(カラム=1)にconstを位置揃えしない
indent_func_throw = 0 # 行頭(カラム=1)にthrowを位置揃えしない
indent_member = 0 # '->'や'.'で行送りした場合、空白を使って位置ぞろえしない。
indent_sing_line_comments = 0 # コード直前の'//'で始まるコメント行 (複数行OK) を半角空白で位置ぞろえしない
indent_relative_single_line_comments = false # コードの後ろの一行コメントのカラム位置はキープされる。(キープできない場合もある)
indent_switch_case = 0 # 'case'と'switch'は同じ位置にインデントされる。
indent_case_shift = 0 # 'case'の前に半角空白で位置揃えしない
indent_case_brace = 0 # 'case'の次の行に続く'{'から先の行をindent_switch_caseから半角空白で位置揃えしない
indent_col1_comment = true # 行頭コメントもインデントする。
indent_label = 1 # 行頭にgotoラベルを配置する。
indent_access_spec = 1 # 行頭にアクセス指定子を配置する。
indent_access_spec_body = false # アクセス指定子内のボディをインデントしない
indent_paren_nl = true # ('の直後に改行されていたら、'('の下まで位置揃えされる。
indent_paren_close = 0 # 改行直後の')'はボディレベルに位置揃えされる。
indent_comma_paren = false # '('の下に','が位置揃えされない
indent_bool_paren = false # '('の下に'||'が位置揃えされない
indent_first_bool_expr = false # 最初の評価式を続く評価式のインデントに位置揃えしない
indent_square_nl = false # '['の位置に改行後のコードが位置揃えされない
indent_align_assign = true # '='に続くステートメントをインデントする
# アラインメント
# http://qiita.com/items/aecf5d72a55eef7ed6fe
align_keep_tabs = false # タブ文字は残る。
align_with_tabs = true # タブで位置を揃える
align_on_tabstop = false # 一番短く揃えられる位置で揃えられる。
align_number_left = false # 構造体フィールドの初期化の数値リテラルを右寄せしない
align_func_params = true # 関数定義やプロトタイプ宣言の引数リストの型と変数名の間が位置揃えされる
align_same_func_call_params = false # 同じ関数呼び出しが並んでいても、引数の位置は自動的には揃わない。(何もしない)
align_var_def_star_style = 0 # 変数宣言におけるポインタの'*'を変数の型に付ける。
align_var_def_amp_style = 0 # 変数宣言における参照の'&'を変数の型に付ける。
align_var_def_colon = true # 構造体のビットフィールドの':'の位置を揃える。
align_var_def_attribute = true # 変数属性の'__attribute__'の位置を合わせる。
align_var_def_inline = true # 構造体のメンバ変数の宣言(型名とメンバ変数名)の位置を揃える。
align_var_def_span = 2 # 空行が1行開いている変数定義でも一緒に位置揃えを行う。
align_var_def_thresh = 6 # 変数定義の位置揃えのカラム閾値
align_var_def_gap = 0 # 変数の型と変数名の間に半角空白1文字分の余白を空ける。
align_assign_span = 2 # 空行が1行開いている代入式でも一緒に'='を位置揃えを行う。
align_assign_thresh = 6 # 代入式の'='の位置揃えをするカラム閾値
align_enum_equ_span = 2 # enumの'='の位置揃えをするラインスパン
align_enum_equ_thresh = 6 # enumの'='の位置揃えをするカラム閾値
align_var_struct_span = 2 # struct/unionのメンバー定義の位置揃えをするラインスパン
align_var_struct_thresh = 6 # struct/unionのメンバー定義の位置揃えをするカラム閾値
align_var_struct_gap = 0 # struct/unionのメンバー定義のカラムギャップ
align_struct_init_span = 1 # structのメンバ変数の指定初期化の位置揃えのラインスパン
align_typedef_gap = 0 # typedefの型とシノニムの間の空白の最小数
align_typedef_span = 2 # 一行typedefの位置揃えをするラインスパン
align_typedef_func = 1 # 関数ポインタ型は'*'を含めて、他の型シノニムと位置揃えされる。
align_typedef_star_style = 0 # ポインタ型の'*'は、型の方へ寄せられる。
align_typedef_amp_style = 0 # 参照型の'&'は、型の方へ寄せられる。
align_right_cmt_span = 4 # 行末コメントを位置揃えするラインスパン
align_right_cmt_mix = false
align_right_cmt_gap = 1 # 行末コメントがこの桁数以上コードと離れている場合、位置揃えする
align_right_cmt_at_col = 0 # 行末コメントの位置揃えするカラム位置
align_func_proto_span = 2 # プロトタイプ宣言の位置揃えのラインスパン
align_func_proto_gap = 0 # プロトタイプ宣言の返値型と関数名の間のギャップカラム
align_on_operator = true # 'operator'キーワードでプロトタイプ宣言を位置揃えする
align_mix_var_proto = false # 変数宣言と関数プロトタイプ宣言はそれぞれ別々に位置揃えする。
align_single_line_func = true # 一行関数を関数プロトタイプと同様に位置揃えする
align_single_line_brace = true # 一行関数のオープンブレースを位置揃えするかどうか
align_single_line_brace_gap = 0 # align_single_line_braceに対するギャップ
align_nl_cont = true # バックスラッシュ-改行で囲われた複数行マクロを位置揃えする
align_pp_define_span = 2 # プリプロセッサ定義のボディの位置揃えのスパン
align_pp_define_gap = 0 # プリプロセッサ定義のラベルと値の間の空白の最小幅
align_pp_define_together = true # マクロ関数とマクロ変数を一緒に位置揃えする
align_left_shift = true # '<<'で開始する行を前の行の'<<'の位置に揃える
# ポジション
# http://qiita.com/items/ce7269fe4aa9f34e9a8d
pos_arith = trail # 行頭に、そのトークンがあった場合、そのトークンを前の行の行末に挿入します。
pos_assign = trail # 行頭に、そのトークンがあった場合、そのトークンを前の行の行末に挿入します。
pos_bool = trail # 行頭に、そのトークンがあった場合、そのトークンを前の行の行末に挿入します。
pos_compare = trail # 行頭に、そのトークンがあった場合、そのトークンを前の行の行末に挿入します。
pos_conditional = trail # 行頭に、そのトークンがあった場合、そのトークンを前の行の行末に挿入します。
pos_comma = trail # 行頭に、そのトークンがあった場合、そのトークンを前の行の行末に挿入します。
pos_class_comma = trail # 行頭に、そのトークンがあった場合、そのトークンを前の行の行末に挿入します。
pos_class_colon = lead # 行末に、そのトークンがあった場合、そのトークンを次の行の行頭に挿入します。
# 空行
# http://qiita.com/items/ee95487e79a2ca7fb375
nl_max = 2 # 連続してもよい改行数
nl_after_func_proto = 1 # 関数プロトタイプ宣言の後の改行数
nl_after_func_proto_group = 2 # 関数プロトタイプ宣言のブロックの後に空行を最低1行は入れる。
nl_after_func_body = 2 # 関数ボディの後 ('}'の次の行) に空行が1行挿入される。
nl_after_func_body_class = 2 # クラス宣言内のメンバ関数のボディの後 ('}'の次の行) に空行が1行挿入される。
nl_after_func_body_one_liner = 1 # 一行関数のボディの後 ('}'の次の行) に空行が入らない
nl_before_block_comment = 2 # ブロックコメントの前に空行を最低1行は入れる。
nl_before_c_comment = 0 # Cコメント ('/* ... */') の前に空行を入れない
nl_before_cpp_comment = 0 # C++コメント ('// ...') の前に空行を入れない
nl_after_multiline_comment = true # 複数行コメントの最終行に改行が挿入される。
nl_after_struct = 2 # 構造体宣言の後に空行を最低1行は入れる。
nl_after_class = 2 # クラス宣言の後に空行を最低1行は入れる。
nl_before_access_spec = 2 # アクセス指定子の前に空行が1行挿入される。
nl_after_access_spec = 1 # アクセス指定子の後に空行を入れない
nl_comment_func_def = 1 # 関数定義と直前のコメントとの間に空行を入れない
nl_after_try_catch_finally = 2 # try-catch (C#などはfinallyも) の後に空行が1行挿入される。
eat_blanks_after_open_brace = true # '{'の下の空行をすべて削除する。
eat_blanks_before_close_brace = true # '}'の上の空行をすべて削除する。
nl_remove_extra_newlines = 0 # プリプロセッサ以外の改行は変更しない
nl_before_return = false # 'return'の前に空行を入れない
nl_after_return = false # 'return'の後に空行を入れない
nl_if_brace = add # 'if'と'{'の間に改行を 挿入/削除 する.
nl_brace_else = add # '}'と'else'の間に改行を 挿入/削除 する.
nl_elseif_brace = add # 'else if'と'{'の間に改行を 挿入/削除 する
nl_else_brace = add # 'else'と'{'の間に改行を 挿入/削除 する.
nl_brace_finally = add # '}'と'finally'の間に改行を 挿入/削除 する.
nl_finally_brace = add # 'finally'と'{'の間に改行を 挿入/削除 する.
nl_try_brace = add # 'try'と'{'の間に改行を 挿入/削除 する.
nl_for_brace = add # 'for'と'{'の間に改行を 挿入/削除 する.
nl_catch_brace = add # 'catch'と'{'の間に改行を 挿入/削除 する.
nl_brace_catch = add # '}'と'catch'の間に改行を 挿入/削除 する.
nl_while_brace = add # 'while'と'{'の間に改行を 挿入/削除 する.
nl_do_brace = add # 'do'と'{'の間に改行を 挿入/削除 する.
nl_brace_while = remove # }'と('d'oと対の)'while'の間に改行を 挿入/削除 する.
nl_switch_brace = add # 'switch'と'{'の間に改行を 挿入/削除 する.
nl_fdef_brace = add # 関数定義での名前と'{'の間に改行を 挿入/削除 する.
# コード変形
# http://qiita.com/items/d1289c116451b709f610
mod_full_brace_do = add # 一行'do'/'while'文の間に{}'が挿入される。
mod_full_brace_for = add # 'for'文の間に'{}'が挿入される。
mod_full_brace_function = ignore
mod_full_brace_if = add # 'if'文の間に'{}'が挿入される。
mod_full_brace_if_chain = false # 'if'/'else-if'/'else'文に'{}'が挿入される。
mod_full_brace_nl = 0
mod_full_brace_while = add # 'while'文の間に'{}'が挿入される。
mod_full_brace_using = ignore
mod_paren_on_return = remove # 'return'の'()'を取り除く
mod_pawn_semicolon = false # オプショナルなセミコロンをリアルなセミコロンに修正しない
mod_full_paren_if_bool = false # 'while'と'if'文のブール値の前後に括弧を追加しない
mod_remove_extra_semicolon = true # 余分なセミコロンを削除する
mod_add_long_function_closebrace_comment = 0 # 関数ボディの後にコメントをつけない
mod_add_long_switch_closebrace_comment = 0 # switchの後にコメントをつけない
mod_add_long_ifdef_endif_comment = 5 # 長いendifの後にコメントをつける
mod_add_long_ifdef_else_comment = 5 # 長いelseの後にコメントをつける
mod_move_case_break = true # '{}'で囲われた'case'の後にある'break'文を'}'の内側に移動する
mod_case_brace = ignore
mod_remove_empty_return = true # 関数の最後の文に現れる、'return;'を削除する
# コメント整形
# http://qiita.com/items/cfeda8a49cf8efe48406
cmt_width = 120 # コメントのカラム数
cmt_reflow_mode = 0 # テキストがcmt_widthで折り返される。
cmt_indent_multi = true # 複数行コメントが整形される
cmt_c_group = true # ブロックの先頭の'/*'と末尾の'*/'を残して、取り除き、自動的にコメントをグループ化する。
cmt_c_nl_start = true # ブロックの先頭に'/*'のみのコメント行を挿入する。
cmt_c_nl_end = true # ブロックの末尾に'*/'のみのコメント行を挿入する。
cmt_cpp_to_c = false # '//'で始まるコメントブロックを'/* */'に変更しない
cmt_cpp_group = false # '//'で始まるコメントブロックが'/* */'スタイルに変更されていてもグループ化しない
cmt_cpp_nl_start = false # ブロックの先頭に'/*'のみのコメント行を挿入する。
cmt_cpp_nl_end = false # ブロックの末尾に'*/'のみのコメント行を挿入する。
cmt_star_cont = true # コメント行の先頭に'*'を付ける
cmt_sp_before_star_cont = 0 # '*'の位置調整
cmt_sp_after_star_cont = 0 # '*'の位置調整
# ラインスプリット
# http://qiita.com/items/20a8143322e16d969ca8
code_width = 120 # コードのカラム数
ls_for_split_full = true # 長い'for'文を';'の位置でスプリットする
ls_func_split_full = true # 長い関数のプロトタイプ宣言/呼び出しを','の位置でスプリットする
ls_code_width = true # code_widthでスプリットする
# 空白
# http://qiita.com/items/7b6564cebc60e26701f2
sp_arith = add
sp_assign = add
sp_cpp_lambda_assign = remove
sp_cpp_lambda_paren = remove
sp_assign_default = add
sp_before_assign = ignore
sp_after_assign = ignore
sp_enum_assign = add
sp_enum_before_assign = ignore
sp_enum_after_assign = ignore
sp_pp_concat = add
sp_pp_stringify = remove
sp_before_pp_stringify = ignore
sp_bool = add
sp_compare = add
sp_inside_paren = remove
sp_paren_paren = remove
sp_balance_nested_parens = false
sp_paren_brace = add
sp_before_ptr_star = remove
sp_before_unnamed_ptr_star = remove
sp_between_ptr_star = remove
sp_after_ptr_star = add
sp_after_ptr_star_func = add
sp_ptr_star_paren = add
sp_before_ptr_star_func = remove
sp_before_byref = remove
sp_before_unnamed_byref = remove
sp_after_byref = add
sp_after_byref_func = add
sp_before_byref_func = remove
sp_after_type = add
sp_before_template_paren = ignore
sp_template_angle = force
sp_before_angle = add
sp_inside_angle = remove
sp_after_angle = add
sp_angle_paren = remove
sp_angle_word = add
sp_angle_shift = add
sp_permit_cpp11_shift = false
sp_before_sparen = remove
sp_inside_sparen = remove
sp_inside_sparen_close = remove
sp_inside_sparen_open = remove
sp_after_sparen = remove
sp_sparen_brace = add
sp_invariant_paren = ignore
sp_after_invariant_paren = ignore
sp_special_semi = add
sp_before_semi = remove
sp_before_semi_for = remove
sp_before_semi_for_empty = ignore
sp_after_semi = add
sp_after_semi_for = force
sp_after_semi_for_empty = ignore
sp_before_square = remove
sp_before_squares = remove
sp_inside_square = remove
sp_after_comma = add
sp_before_comma = remove
sp_paren_comma = force
sp_before_ellipsis = add
sp_after_class_colon = add
sp_before_class_colon = add
sp_before_case_colon = remove
sp_after_operator = remove
sp_after_operator_sym = remove
sp_after_cast = add
sp_inside_paren_cast = remove
sp_cpp_cast_paren = remove
sp_sizeof_paren = remove
sp_after_tag = ignore
sp_inside_braces_enum = add
sp_inside_braces_struct = add
sp_inside_braces = add
sp_inside_braces_empty = add
sp_type_func = add
sp_func_proto_paren = remove
sp_func_def_paren = remove
sp_inside_fparens = remove
sp_inside_fparen = remove
sp_inside_tparen = remove
sp_after_tparen_close = remove
sp_square_fparen = remove
sp_fparen_brace = add
sp_func_call_paren = remove
sp_func_call_paren_empty = remove
sp_func_call_user_paren = add
sp_func_class_paren = remove
sp_return_paren = remove
sp_attribute_paren = remove
sp_defined_paren = remove
sp_throw_paren = remove
sp_after_throw = add
sp_catch_paren = add
sp_version_paren = ignore
sp_scope_paren = ignore
sp_macro = add
sp_macro_func = add
sp_else_brace = add
sp_brace_else = add
sp_brace_typedef = add
sp_catch_brace = add
sp_brace_catch = add
sp_finally_brace = add
sp_brace_finally = add
sp_try_brace = add
sp_getset_brace = add
sp_before_dc = remove
sp_after_dc = remove
sp_d_array_colon = ignore
sp_not = remove
sp_inv = remove
sp_addr = remove
sp_member = remove
sp_deref = remove
sp_sign = remove
sp_incdec = remove
sp_before_nl_cont = add
sp_after_oc_scope = add
sp_after_oc_colon = remove
sp_before_oc_colon = remove
sp_after_oc_dict_colon = add
sp_before_oc_dict_colon = remove
sp_after_send_oc_colon = remove
sp_before_send_oc_colon = remove
sp_after_oc_type = remove
sp_after_oc_return_type = remove
sp_after_oc_at_sel = remove
sp_after_oc_at_sel_parens = add
sp_inside_oc_at_sel_parens = remove
sp_before_oc_block_caret = remove
sp_after_oc_block_caret = remove
sp_after_oc_msg_receiver = add
sp_after_oc_property = add
sp_cond_colon = add
sp_cond_question = add
sp_case_label = ignore
sp_range = ignore
sp_after_for_colon = ignore
sp_before_for_colon = ignore
sp_extern_paren = ignore
sp_cmt_cpp_start = add
sp_endif_cmt = add
sp_after_new = add
sp_before_tr_emb_cmt = add
sp_num_before_tr_emb_cmt = 0
sp_annotation_paren = ignore
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment