# ElmLS 2.0.0 is out!

**URL:** <https://discourse.elm-lang.org/t/elmls-2-0-0-is-out/6777>\
**Category:** Show and Tell\
**Created:** [January 18, 2021, 7:40pm UTC](https://discourse.elm-lang.org/t/elmls-2-0-0-is-out/6777 "2021-01-18T19:40:14Z")\
**Posts on this page:** 18\
**Page:** 1

<div class="post-metadata">

**Author:** ![razze](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.elm-lang.org/razze/32/1650_2.png) [@razze](https://discourse.elm-lang.org/u/razze)\
**Post date:** [January 18, 2021, 7:40pm UTC](https://discourse.elm-lang.org/t/elmls-2-0-0-is-out/6777/1 "2021-01-18T19:40:14Z")

</div>

New versions of the server and the vscode extensions are out, welcome to version 2.0.0.

It’s a very big release, so read the changelog below and ask questions. Here’s the complete diff [https://github.com/elm-tooling/elm-language-server/compare/1.13.2...master](https://github.com/elm-tooling/elm-language-server/compare/1.13.2...master)

The most obvious behavior changes, will probably be, that we try to report errors whenever you type and only run `elm make` when you save a file. Followed by that elm-analyse has been removed and replaced by our own linter.

## 2.0.0

### Features

- Enabled type checking diagnostics that update on document change. These include parsing errors, type mismatch errors, value not found errors, etc

- Support file events APIs (Previously VSCode only)

- A new “extract function” code action. Select a complete expression and it can be extracted to a function in the top level or the enclosing let expression (if there is one)

- A new “install package” code action. When you try to import a module that is not installed, a code action will offer to install it. (we only check your local elm cache for possible packages and there is a setting to control skipping confirmation)

- Replaced elm-analyse with our own diagnostics, there might be missing rules for you due to this

- Show inferred type information on hovers

- Support linked editing ranges. When editing a function name, the type annotation name will auto rename, or vice versa (needs to be enabled in most clients)

- Watch elm.json for changes. The server will restart when a change is detected

- Run elm make on server init

- Improve record completions

- Ports now have codeLenses, can find references and have correct types on mouseover

### Bug Fixes

- Greatly improve performance of diagnostics and type inference
- Fix some type inference cases
- Fix module resolution to be more like how the compiler resolves modules
- Fix some incorrect unused value diagnostics
- Fix how errors from third party binaries are shown
- Fixed test dependencies being available in non test modules

### Other Changes

- Update package rankings
- Update our parser

We had contributions from @jmbockhorst, @dmy, @lydell and myself this iteration.

Please consider sponsoring our work on this and other projects:

- [Sponsor @jmbockhorst on GitHub Sponsors · GitHub](https://github.com/sponsors/jmbockhorst/)
- [Sponsor @Razzeee on GitHub Sponsors · GitHub](https://github.com/sponsors/Razzeee/)

If you find any bugs or have ideas for new features, feel free as always to create an issue on GitHub.

[https://marketplace.visualstudio.com/items?itemName=Elmtooling.elm-ls-vscode](https://marketplace.visualstudio.com/items?itemName=Elmtooling.elm-ls-vscode)

---

<div class="post-metadata">

**Author:** ![Atlewee](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.elm-lang.org/atlewee/32/4603_2.png) [@Atlewee](https://discourse.elm-lang.org/u/Atlewee)\
**Post date:** [January 18, 2021, 7:42pm UTC](https://discourse.elm-lang.org/t/elmls-2-0-0-is-out/6777/2 "2021-01-18T19:42:10Z")

</div>

Nice! Looking forward to test it out tomorrow 🙂

---

<div class="post-metadata">

**Author:** ![jfmengels](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.elm-lang.org/jfmengels/32/3124_2.png) [@jfmengels](https://discourse.elm-lang.org/u/jfmengels)\
**Post date:** [January 18, 2021, 8:03pm UTC](https://discourse.elm-lang.org/t/elmls-2-0-0-is-out/6777/3 "2021-01-18T20:03:20Z")

</div>

That all sounds amazing 👍

A question on the major version: Should people expect breaking changes in a way? Is the removal of `elm-analyse` the only possible breaking change? Or is it more of a major version because it reached a level of features/stability which you are happy with?

---

<div class="post-metadata">

**Author:** ![paulh](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.elm-lang.org/paulh/32/5022_2.png) [@paulh](https://discourse.elm-lang.org/u/paulh)\
**Post date:** [January 18, 2021, 9:17pm UTC](https://discourse.elm-lang.org/t/elmls-2-0-0-is-out/6777/4 "2021-01-18T21:17:52Z")

</div>

Thanks, upgraded and immediately got 78 problems in the current project 🤣 - but they were from your linter so all good. (I hadn’t run `elm-analyse` after a big refactor).

Maybe I wasn’t set up correctly with 1.5.3, but I previously had to run `elm-analyse` from the terminal in `vscode`, whereas in 2.0.0 your linter picks up issues instantly with no config required which is great.

👍

---

<div class="post-metadata">

**Author:** ![razze](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.elm-lang.org/razze/32/1650_2.png) [@razze](https://discourse.elm-lang.org/u/razze)\
**Post date:** [January 19, 2021, 12:13am UTC](https://discourse.elm-lang.org/t/elmls-2-0-0-is-out/6777/5 "2021-01-19T00:13:43Z")

</div>

> [@jfmengels](#):
>
> A question on the major version: Should people expect breaking changes in a way? Is the removal of `elm-analyse` the only possible breaking change? Or is it more of a major version because it reached a level of features/stability which you are happy with?

It’s just a big changelog and kind of a paradigm shift, as we run checks on typing now. So it’s type, see if we complain → move on. Previously you had to save after each change, to see errors. You will need to do that now too, but it should be far less and hopefully we can phase it out completly.  
And yes, we choose not to migrate some of the elm-analyse rules for now.

> [@paulh](#):
>
> Maybe I wasn’t set up correctly with 1.5.3, but I previously had to run `elm-analyse` from the terminal in `vscode` , whereas in 2.0.0 your linter picks up issues instantly with no config required which is great.

We had to make elm-analyse opt in at one point, as it was too slow. Especially on bigger projects.

---

<div class="post-metadata">

**Author:** ![Atlewee](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.elm-lang.org/atlewee/32/4603_2.png) [@Atlewee](https://discourse.elm-lang.org/u/Atlewee)\
**Post date:** [January 19, 2021, 4:33pm UTC](https://discourse.elm-lang.org/t/elmls-2-0-0-is-out/6777/6 "2021-01-19T16:33:59Z")

</div>

2.0.0 is amazing! I really like that I see my errors while typing instead of seeing it on save! 🙂

---

<div class="post-metadata">

**Author:** ![gyzerok](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.elm-lang.org/gyzerok/32/898_2.png) [@gyzerok](https://discourse.elm-lang.org/u/gyzerok)\
**Post date:** [January 20, 2021, 6:41am UTC](https://discourse.elm-lang.org/t/elmls-2-0-0-is-out/6777/7 "2021-01-20T06:41:19Z")

</div>

Even though I am not using Elm anymore, its always amazing to see your progress.

Your language server is a living proof that sometimes you need to just start doing things instead of eternally questioning “is this the right way?”

---

<div class="post-metadata">

**Author:** ![eimfach](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.elm-lang.org/eimfach/32/3247_2.png) [@eimfach](https://discourse.elm-lang.org/u/eimfach)\
**Post date:** [January 20, 2021, 9:33am UTC](https://discourse.elm-lang.org/t/elmls-2-0-0-is-out/6777/8 "2021-01-20T09:33:10Z")

</div>

Always awesome when a new update arrives 🙂

---

<div class="post-metadata">

**Author:** ![Laurent](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.elm-lang.org/laurent/32/2051_2.png) [@Laurent](https://discourse.elm-lang.org/u/Laurent)\
**Post date:** [January 20, 2021, 1:23pm UTC](https://discourse.elm-lang.org/t/elmls-2-0-0-is-out/6777/9 "2021-01-20T13:23:59Z")

</div>

Is there a way to configure ElmLS diagnostics? Is my `elm-analyse.json` file useless now?

---

<div class="post-metadata">

**Author:** ![razze](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.elm-lang.org/razze/32/1650_2.png) [@razze](https://discourse.elm-lang.org/u/razze)\
**Post date:** [January 20, 2021, 6:02pm UTC](https://discourse.elm-lang.org/t/elmls-2-0-0-is-out/6777/10 "2021-01-20T18:02:42Z")

</div>

No, should still pick up your elm-analyse.json - but there are some rules we thought are not worth to port. See [elm-language-server/elmLsDiagnostics.ts at 4f8634f43db0ab879abdb39f13e2268c219743de · elm-tooling/elm-language-server · GitHub](https://github.com/elm-tooling/elm-language-server/blob/4f8634f43db0ab879abdb39f13e2268c219743de/src/providers/diagnostics/elmLsDiagnostics.ts#L26) and let us know, if there are rules that you think are valuable, that we missed.

---

<div class="post-metadata">

**Author:** ![Laurent](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.elm-lang.org/laurent/32/2051_2.png) [@Laurent](https://discourse.elm-lang.org/u/Laurent)\
**Post date:** [January 21, 2021, 8:46am UTC](https://discourse.elm-lang.org/t/elmls-2-0-0-is-out/6777/11 "2021-01-21T08:46:07Z")

</div>

Awesome. As long as `excludedPaths` is supported, I’m fine 😁

---

<div class="post-metadata">

**Author:** ![razze](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.elm-lang.org/razze/32/1650_2.png) [@razze](https://discourse.elm-lang.org/u/razze)\
**Post date:** [January 23, 2021, 1:06am UTC](https://discourse.elm-lang.org/t/elmls-2-0-0-is-out/6777/12 "2021-01-23T01:06:08Z")

</div>

Pushed a hotfix:

## 2.0.1

- Fix elm package install command

- Updated language server

---

<div class="post-metadata">

**Author:** ![Laurent](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.elm-lang.org/laurent/32/2051_2.png) [@Laurent](https://discourse.elm-lang.org/u/Laurent)\
**Post date:** [January 24, 2021, 10:18pm UTC](https://discourse.elm-lang.org/t/elmls-2-0-0-is-out/6777/13 "2021-01-24T22:18:30Z")

</div>

> [@razze](#):
>
> - Remove `file` entry from symbolproviders (Outline, Go to symbol and breadcrumbs)

Thank you for that, I find the outline view experience to be much better now 👍

---

<div class="post-metadata">

**Author:** ![jweir](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.elm-lang.org/jweir/32/447_2.png) [@jweir](https://discourse.elm-lang.org/u/jweir)\
**Post date:** [January 25, 2021, 10:34pm UTC](https://discourse.elm-lang.org/t/elmls-2-0-0-is-out/6777/14 "2021-01-25T22:34:43Z")

</div>

After upgrading, anyone having problems with Vim and Ale?

I am see parsing errors on Elm code that is correct. I will open a Github issue, unless there is something know about Vim/Ale – perhaps I got the setup wrong. Although I did try a clean Vim setup.

---

<div class="post-metadata">

**Author:** ![jweir](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.elm-lang.org/jweir/32/447_2.png) [@jweir](https://discourse.elm-lang.org/u/jweir)\
**Post date:** [January 25, 2021, 10:56pm UTC](https://discourse.elm-lang.org/t/elmls-2-0-0-is-out/6777/15 "2021-01-25T22:56:49Z")

</div>

What I have discovered is running `:ALEReset` will fix the issues and then display the expected warnings or errors.

---

<div class="post-metadata">

**Author:** ![razze](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.elm-lang.org/razze/32/1650_2.png) [@razze](https://discourse.elm-lang.org/u/razze)\
**Post date:** [February 1, 2021, 11:03am UTC](https://discourse.elm-lang.org/t/elmls-2-0-0-is-out/6777/16 "2021-02-01T11:03:03Z")

</div>

Pushed some more hotfixes, likely more to come:

- Updated language server
  - Updated dependency, so that Apple M1 based laptops should work
  - Improve unused import diagnostics
  - Fix the `disableElmLSDiagnostics` setting not working
  - Don’t crash if server fails to initialize
  - Fix wrong display of fix record diff
  - Handle kernel code usages better
  - More type checker improvements

---

<div class="post-metadata">

**Author:** ![razze](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.elm-lang.org/razze/32/1650_2.png) [@razze](https://discourse.elm-lang.org/u/razze)\
**Post date:** [February 9, 2021, 7:30pm UTC](https://discourse.elm-lang.org/t/elmls-2-0-0-is-out/6777/17 "2021-02-09T19:30:16Z")

</div>

Next round of fixes:

- Updated language server
  - Add setting to disable diagnostics on change
  - Improve performance of unused diagnostic
  - Improve completions
  - Fix problem with type inference caching

---

<div class="post-metadata">

**Author:** ![system](https://canada1.discourse-cdn.com/flex035/uploads/elm_lang/original/1X/50a05e53677a2c3b47776d7abd0f113eb50193a1.png) [@system](https://discourse.elm-lang.org/u/system)\
**Post date:** [February 19, 2021, 7:30pm UTC](https://discourse.elm-lang.org/t/elmls-2-0-0-is-out/6777/18 "2021-02-19T19:30:47Z")

</div>

This topic was automatically closed 10 days after the last reply. New replies are no longer allowed.
