[ ] Preserve some whitespace (hard to read lots of long expressions bound in the imperative fragment), see #1086
[x] Preserve comments, see #1086 #1172
[x] #1216
[ ] VS Code plugin support (if there is any special need), see #788
[ ] Port pretty-printing randomized tests from scilla-chick to qcheck: we don't need to generate well-typed programs to test the formatter. This will also increase test coverage.
Small and/or easy improvements
[ ] Support for Scilla libraries (.scillib files)
[ ] A CLI option to set the width of the formatting window
[ ] CLI: return specific error codes for different types of failures (other than CLI argument parsing errors)
[ ] Generate man pages for the scilla-fmt binary
[ ] Format imports on one line if these do not contain namespaces
[ ] Less parentheses for types
[ ] Special treatment for function of multiple arguments: do not increase indentation for these
[ ] Special treatment for
let foo =
let bar = ... in ...
in
...
The second let for short expressions ends up on the same line as the first one, which hinders readability:
let foo = let bar = ... in ... in ...
[ ] Type definitions can be pretty unreadable with contract address types:
type Foo =
| Foo of ByStr20 with contract ............................. end Uint256
Bigger features and improvements
scilla-chick
toqcheck
: we don't need to generate well-typed programs to test the formatter. This will also increase test coverage.Small and/or easy improvements
.scillib
files)scilla-fmt
binaryThe second
let
for short expressions ends up on the same line as the first one, which hinders readability: