*Problem *
Currently, formatter plugins cannot receive custom options. This limitation
becomes problematic in scenarios where plugins need configuration to
determine their scope or behavior.
*Real-world Example *
The Phoenix LiveView formatter plugin formats all ~H sigils in the
codebase. However, ~H sigils are general-purpose and can be used by any
library (e.g., Hologram uses them for its own purposes). This leads to
issues:
- When Hologram codebase is formatted, the LiveView formatter raises
errors because it incorrectly attempts to parse Hologram's ~H sigils as
HEEx templates
- Currently, there's no way to tell the LiveView formatter which paths
should be formatted and which should be ignored
*Proposal *
Allow specifying custom options for formatter plugins in .formatter.exs:
Current syntax:
[
# ...
formatters: [MyLib1.Formatter, MyLib2.Formatter],
# ...
]
Proposed syntax:
[
# ...
formatters: [MyLib1.Formatter, {MyLib2.Formatter, a: 1, b: 2}],
# ...
]
*Benefits *
1. Plugins can receive configuration to customize their behavior
2. Solves the LiveView vs Hologram formatter collision by allowing users
to specify which paths should be formatted by which plugin
3. More flexible and configurable formatting system overall
*Implementation Notes *
- The formatter would pass these options to the plugin's formatting
functions
- Plugins not requiring options can still be specified using the current
syntax
- Backward compatible change - existing formatter configurations would
continue to work
--
You received this message because you are subscribed to the Google Groups
"elixir-lang-core" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion visit
https://groups.google.com/d/msgid/elixir-lang-core/dd8c0c49-61f8-4507-9248-3f312b3e6e12n%40googlegroups.com.