Formatters
Anthracode uses language specific formatters.
Anthracode can format files after they are written or edited using language-specific formatters. Formatters are disabled by default; enable them in your config before Anthracode will run them.
Anthracode comes with several built-in formatters for popular languages and frameworks. Below is a list of the formatters, supported file extensions, and commands or config options it needs.
| Formatter | Extensions | Requirements |
|---|---|---|
| air | .R | air command available |
| biome | .js, .jsx, .ts, .tsx, .html, .css, .md, .mdx, .json, .yaml, .toml, .xml, .graphql, and more | biome.json(c) config file |
| rustfmt | .rs | rustfmt command available |
| clang-format | .c, .cc, .cpp, .h, .hh, .hpp, .ino, and more | .clang-format config file |
| cljfmt | .clj, .cljs, .cljc, .edn | cljfmt command available |
| dart | .dart | dart command available |
| dfmt | .d | dfmt command available |
| gleam | .gleam | gleam command available |
| gofmt | .go | gofmt command available |
| htmlbeautifier | .erb, .html.erb | htmlbeautifier command available |
| ktlint | .kt, .kts | ktlint command available |
| latexindent | .tex | latexindent command available |
| mix | .ex, .exs, .eex, .heex, .leex, .neex, .sface | mix command available |
| nixfmt | .nix | nixfmt command available |
| ocamlformat | .ml, .mli | ocamlformat command available and .ocamlformat config file |
| ormolu | .hs | ormolu command available |
| oxfmt (Experimental) | .js, .jsx, .mjs, .cjs, .ts, .tsx, .mts, .cts | oxfmt dependency in package.json and an experimental env variable flag |
| pint | .php | laravel/pint dependency in composer.json |
| prettier | .js, .jsx, .ts, .tsx, .html, .css, .md, .mdx, .json, .yaml, .toml, .xml, .graphql, and more | prettier dependency in package.json |
| rubocop | .rb, .rake, .gemspec, .ru | rubocop command available |
| ruff | .py, .pyi | ruff command available with config |
| shfmt | .sh, .bash | shfmt command available |
| standardrb | .rb, .rake, .gemspec, .ru | standardrb command available |
| terraform | .tf, .tfvars | terraform command available |
| uv | .py, .pyi | uv command available |
| zig | .zig, .zon | zig command available |
When formatters are enabled, Anthracode will use prettier for matching files if your project has prettier in package.json.
When Anthracode writes or edits a file and formatters are enabled, it:
- Checks the file extension against all enabled formatters.
- Runs the appropriate formatter command on the file.
- Applies the formatting changes.
This process happens in the background for enabled formatters.
You can enable and customize formatters through the formatter section in your Anthracode config.
To enable all built-in formatters, set formatter to true.
{
"formatter": true}Use an object to keep built-ins enabled while configuring overrides or custom formatters.
{
"formatter": {}}Each formatter configuration supports the following:
| Property | Type | Description |
|---|---|---|
disabled | boolean | Set this to true to disable the formatter |
command | string[] | The command to run for formatting. Required for custom formatters; optional for built-ins. |
environment | object | Environment variables to set when running the formatter |
extensions | string[] | File extensions this formatter should handle |
Let’s look at some examples.
If formatter is omitted, all formatters are disabled. To disable all formatters after another config enabled them, set formatter to false:
{
"formatter": false}To disable a specific formatter, set disabled to true:
{
"formatter": { "prettier": { "disabled": true } }}You can configure built-in formatters with options like environment or extensions. To add a custom formatter, specify a command and extensions:
{
"formatter": { "prettier": { "command": ["npx", "prettier", "--write", "$FILE"], "environment": { "NODE_ENV": "development" }, "extensions": [".js", ".ts", ".jsx", ".tsx"] }, "custom-markdown-formatter": { "command": ["deno", "fmt", "$FILE"], "extensions": [".md"] } }}The $FILE placeholder in the command will be replaced with the path to the file being formatted.