1 /* 2 * This file is part of the Code::Blocks IDE and licensed under the GNU General Public License, version 3 3 * http://www.gnu.org/licenses/gpl-3.0.html 4 * 5 * $Revision: 11443 $ 6 * $Id: formattersettings.cpp 11443 2018-08-12 06:23:37Z ollydbg $ 7 * $HeadURL: svn://svn.code.sf.net/p/codeblocks/code/branches/release-20.xx/src/plugins/astyle/formattersettings.cpp $ 8 */ 9 10 #include <sdk.h> 11 #include "formattersettings.h" 12 #include "astylepredefinedstyles.h" 13 #include <configmanager.h> 14 FormatterSettings()15FormatterSettings::FormatterSettings() 16 { 17 //ctor 18 } 19 ~FormatterSettings()20FormatterSettings::~FormatterSettings() 21 { 22 //dtor 23 } 24 ApplyTo(astyle::ASFormatter & formatter)25void FormatterSettings::ApplyTo(astyle::ASFormatter& formatter) 26 { 27 // NOTE: Keep this in sync with DlgFormatterSettings::ApplyTo 28 ConfigManager* cfg = Manager::Get()->GetConfigManager(_T("astyle")); 29 30 int style = cfg->ReadInt(_T("/style"), 0); 31 switch (style) 32 { 33 case aspsAllman: // Allman (ANSI) 34 formatter.setFormattingStyle(astyle::STYLE_ALLMAN); 35 break; 36 37 case aspsJava: // Java 38 formatter.setFormattingStyle(astyle::STYLE_JAVA); 39 break; 40 41 case aspsKr: // K&R 42 formatter.setFormattingStyle(astyle::STYLE_KR); 43 break; 44 45 case aspsStroustrup: // Stroustrup 46 formatter.setFormattingStyle(astyle::STYLE_STROUSTRUP); 47 break; 48 49 case aspsWhitesmith: // Whitesmith 50 formatter.setFormattingStyle(astyle::STYLE_WHITESMITH); 51 break; 52 53 case aspsVTK: // VTK 54 formatter.setFormattingStyle(astyle::STYLE_VTK); 55 break; 56 57 case aspsRatliff: // Ratliff 58 formatter.setFormattingStyle(astyle::STYLE_RATLIFF); 59 break; 60 61 case aspsGnu: // GNU 62 formatter.setFormattingStyle(astyle::STYLE_GNU); 63 break; 64 65 case aspsLinux: // Linux 66 formatter.setFormattingStyle(astyle::STYLE_LINUX); 67 break; 68 69 case aspsHorstmann: // Horstmann 70 formatter.setFormattingStyle(astyle::STYLE_HORSTMANN); 71 break; 72 73 case asps1TBS: // 1TBS 74 formatter.setFormattingStyle(astyle::STYLE_1TBS); 75 break; 76 77 case aspsGoogle: // Google 78 formatter.setFormattingStyle(astyle::STYLE_GOOGLE); 79 break; 80 81 case aspsMozilla: // Mozilla 82 formatter.setFormattingStyle(astyle::STYLE_MOZILLA); 83 break; 84 85 case aspsPico: // Pico 86 formatter.setFormattingStyle(astyle::STYLE_PICO); 87 break; 88 89 case aspsLisp: // Lisp 90 formatter.setFormattingStyle(astyle::STYLE_LISP); 91 break; 92 93 default: // Custom 94 break; 95 } 96 97 formatter.setAttachClass(cfg->ReadBool(_T("/attach_classes"))); 98 formatter.setAttachExternC(cfg->ReadBool(_T("/attach_extern_c"))); 99 formatter.setAttachNamespace(cfg->ReadBool(_T("/attach_namespaces"))); 100 formatter.setAttachInline(cfg->ReadBool(_T("/attach_inlines"))); 101 102 int spaceNum = cfg->ReadInt(_T("/indentation"), 4); 103 bool value = cfg->ReadBool(_T("/force_tabs")); 104 if (cfg->ReadBool(_T("/use_tabs"))) 105 formatter.setTabIndentation(spaceNum, value); 106 else 107 formatter.setSpaceIndentation(spaceNum); 108 109 int contNum = cfg->ReadInt(_T("/continuation"), 0); 110 if (contNum>0 && contNum<=4) 111 formatter.setContinuationIndentation(contNum); 112 113 formatter.setCaseIndent(cfg->ReadBool(_T("/indent_case"))); 114 formatter.setClassIndent(cfg->ReadBool(_T("/indent_classes"))); 115 formatter.setLabelIndent(cfg->ReadBool(_T("/indent_labels"))); 116 formatter.setModifierIndent(cfg->ReadBool(_T("/indent_modifiers"))); 117 formatter.setNamespaceIndent(cfg->ReadBool(_T("/indent_namespaces"))); 118 formatter.setSwitchIndent(cfg->ReadBool(_T("/indent_switches"))); 119 formatter.setPreprocBlockIndent(cfg->ReadBool(_T("/indent_preproc_block"))); 120 formatter.setPreprocDefineIndent(cfg->ReadBool(_T("/indent_preproc_define"))); 121 formatter.setPreprocConditionalIndent(cfg->ReadBool(_T("/indent_preproc_cond"))); 122 formatter.setIndentCol1CommentsMode(cfg->ReadBool(_T("/indent_col1_comments"))); 123 formatter.setMinConditionalIndentOption(cfg->ReadInt(_T("/min_conditional_indent"), 2)); 124 formatter.setMaxInStatementIndentLength(cfg->ReadInt(_T("/max_instatement_indent"), 40)); 125 126 formatter.setBreakClosingHeaderBracesMode(cfg->ReadBool(_T("/break_closing"))); 127 formatter.setBreakElseIfsMode(cfg->ReadBool(_T("/break_elseifs"))); 128 formatter.setAddBracketsMode(cfg->ReadBool(_T("/add_brackets"))); 129 formatter.setAddOneLineBracketsMode(cfg->ReadBool(_T("/add_one_line_brackets"))); 130 formatter.setRemoveBracketsMode(cfg->ReadBool(_T("/remove_brackets"))); 131 formatter.setBreakOneLineBlocksMode(!cfg->ReadBool(_T("/keep_blocks"))); 132 formatter.setBreakOneLineHeadersMode(cfg->ReadBool(_T("/keep_headers"))); 133 formatter.setBreakOneLineStatementsMode(!cfg->ReadBool(_T("/keep_statements"))); 134 formatter.setTabSpaceConversionMode(cfg->ReadBool(_T("/convert_tabs"))); 135 formatter.setCloseTemplatesMode(cfg->ReadBool(_T("/close_templates"))); 136 formatter.setStripCommentPrefix(cfg->ReadBool(_T("/remove_comment_prefix"))); 137 138 if (cfg->ReadBool(_T("/break_lines"))) 139 { 140 formatter.setMaxCodeLength( wxAtoi(cfg->Read(_T("/max_line_length"))) ); 141 formatter.setBreakAfterMode(cfg->ReadBool(_T("/break_after_mode"))); 142 } 143 else 144 formatter.setMaxCodeLength(INT_MAX); 145 146 formatter.setBreakBlocksMode(cfg->ReadBool(_T("/break_blocks"))); 147 formatter.setBreakClosingHeaderBlocksMode(cfg->ReadBool(_T("/break_blocks_all"))); 148 formatter.setOperatorPaddingMode(cfg->ReadBool(_T("/pad_operators"))); 149 formatter.setParensOutsidePaddingMode(cfg->ReadBool(_T("/pad_parentheses_out"))); 150 formatter.setParensInsidePaddingMode(cfg->ReadBool(_T("/pad_parentheses_in"))); 151 formatter.setParensFirstPaddingMode(cfg->ReadBool(_T("/pad_first_paren_out"))); 152 formatter.setParensHeaderPaddingMode(cfg->ReadBool(_T("/pad_header"))); 153 formatter.setParensUnPaddingMode(cfg->ReadBool(_T("/unpad_parentheses"))); 154 formatter.setCommaPaddingMode(cfg->ReadBool(_T("/pad_comma"))); 155 formatter.setDeleteEmptyLinesMode(cfg->ReadBool(_T("/delete_empty_lines"))); 156 formatter.setEmptyLineFill(cfg->ReadBool(_T("/fill_empty_lines"))); 157 158 wxString pointerAlign = cfg->Read(_T("/pointer_align")); 159 if (pointerAlign == _T("Type")) 160 formatter.setPointerAlignment(astyle::PTR_ALIGN_TYPE); 161 else if (pointerAlign == _T("Middle")) 162 formatter.setPointerAlignment(astyle::PTR_ALIGN_MIDDLE); 163 else if (pointerAlign == _T("Name")) 164 formatter.setPointerAlignment(astyle::PTR_ALIGN_NAME); 165 else 166 formatter.setPointerAlignment(astyle::PTR_ALIGN_NONE); 167 168 wxString referenceAlign = cfg->Read(_T("/reference_align")); 169 if (referenceAlign == _T("Type")) 170 formatter.setReferenceAlignment(astyle::REF_ALIGN_TYPE); 171 else if (referenceAlign == _T("Middle")) 172 formatter.setReferenceAlignment(astyle::REF_ALIGN_MIDDLE); 173 else if (referenceAlign == _T("Name")) 174 formatter.setReferenceAlignment(astyle::REF_ALIGN_NAME); 175 else 176 formatter.setReferenceAlignment(astyle::REF_ALIGN_NONE); 177 } 178