Elixir 混合格式忽略行长选项

标签 elixir code-formatting

我的项目根目录中有一个 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
]

关于Elixir 混合格式忽略行长选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59535671/

相关文章:

elixir - 如何在 Elixir 中使用嵌套数据结构

c# - 有没有办法标记代码以告诉 ReSharper 不要格式化它?

ruby - 使用 Geany 美化 Ruby 源代码

java - 在 Java 中打印时差的最惯用方法?

javascript - IntelliJ - Javascript 中的制表符缩进不起作用

elixir - 在 Ecto 中添加关系 (Phoenix 1.3)

elixir - 如何删除 hex 上的 elixir 包

visual-studio - 如何让 Resharper 正确包装很长的行?

elixir - 如何使用 Elixir 和 Ecto 比较日期

elixir - Elixir Phoenix 中的包罗万象/通配符路线?