Elm 和 VSCode:格式化程序弄乱了间距
Elm and VSCode: Formatter messes up spacing
所以我今天开始学习Elm。我使用 VSCode 作为我的编辑器。
我按照 the docs 进行了设置,并通过 npm install -g elm elm-format
安装了 elm
和 el-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,但这没有帮助。
我的问题是:
- 储蓄可以增加额外的
module Main ...
吗?
- 是有 2 个空间最佳实践/社区标准,还是 4 个?
- 如果它是 2(就像它在教程的默认代码中一样),我怎样才能让我的格式化程序遵守它?
- 如果不是,教程为什么缩进不规范?
首先,这个问题过于宽泛,主要基于意见,因此可能会被关闭。我认为它更适合 the forums。
就是说,无论如何我都会尽力回答它,因为它在这里:
是吗?如果不公开某些内容,大多数模块都不会非常有用,最好明确说明所公开的内容。
elm-format
是社区标准,所以4是。
你不能。这是设计使然。它也在各种论坛上被讨论到死。 Here's one issue discussing it
你得问问 Evan。这可能与网络格式有关,或者只是 Evan 懒惰。
所以我今天开始学习Elm。我使用 VSCode 作为我的编辑器。
我按照 the docs 进行了设置,并通过 npm install -g elm elm-format
安装了 elm
和 el-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,但这没有帮助。
我的问题是:
- 储蓄可以增加额外的
module Main ...
吗? - 是有 2 个空间最佳实践/社区标准,还是 4 个?
- 如果它是 2(就像它在教程的默认代码中一样),我怎样才能让我的格式化程序遵守它?
- 如果不是,教程为什么缩进不规范?
首先,这个问题过于宽泛,主要基于意见,因此可能会被关闭。我认为它更适合 the forums。
就是说,无论如何我都会尽力回答它,因为它在这里:
是吗?如果不公开某些内容,大多数模块都不会非常有用,最好明确说明所公开的内容。
elm-format
是社区标准,所以4是。你不能。这是设计使然。它也在各种论坛上被讨论到死。 Here's one issue discussing it
你得问问 Evan。这可能与网络格式有关,或者只是 Evan 懒惰。