You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
<tr><td>indent.tabWidth</td><td>integer</td><td>0</td><td>Display width (in columns) used only to <strong>measure</strong> existing tab-indented source when computing visual columns for right-margin / soft-break decisions. <code>0</code> = same as <code>indent.size</code>; <code>>0</code> = an explicit editor tab-stop width. Does not affect emitted indentation</td></tr>
173
173
<tr><td>indent.style</td><td>"spaces" | "tabs" | "asIs"</td><td>"asIs"</td><td>Indent character: <code>spaces</code> always uses spaces; <code>tabs</code> uses one tab per structural level (continuation/alignment stay spaces); <code>asIs</code> (Default) preserves the source's indent character — the first line with leading indentation decides (leading tab → tabs, leading space → spaces), none → spaces. Depth is always recomputed; only the character is preserved</td></tr>
174
174
<tr><td>indent.directives</td><td>"asIs" | "column0" | "structural"</td><td>"asIs"</td><td>Compiler-directive indentation: <code>asIs</code> preserves source indent (Default); <code>column0</code> forces the left margin (FormatterExe/Embarcadero); <code>structural</code> indents to surrounding depth</td></tr>
175
+
<tr><td>indent.labelIndent</td><td>"bodyLevel" | "blockOpener" | "column0" | "asIs"</td><td>"bodyLevel"</td><td>Indentation of a stand-alone goto-label line (<code>findAgain:</code> alone on its line): <code>bodyLevel</code> keeps it at the statement column (Default); <code>blockOpener</code> outdents it one level to its enclosing block-opener column (Embarcadero); <code>column0</code> forces the left margin; <code>asIs</code> preserves the source column. A same-line <code>label: stmt;</code> is unaffected</td></tr>
175
176
<tr><td>indent.continuationSize</td><td>integer</td><td>2</td><td>Extra spaces added to wrapped / continuation lines</td></tr>
176
177
<tr><td>indent.anchorBased</td><td>bool</td><td>false</td><td>When wrapping, align continuation lines under the column after the opening delimiter instead of using a fixed continuation indent</td></tr>
177
178
<tr><td>indent.maxColumn</td><td>integer</td><td>0</td><td><code>0</code> = no cap; <code>>0</code> = clamp any computed indent to this column</td></tr>
<tr><td>lineBreaks.afterLabel</td><td><ahref="#tri-state">tri-state</a></td><td>"asis"</td><td>Newline after a statement label's colon</td></tr>
198
199
<tr><td>lineBreaks.lineAfterSemicolon</td><td>bool</td><td>false</td><td>Force a line break after every statement-terminating semicolon, so each statement lands on its own line. Add-only (never removes user breaks) and CST-aware — parameter-list and declaration separators are left untouched</td></tr>
199
200
<tr><td>lineBreaks.usesMode</td><td>"preserve" / "singleLine" / "onePerLine"</td><td>"preserve"</td><td>How <code>uses</code> clauses are laid out: unchanged, collapsed to one line, or one unit per line</td></tr>
201
+
<tr><td>lineBreaks.sectionKeywordJoin</td><td>"preserve" / "join" / "break"</td><td>"preserve"</td><td>Placement of a section introducer (<code>type</code>/<code>const</code>/<code>var</code>) that follows a visibility specifier (<code>private type</code>, <code>strict private type</code>): <code>preserve</code> keeps the author's layout (never splits an inline pair, never joins a broken one); <code>join</code> collapses the pair onto one line; <code>break</code> forces them onto separate lines. The atomic compound directives (<code>strict private</code>, <code>class var</code>/<code>class function</code>/…) are always intact regardless. An intervening comment (<code>private {note} type</code>) leaves the pair as authored under every mode</td></tr>
<tr><td>output.lineEnding</td><td>"platform" / "crlf" / "lf" / "cr" / "detect"</td><td>"platform"</td><td><code>platform</code> uses the platform default line ending (CRLF on Windows), regardless of the source; <code>crlf</code> / <code>lf</code> / <code>cr</code> force that terminator; <code>detect</code> keys off the source file's first line break (<code>\r\n</code>→CRLF, <code>\n</code>→LF, <code>\r</code>→CR; none → platform) and applies it uniformly, so a LF-only file stays LF</td></tr>
239
+
<tr><td>output.lineEnding</td><td>"platform" / "crlf" / "lf" / "cr" / "detect"</td><td>"platform"</td><td><code>platform</code> uses the platform default line ending (CRLF on Windows), regardless of the source; <code>crlf</code> / <code>lf</code> / <code>cr</code> force that terminator; <code>detect</code> keys off the source file's first line break (<code>\r\n</code>→CRLF, <code>\n</code>→LF, <code>\r</code>→CR; none → platform) and applies it uniformly, so a LF-only file stays LF. The NoOp profile uses <code>detect</code></td></tr>
240
+
<tr><td>output.trimTrailingWhitespace</td><td>bool</td><td>true</td><td>When <code>true</code>, end-of-line whitespace is removed (the renderer rebuilds each line from its tokens). When <code>false</code>, a line's trailing whitespace is preserved verbatim — both the run after the last token and a whitespace-only blank line's spaces. The NoOp profile sets this <code>false</code> so it is a true byte-for-byte pass-through; other profiles keep it <code>true</code></td></tr>
238
241
<tr><td>output.rightMargin</td><td>integer</td><td>0</td><td>Wrap column. <code>0</code> = disabled. When <code>>0</code>, lines longer than this are wrapped at their declared soft-break points (call arguments, parameter lists, <code>uses</code> commas, binary operators, inheritance lists, and so on)</td></tr>
239
242
<tr><td>output.maxEmptyLines</td><td>integer</td><td>-1</td><td><code>-1</code> = unlimited; <code>0+</code> = maximum consecutive blank lines</td></tr>
240
243
<tr><td>output.strictMode</td><td>bool</td><td>true</td><td>When <code>true</code>, an unclassifiable feature is a validation error; when <code>false</code>, unknown constructs pass through untouched</td></tr>
<tr><td>conditional.mode</td><td>"activeBranch" / "allBranches" / "preserveConditionals"</td><td>"activeBranch"</td><td><code>activeBranch</code> formats the branch selected by the build context and preserves inactive branches verbatim (directives included); <code>allBranches</code> parses every branch as one stream and formats best-effort (no build context used); <code>preserveConditionals</code> leaves every conditional line exactly as authored — any physical line holding a conditional directive, or lying between an opener and its matching closer, is emitted verbatim — while everything outside conditional regions is reformatted</td></tr>
269
+
<tr><td>conditional.mode</td><td>"activeBranch" / "allBranches" / "preserveConditionals"</td><td>"activeBranch"</td><td><code>activeBranch</code> formats the branch selected by the build context and preserves inactive branches verbatim (directives included); <code>allBranches</code> parses every branch as one stream and formats best-effort (no build context used); <code>preserveConditionals</code> leaves every conditional line exactly as authored — any physical line holding a conditional directive, or lying between an opener and its matching closer, is emitted verbatim — while everything outside conditional regions is reformatted (it folds against the deterministic default context only to obtain a parse stream; that branch choice never affects the verbatim regions). Values parse case-insensitively</td></tr>
267
270
<tr><td>conditional.compilerVersion</td><td>string</td><td>""</td><td>Build context (used by <code>activeBranch</code> only): compiler version as a product name (<code>"Delphi 12"</code>), an alias, or a <code>VERxxx</code> define. Empty = the parser's latest known version (deterministic)</td></tr>
268
271
<tr><td>conditional.platform</td><td>string</td><td>""</td><td>Build context: a target-platform enum name (<code>Win32Target</code>, <code>Win64Target</code>, …). Empty = <code>Win32Target</code> (deterministic default)</td></tr>
269
272
<tr><td>conditional.defines</td><td>string array</td><td>[]</td><td>Build context: conditional symbols to define (a <code>NAME=VALUE</code> entry keeps only <code>NAME</code>; folding is name-only)</td></tr>
<ahref="https://github.com/radprogrammer/radFormatter/releases">Configuration options as of radFormatter v2.7.963 (Alpha) · config schema 3.4 — see release notes</a>
0 commit comments