-
Notifications
You must be signed in to change notification settings - Fork 284
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Automatic formatting of Pkl files #442
Comments
This isn't technically true; The current front-end is slightly too deeply integrated with the interpreter. We're working on improving that, so that this kind of tool is easier to build/maintain. It's certainly on our radar. |
Hello! I want to mention that we had frustrations when developing a formatter for the Nickel configuration language. Our parsing infrastructure wasn't really geared toward formatting (which requires more information in the output, i.e. a CST instead of an AST), and wiping the parser entirely for something different sounded like a lot of work. So we developed Topiary, which is a stand-alone multi-language formatter based on tree-sitter. That is, if you already have a tree-sitter grammar lying around for editor highlighting (or you plan to write one), you can reuse it to create a formatter by writing additional specific tree sitter queries (here is the formatting queries for Nickel for example - it's 500 lines but with many comments and lists with one element per line). On caveat is that the grammar must be fine-grained enough: for highlighting, one can get away with a very coarse grammar specification, but formatting might be more demanding. Topiary can then be used as a separate tool for formatting, or even embedded as e.g. I hope it's not out of place or that it doesn't sound too much like advertising. It's just that one motivation of Topiary is to create formatters for new languages without too much hassle (by delegating parsing and pretty-printing to tree-sitter and just focusing on transforming the source tree, under the assumption that you'll have to write a tree-sitter grammar anyway for editor support), so it might be a possible direction to explore for Pkl 🙂 |
Yann: thanks for the insight! This looks pretty interesting; and, we already have a tree-sitter grammar, so it should be simple enough for us to play around with Topiary and see how it works. You're right in calling out that Java bindings for tree-sitter is a question mark. There's a couple libraries out there, but they either involve binding through JNI (e.g. java-tree-sitter), which introduces its own pain points, or other interesting libraries that aren't actively maintained (e.g. jsitter). |
Problem Statement
Currently, there doesn't seem to be any way to automatically format a Pkl file. This means that we cannot enforce a standard style when collaborating in a team, nor automatically flag violations in PRs.
Proposed Solution
Something like
pkl format
, replicating the CLI of Prettier. Examples:Open Questions
;
separators?Relevant Links
Discussion in February: #174
The text was updated successfully, but these errors were encountered: