Elm 和 VSCode:格式化程序弄乱了间距

Elm and VSCode: Formatter messes up spacing

所以我今天开始学习Elm。我使用 VSCode 作为我的编辑器。

我按照 the docs 进行了设置,并通过 npm install -g elm elm-format 安装了 elmel-format。我还安装了 VSCode Elm 扩展。

接下来,在我的 settings.json 中设置:

"[elm]": {
  "editor.formatOnSave": true
},

然后我继续教程。其中的代码格式如下:

import Browser
import Html exposing (Html, Attribute, div, input, text)
import Html.Attributes exposing (..)
import Html.Events exposing (onInput)



-- MAIN


main =
  Browser.sandbox { init = init, update = update, view = view }



-- MODEL


type alias Model =
  { content : String
  }


init : Model
init =
  { content = "" }



-- UPDATE


type Msg
  = Change String


update : Msg -> Model -> Model
update msg model =
  case msg of
    Change newContent ->
      { model | content = newContent }



-- VIEW


view : Model -> Html Msg
view model =
  div []
    [ input [ placeholder "Text to reverse", value model.content, onInput Change ] []
    , div [] [ text (String.reverse model.content) ]
    ]

但是当我点击安全时,它格式化代码如下:

module Main exposing (Model, Msg(..), init, main, update, view)

import Browser
import Html exposing (Attribute, Html, div, input, text)
import Html.Attributes exposing (..)
import Html.Events exposing (onInput)



-- MAIN


main =
    Browser.sandbox { init = init, update = update, view = view }



-- MODEL


type alias Model =
    { content : String
    }


init : Model
init =
    { content = "" }



-- UPDATE


type Msg
    = Change String


update : Msg -> Model -> Model
update msg model =
    case msg of
        Change newContent ->
            { model | content = newContent }



-- VIEW


view : Model -> Html Msg
view model =
    div []
        [ input [ placeholder "Text to reverse", value model.content, onInput Change ] []
        , div [] [ text (String.reverse model.content) ]
        ]

所以它增加了额外的行,额外的 module Main exposing ... 和双倍的空格数。我尝试使用 VSCode 中的页脚再次将空格设置为 2,但这没有帮助。

我的问题是:

  1. 储蓄可以增加额外的module Main ...吗?
  2. 是有 2 个空间最佳实践/社区标准,还是 4 个?
  3. 如果它是 2(就像它在教程的默认代码中一样),我怎样才能让我的格式化程序遵守它?
  4. 如果不是,教程为什么缩进不规范?

首先,这个问题过于宽泛,主要基于意见,因此可能会被关闭。我认为它更适合 the forums

就是说,无论如何我都会尽力回答它,因为它在这里:

  1. 是吗?如果不公开某些内容,大多数模块都不会非常有用,最好明确说明所公开的内容。

  2. elm-format 社区标准,所以4是。

  3. 你不能。这是设计使然。它也在各种论坛上被讨论到死。 Here's one issue discussing it

  4. 你得问问 Evan。这可能与网络格式有关,或者只是 Evan 懒惰。