intellij-elm

Elm plugin for IntelliJ Platform IDEs

MIT License

Stars
392
Committers
23

Bot releases are visible (Hide)

intellij-elm - Version 3.4.3

Published by klazuka about 5 years ago

  • Fixed several cache invalidation bugs (#516)
  • Parser performance improvements in deeply nested functions (#506)
  • Improved type checking of case expressions (#512)
intellij-elm - Version 3.4.2

Published by klazuka about 5 years ago

Bugfixes

  • Fix ConcurrentModificationException (#507)
  • Fix false positives for some unused record fields (#504)
  • Improve type checking of recursive functions (#500)
  • Improve type checking of destructured record fields (#505)

Thanks @ajalt!

intellij-elm - Version 3.4.1

Published by klazuka about 5 years ago

Bugfix release:

  • fixed various bugs related to record field rename (#477, #478, #484)
  • fixed a bug in Elm 0.18 projects related to elm-stuff directory (#481)
intellij-elm - Version 3.4.0

Published by klazuka about 5 years ago

This is a massive release thanks to @ajalt's contributions! 💯 🏅 🎉

Record Fields

The ability to rename record fields and find their usages has been something I've wanted from an Elm plugin for a long time. But implementing it correctly is difficult due to how record types work (particularly, the "anonymous" nature of records without a type alias and difficulties when functions do not have type annotations). @ajalt figured out a way to make it work in nearly all cases by integrating it with the type inference code. Well done!

Generate JSON Encoders and Decoders

In addition to the improvements in record field support, AJ also added an intention to generate JSON encoders and decoders from type annotations based on the types and functions available in your project. You can use it by writing a type annotation for your encoder (or decoder), e.g. encodePerson : Person -> Json.Encode.Value and then press option-enter (alt-enter on Windows/Linux) and choose "Generate".

This will recursively generate top-level functions to encode/decode the type. If the type uses another type that we don't know how to decode (e.g. your custom UUID type), we will search your project for an existing function that encodes/decodes that type, import it, and use it.


There were a lot of other changes in this release, so please checkout the full changelog below:

New

  • Added record field 'rename refactoring' (#459)
  • Added go-to-declaration and find usages for record fields (#459)
  • Added intention to generate JSON encoders and decoders (#454)
  • Added intention to qualify an unresolved ref with its module name (#465)
  • Added a gutter line marker for recursive functions (#452)
  • Added quick fix to rename unused patterns to _ (#463)
  • Added ability to suppress inspection with a comment (#466)

Improved

  • Improved type checker errors for case branches (#461)
  • Improved performance in very large projects (#467)

Fixed

  • Fixed a bug when generating type annotations (#457)
intellij-elm - Version 3.3.0

Published by klazuka about 5 years ago

New Features

  • Added "introduce variable" refactoring (#420)
  • Added "unused alias" inspection (#441 by @ajalt)

Improvements

  • Record type errors now show mismatched fields (#438 by @ajalt)
  • Better syntax highlighting (#446 by @ajalt)

Fixes

  • Fix example for add type annotation inspection (#435 by @MartinSStewart)
  • Improve sorting of menus in import and case branch inspections (#440 by @ajalt)
  • Fix Pico container exception in Intellij 2019.2 (#448)
  • Query elm --version on a background thread and cache it (#449)
intellij-elm - Version 3.2.1

Published by klazuka over 5 years ago

  • Fixed a bug in 2019.2 EAP related to the Elm Settings UI
  • Improved logic for locating packages in Elm's global package cache
intellij-elm - Version 3.2.0

Published by klazuka over 5 years ago

@ajalt deserves all of the credit for this release. Nice work!

  • Added an intention that generates a type annotation for un-annotated functions (#417)
  • Significantly reduced memory usage in large projects (#422)
  • Improved handling of nested let functions (#413 and #416)
intellij-elm - Version 3.1.2

Published by klazuka over 5 years ago

A big thanks to AJ for contributing some type system fixes in this release.

  • Fixed type inference bugs (#394 by @ajalt)
  • Fixed named suffixes on special type vars: number, comparable, etc. (#404 by @ajalt)
intellij-elm - Version 3.1.1

Published by klazuka over 5 years ago

Thanks to @ajalt's dedicated and skillful work, the final piece in the plugin's implementation of the Elm type system is now finished! This means that you should be able to infer the type of any expression in your Elm program and that all type errors should be detected by the plugin automatically.

Enhancements

  • Completed full-program type unification (#383 by @ajalt)
  • Elm compiler tool-window UI now shows path to file target and is scrollable (#374 by @clojj)
  • Allow elm-format to run even if there are syntax errors (#364)
  • Added reference support for type variables in annotations (#380 by @ajalt)

Bug Fixes

  • Stop treating 'alias' as a restricted keyword (#384)
  • Allow explicit imports to shadow wildcard imports (#377 by @ajalt)
intellij-elm - Version 3.1.0

Published by klazuka over 5 years ago

New Feature

Thanks to @clojj, we now provide a way to invoke the Elm compiler to check your program for errors. After upgrading to 3.1.0, there will be an "Elm Compiler" button at the bottom edge of the IntelliJ window. Open that up and then press the "build" icon to compile your current Elm project. Errors will be shown with colored markup.

new elm compiler feature

Other Fixes

  • Unannotated type variables are now inferred as vars instead of TyUnknown (#345 by @ajalt)
  • Properly invalidate nested type annotation caches (#348 by @ajalt)
  • Infer unresolved built-in types on 0.18 (#352 by @ajalt)
  • Fix as pattern binding within tuples (#359 by @ajalt)
intellij-elm - Version 3.0.1

Published by klazuka over 5 years ago

Added

  • Automatically run elm-test while you write test code (#321 by @frawa)

Fixed

  • Fixed elm-test runner on Elm 0.18 projects (#328 by @frawa )
  • Reduced false negatives in the unused code inspection (#323)
  • Fixed a parse error for arithmetic negation (#327 by @ajalt )
  • Fixed a variety of minor bugs related to elm-format (#339, #342, #343)

Other

  • Minimum IntelliJ version is now 2018.2
intellij-elm - Version 3.0.0

Published by klazuka over 5 years ago

Another huge release, this time made possible almost entirely by contributors, both new (@FloWi and @frawa) and old (@ajalt). Thank you for contributing such awesome work!

New Stuff

  • Added support for elm-format: via keybinding or automatically-on-save (#266 by @FloWi)
  • Added UI for running elm-test and viewing test results (#301 and #310 by @frawa)
  • Added support for WebGL/GLSL (#305 by @ajalt)

Bug Fixes

  • Fix plugin crash when renaming element to invalid name (#288 by @ajalt)
  • Remove reserved keywords from lexer (#300 by @ajalt)
  • Fix infinite loop in lambda call to unannotated function (#284 by @ajalt)
  • Add reference support for type variables in a declaration (#307)
  • Prompt user when adding an aliased import, even if only one candidate (#313)

More Details

elm-test

Built-in support for elm-test 😄
elm_test_runner

elm-format

You no longer need to configure an "External Tool" in IntelliJ to use elm-format. It's now built-in, along with support for automatically running elm-format whenever you save an Elm file.
elm-format

GLSL

GLSL code embedded in your Elm code now supports syntax highlighting and code completion:
elm_glsl

intellij-elm - Version 2.2.4

Published by klazuka over 5 years ago

The big news in this release is that, thanks to the amazing work of @ajalt, the type system is now much closer to being fully implemented (#254). Specifically, it can now infer & check the types of Elm code involving type variables (assuming that the involved functions have type annotations). Give it a try by pressing ctrl-shift-p on any Elm expression to infer its type.

Other notable changes:

  • Added support for introducing an aliased import from an unresolved qualified ref (#259)
  • Added a template for creating a new Elm project (#262)
  • Added quick docs for infix operators (#255 by @ajalt )

And lots of bug fixes

  • Allow imports and local definitions to shadow implicit imports (#280)
  • Fixed a type checker crash when calling constructor of record with no fields (#277 also by @ajalt )
  • Fixed various false positives in the type checker (#272 @ajalt you are my hero)
  • Fixed a caching bug related to unresolved refs after attaching a project (#275)
  • Fixed a crash in the lexer when the first line contains the word in (#273)
  • and more...
intellij-elm - Version 2.2.3

Published by klazuka over 5 years ago

  • Record field completion now works even in the presence of parse errors (#245)
  • Name resolution bug fixes and performance improvements (#242 and #244)
  • Bug fixes for type checker (#248 and #249)
  • Added support for exponential notation on number literals (#185)

Thanks to contributors @ajalt and @alvinlindstam for their contributions this week!

intellij-elm - Version 2.2.2

Published by klazuka over 5 years ago

  • Major performance improvements (#226, #227, #237)
  • Bug fixes for 'new Elm file' generator (#235 and #236)
  • Improvements to 'create function from type annotation' intention (#224 and #234)
intellij-elm - Version 2.2.1

Published by klazuka almost 6 years ago

New Feature

  • Add "complete current statement" support (#205)
    • press Cmd-Shift-Enter (or Ctrl-Shift-Enter on Windows/Linux) to complete the following:
    • case/of expression and branches
    • let/in expression
    • if/then/else expression
    • function declarations

Bug Fixes

  • Do not mark native/kernel module imports as unused (#222)
  • Fix false positives in unused-code inspection; refactor how "exposure" is determined (#220)
  • Fix false positive for non-exhaustive case expression (#215)
  • Fix false-positive type error with extension record parameters (#210)
  • Fix infinite loops related to recursive types by moving variant info out of TyUnion (#204)
  • Improve case branch completion (#211)

Other

Contributors

As always, thanks to @ajalt for making massive improvements to the plugin. And this week we have a new contibutor, @julianpistorius, who found and fixed a bug before it got released. Thanks!

intellij-elm - Version 2.2.0

Published by klazuka almost 6 years ago

New Features

  • Intentions for adding/removing a function/type from the exposing list (#182)
  • Add inspections for unused functions, parameters, imports, etc. (#186)
  • Add 'optimize imports' quick fix (#195)

Improvements

  • Improved "New Elm File" action (#196)
  • Performance improvements for type inference (#193)
  • Improve 'extend selection' to also grab the type annotation (#184)

Bug fixes

  • Importing and exposing a custom type variant constructor now exposes all (#183)
  • Improve name resolution for test modules and dependencies (#190)
intellij-elm - Version 2.1.1

Published by klazuka almost 6 years ago

  • Add inspection and smart-enter handler to complete case branches (#168)
  • Do code completion for functions & types even when module not imported (#156)
  • Aliased imports now hide the original module name from qualified refs (#155)
  • Improved type checking (#154, #163, #165)
intellij-elm - Version 2.1.0

Published by klazuka almost 6 years ago

  • Added code completion for accessing fields in a record (#141)
  • Performance improvements (#151)
  • Type inference improvements (#143, #133, #131)... thanks @ajalt

Other stuff

  • Extensive changes to the parser. File an issue if you encounter syntax errors that should not be an error.
intellij-elm - Version 2.0.3

Published by klazuka almost 6 years ago

no changes since 2.0.3 RC1

RC1:

  • Improved function generation from a type annotation (#123)
  • Improved type inference and added more error checking (#126 and #128)
  • Added a line marker for exposed functions/types (#127)
  • Fixed bugs related to 'test-dependencies' (#129)