Elm和VSCode:Formatter弄乱了空格

时间:2019-04-27 17:24:50

标签: elm code-formatting

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

我跟随the docs进行了设置,并通过elm安装了el-formatnpm install -g elm elm-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. 如果不是,为什么本教程使用非标准缩进?

1 个答案:

答案 0 :(得分:7)

首先,这个问题太宽泛并且主要基于观点,因此可能会被封闭。我认为它更适合the forums

也就是说,由于它在这里,我将尽我所能尽可能地回答它。

  1. 是吗?大多数模块在不公开内容的情况下并不会非常有用,并且最好明确说明要公开的内容。

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

  3. 您不能。这是设计使然。在各个论坛上也对此进行了讨论。 Here's one issue discussing it

  4. 您必须向Evan询问。这可能与网络格式有关,或者仅仅是Evan懒惰。