On 2015-02-22 19:52, qznc wrote:
Congratulations to releasing. :)
For the record, I think using a D parser in dfmt is a dead end. Surely,
for certain cases the additional information is necessary. However, it
restricts dfmt to only format syntactically valid snippets. This means
you cannot (in general) format parts of a file, e.g. within a diff or
editor.
Example where parsing helps: "foo : bar" or "foo: bar" depending on the
context. The former within import statements, the latter within switch
statements.
Example for a snippet you cannot parse: The body of a switch statement
without the switch. The 'case' keyword would be an error.
It depends on how the parser is implemented. For example, the Eclipse
Java parser is very flexible when it comes to this. You can choose to
either parse a complete file or just a fragment of code.
Effectively, you want to parse, but not with a normal parser. Great
formatting seems to require a special (more flexible, less correct)
parser. This is what clang-format does.
clang-format uses the lexer with the help of the parser. It only changes
whitespace. At least according to the talk I watched, which is a couple
of years old.
--
/Jacob Carlborg