Elixir 的混合格式忽略行长度选项

Elixir's mix format ignores line length option

我的项目根目录中有一个 Elixir 项目 .formatter.exs 文件,如下所示:

[
  line_length: 120,
  inputs: ["mix.exs", "config/*.exs"],
  subdirectories: ["apps/*"]
]

但据我所知,line_length 参数被忽略了。

给定以下代码,最长的一行(长度为 102 个字符)总是被分成两行(when 子句换行):

defmodule SomeModule do
  def lookup_data(parameter1, parameter2) when is_integer(parameter1) and is_integer(parameter2) do
    :not_implemented
  end
end

相比之下,如果我将模块复制并粘贴到 the online Elixir formatter 并将行长度选项设置为 120,则文本没有任何变化(如预期的那样)。

我一定是把 .formatter.exs 搞砸了,但我这辈子都想不通。

mix format docs 中,它指出如果您的顶级 .formatter.exs 列出了子目录(我的有 "apps/*"),则来自顶级格式化程序的规则将不会在那些子目录中使用。

解决方案是使用行长度参数编辑 apps/[my_app]/.formatter.exs(之前由 mix new 自动生成):

[
  line_length: 120
]