One option is to process the sigils formatter option early, so we pass this
option to the Surface formatter (which can then pass it to
format_to_string). In a nutshell, move this code
<https://github.com/elixir-lang/elixir/blob/b401d15296348e014e77863b1e3335176687a03d/lib/mix/lib/mix/tasks/format.ex#L540-L545>
to some place earlier in the stack. A PR is welcome! Feel free to ping if
you have any questions!

On Fri, Jan 21, 2022 at 10:20 PM Jonatan Männchen <jona...@maennchen.ch>
wrote:

> Hi All,
>
> I would like to propose the ability to format embedded elixir expressions
> inside of files / sigils being formatted by a formatter plugin.
>
> *Situation at the Moment*
>
> Formatter Plugins that format files which contain elixir expressions
> inside do not currently have a way to call the formatter again on the
> nested expression.
>
> *Example Usage*
>
> When using both surface <https://github.com/surface-ui/surface_formatter>
> and cldr_messages <https://github.com/elixir-cldr/cldr_messages>, one
> could write a file like this:
>
> <div> {gettext(~M"It's my cat's {year, selectordinal, one {#st} two {#nd}
> few {#rd} other {#th}} birthday!")} </div>
>
> The HTML should be formatted by the surface formatter, the M sigil by the
> cldr messages formatter.
> Since the surface formatter is currently using Code.format_string!/2, the
> cldr formatter is not applied. Reported to surface formatter as a bug here:
> https://github.com/surface-ui/surface_formatter/issues/60
>
> I expect to see similar questions in formatter plugins like heex_formatter
> <https://github.com/feliperenan/heex_formatter>.
>
> *Possible Solution*
>
> It would be nice if there was an API, that would allow passing embedded
> elixir expressions back into the formatter.
>
> One way to achieve that, would be to pass a function
> to Mix.Tasks.Format.format/2 into opts.
>
> Thanks,
> Jony
>
> --
> 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 on the web visit
> https://groups.google.com/d/msgid/elixir-lang-core/5b6b6721-c16e-480f-be95-8ef1a46dbb50n%40googlegroups.com
> <https://groups.google.com/d/msgid/elixir-lang-core/5b6b6721-c16e-480f-be95-8ef1a46dbb50n%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>

-- 
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 on the web visit 
https://groups.google.com/d/msgid/elixir-lang-core/CAGnRm4%2BQ7VwMr0%2BE2eVcFMpmbsaA3Vr5Ue3OOZbrEJErmRW_UA%40mail.gmail.com.

Reply via email to