dfmt is a formatter for D source code
dfmt is beta quality. Make backups of your files or use source control when using the --inplace option.
Building from source using Makegit submodule update --init --recursive
in the dfmt directorymake
in the dfmt directory. To compile with LDC, run make ldc
instead. The generated binary will be placed in dfmt/bin/
.dub build --build=release
, optionally with --compiler=ldc2
By default, dfmt reads its input from stdin and writes to stdout. If a file name is specified on the command line, input will be read from the file instead, and output will be written to stdout.
dfmt uses EditorConfig files for configuration. If you run dfmt on a source file it will look for .editorconfig files that apply to that source file. If no file is specified on the command line, dfmt will look for .editorconfig files that would apply to a D file in the current working directory. Command line options can be used instead of .editorconfig files, or to override options found there.
--help | -h
: Display command line options.--inplace | -i
: A file name is required and the file will be edited in-place.--align_switch_statements
: see dfmt_align_switch_statements below--brace_style
: see dfmt_brace_style below--compact_labeled_statements
: see dfmt_compact_labeled_statements below--end_of_line
: see end_of_line below--indent_size
: see indent_size below--indent_style | -t
: see indent_style below--max_line_length
: see max_line_length below--outdent_attributes
: see dfmt_outdent_attributes below--selective_import_space
: see dfmt_selective_import_space below--single_template_constraint_indent
: see dfmt_single_template_constraint_indent below--soft_max_line_length
: see dfmt_soft_max_line_length below--space_after_cast
: see dfmt_space_after_cast below--space_before_aa_colon
: see dfmt_space_before_aa_colon below--space_before_named_arg_colon
: see dfmt_space_before_named_arg_colon below--space_before_function_parameters
: see dfmt_space_before_function_parameters below--split_operator_at_line_end
: see dfmt_split_operator_at_line_end below--tab_width
: see tab_width below--template_constraint_style
: see dfmt_template_constraint_style below--keep_line_breaks
: see dfmt_keep_line_breaks below--single_indent
: see dfmt_single_indent below--reflow_property_chains
: see dfmt_property_chains below--space_after_keywords
: see dfmt_space_after_keywords belowdfmt --inplace --space_after_cast=false --max_line_length=80 \
--soft_max_line_length=70 --brace_style=otbs file.d
Formatting can be temporarily disabled by placing the comments // dfmt off
and // dfmt on
around code that you do not want formatted.
void main(string[] args) { bool optionOne, optionTwo, optionThree; // dfmt has no way of knowing that "getopt" is special, so it wraps the // argument list normally getopt(args, "optionOne", &optionOne, "optionTwo", &optionTwo, "optionThree", &optionThree); // dfmt off getopt(args, "optionOne", &optionOne, "optionTwo", &optionTwo, "optionThree", &optionThree); // dfmt on }
dfmt uses EditorConfig configuration files. dfmt-specific properties are prefixed with dfmt_.
Standard EditorConfig properties Property Name Allowed Values Description dfmt_brace_styleallman
, otbs
, stroustrup
or knr
See Wikipedia dfmt_soft_max_line_length positive integers (80
) The formatting process will usually keep lines below this length, but they may be up to max_line_length columns long. dfmt_align_switch_statements true
, false
Align labels, cases, and defaults with their enclosing switch. dfmt_outdent_attributes (Not yet implemented) true
, false
Decrease the indentation level of attributes. dfmt_split_operator_at_line_end true
, false
Place operators on the end of the previous line when splitting lines. dfmt_space_after_cast true
, false
Insert space after the closing paren of a cast
expression. dfmt_space_after_keywords (Not yet implemented) true
, false
Insert space after if
, while
, foreach
, etc, and before the (
. dfmt_space_before_function_parameters true
, false
Insert space before the opening paren of a function parameter list. dfmt_selective_import_space true
, false
Insert space after the module name and before the :
for selective imports. dfmt_compact_labeled_statements true
, false
Place labels on the same line as the labeled switch
, for
, foreach
, or while
statement. dfmt_template_constraint_style conditional_newline_indent
conditional_newline
always_newline
always_newline_indent
Control the formatting of template constraints. dfmt_single_template_constraint_indent true
, false
Set if the constraints are indented by a single tab instead of two. Has only an effect if the style set to always_newline_indent
or conditional_newline_indent
. dfmt_space_before_aa_colon true
, false
Adds a space after an associative array key before the :
like in older dfmt versions. dfmt_space_before_named_arg_colon true
, false
Adds a space after a named function argument or named struct constructor argument before the :
. dfmt_keep_line_breaks true
, false
Keep existing line breaks if these don't violate other formatting rules. dfmt_single_indent true
, false
Set if the code in parens is indented by a single tab instead of two. dfmt_reflow_property_chains true
, false
Recalculate the splitting of property chains into multiple lines. dfmt_space_after_keywords true
, false
Insert space after keywords (if,while,foreach,for, etc.).
{
and }
[
and ]
(
and )
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4