IntellIJ Elixir v4.2.0 released

Thanks

  • Thanks to Filip Haglund (@drathier) and Andrei Dziahel (@develop7) for reporting reproduction cases for map update arguments not working with isVariable
  • Thanks Gerard de Brieder (@smeevil) for testing the canary build and finding the the do end completion mistakenly completed do: end.
  • Andrei Dziahel (@develop7) for find a working reproduction that Go To Symbol broke when trying to display def in the else of an if with Plug.Endpoint.
  • Nima Shariatian @nimashariatian for requesting I add the delimiter auto-insertion and matching.
  • Thanks to Jorg Heymans (@jorgheymans), Andrew Phillipo @aphillipo, and Filip Haglund (@drathier) on their input on the usability issues with the doc template and the need for @doc.

Changelog

v4.2.0

Enhancements

  • #371 - @KronicDeth
    • BraceMatcher
      • Matches the following pairs:
        • do to end
        • fn to end
        • """ to """
        • ''' to '''
        • << to >>
        • < to >
        • [ to ]
        • { to }
        • ( to )
      • Completes the following pairs:
        • [ with ]
        • { with }
        • ( with )
    • QuoteHandler completes standard quotes (that start with " or ')
      • ' with '
      • " with "
      • ''' with '''
      • """ with """
    • TypedHandler completes the non-standard quotes and braces
      • do with end
      • fn with end
      • <<with>>`
      • < with > (for promoters)
      • / with / (for promoters)
      • | with | (for promoters)

Bug Fixes

  • #372 - Check parent for isVariable(ElixirMapUpdateArguments) - @KronicDeth
  • #374 - @KronicDeth
    • IntelliJ 15.0.4 is no longer available from JetBrains, so if the cache is not available, the builds don’t work, so use 15.0.6, which is available in 15.0.4’s place as the test version for 15.X.
    • IntelliJ 2016.2 is no longer available from JetBrains, so if the cache is not available, the builds don’t work, so use 2016.2, which is available in 2016.1’s places at the test version for 2016.X.
  • #378 - enclosingMacroCall could climb out the stab after a do, but not the else in an if, which is used for defined functions conditionally in Phoenix.Endpoint.server/0 - @KronicDeth
  • #380 - A lot of ppl use the doc template after already typing @, but the doc template starts with @, so it ends up inserting @@doc .... The @doc template is the same code, but since the name starts with @, it doesn’t insert a second @. Unfortunately, the template search code doesn’t prompt when just typing @, so you end up having to type @doc before only one template is selected. The @doc template will show in the lookup as soon as @d is typed, but you have to select it from the list then before tabbing to accept. - @KronicDeth
  • #381 - Look at end of do instead of start for end completion to stop ignoring the : in do:, when caret - 3 would land on the o, now all tests are meant to land on the o, so do: won’t complete with end incorrectly anymore. - @KronicDeth
  • #382 - Ignore ElixirVariable in highlightTypesAndTypeParameterUsages - @KronicDeth

README Updates

Delimiters

Auto-inserting

The right-delimiter will be automatically inserted when the left
delimiter is typed. In some cases, to prevent false positives, the
the delimiter is only completed if when used for sigils.

Preceded By Left Right
do end
fn end
[ ]
{ }
( )
' '
''' '''
" "
""" """
<< >>
~<sigil-name> < >
~<sigil-name> / /
~<sigil-name> | |

Matching

All delimiters that are auto-inserted are also matched for highlighting

Left Right
do end
fn end
[ ]
{ }
( )
' '
''' '''
" "
""" """
<< >>
< >
/ /
| |

Installation

Inside IDE using JetBrains repository

  1. Preferences
  2. Plugins
  3. Browse Repositories
  4. Select Elixir
  5. Install plugin
  6. Apply
  7. Restart the IDE

Inside IDE using Github releases

In browser

  1. Go to releases.
  2. Download the lastest zip.

In IDE

  1. Preferences
  2. Plugins
  3. Install plugin from disk…
  4. Select the downloaded zip.
  5. Apply
  6. Restart the IDE.
3 Likes