*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 elixir-lang-core+unsubscr...@googlegroups.com.
To view this discussion visit 
https://groups.google.com/d/msgid/elixir-lang-core/dd8c0c49-61f8-4507-9248-3f312b3e6e12n%40googlegroups.com.

Reply via email to