nitpretty - pretty print Nit code from Nit source files.
nitpretty [options]... FILE
Working directory (default is '.nitpretty').
Output name (default is pretty.nit).
Show diff between source and output.
Show diff between source and output using meld.
Check format of Nit source files.
This option creates a temporary pretty printed file then checks if the output of the diff command on the source file and the pretty printed one is empty.
Break too long string literals.
Force do keyword on the same line as the method signature.
Force formatting of empty lines.
By default empty lines are kept as they were typed in the file.
When enabling this option,
nitpretty will decide where to break lines and
will put empty lines to separate properties and code blocks.
Maximum length of lines (use 0 to disable automatic line breaks).
Disable automatic one-liners.
The specification of the pretty printing is described here.
- Default indentation level is one
'\t'character and is increased by one for each indentation level.
- Default line max-size is 80.
There is many categories of comments:
Licence comments are attached to the top of the file no blank line before,
# This is a licence comment # Documentation for module `foo` module foo
ADoc are documentation comments attached to a
They are printed before the definition with a blank line before and no after at the same indentation level than the definition.
# Documentation for module `foo` module foo # Documentation for class `Bar` class Bar # Documentation for method `baz` fun baz do end end
Block comments are comments composed of one or more line rattached to nothing.
They are displayed with one blank line before and after at current indent level.
<blank> # block # comment <blank>
Attached comments are comments attached to a production.
They are printed as this.
fun foo do # attached comment end
nitpretty automatically remove multiple blanks between comments:
# Licence # ... <blank> # Block comment
Productions are automatically inlined when possible.
- The production must be syntactically inlinable
- The inlined production length is less than
- The production do not contains any comments
- There is a blank between the module declaration and its imports
- There is no blank between imports and only one after
- There is a blank between each extern block definition
- There is a blank between each class definition
- There is no blank line at the end of the module
# Documentation for module `foo` module foo import a import b import c # Documentation for class `Bar` class Bar end class Baz end # not a `ADoc` comment
- There is no blank between the class definition and its super-classes declarations
- There is no blank between two inlined property definition
- There is a blank between each block definition
- There no blank line at the end of the class definition
# Documentation for class `Bar` class Bar end class Baz super Bar fun a is abstract private fun b do end fun c do # ... end end
Generic types have no space after or before brackets and are separated by a comma and a space:
class A[E: Type1, F: Type1] end
- Inlined productions have no blank lines between them
- Block productions have a blank before and after
var a = 10 var b = 0 if a > b then is positive print "positive" end print "end"
CALLS AND BINARY OPS
Arguments are always printed separated with a comma and a space:
foo(a, b, c)
Binary ops are always printed wrapped with spaces:
var c = 1 + 2
Calls and binary ops can be splitted to fit the
Breaking priority is given to arguments declaration after the comma.
return foo("aaaaaaaaaaaaaaaaaaaaaaaaaa", "bbbbbbbbbbbbbbbbbbbbbbbbbbb", "cccccccccccccccccccccccccc")
Binary ops can also be broken to fit the
return "aaaaaaaaaaaaaaaaaaaaaaaaaa" + "bbbbbbbbbbbbbbbbbbbbbbbbbbb" + "cccccccccccccccccccccccccc"