intellij-elixir

Elixir plugin for JetBrain's IntelliJ Platform (including Rubymine)

OTHER License

Stars
1.8K
Committers
55

Bot releases are hidden (Show)

intellij-elixir - https://github.com/KronicDeth/intellij-elixir/releases/tag/v10.4.0-pre+20190323153348

Published by KronicDeth over 5 years ago

intellij-elixir - https://github.com/KronicDeth/intellij-elixir/releases/tag/v10.4.0-pre+20190318004053

Published by KronicDeth over 5 years ago

intellij-elixir - https://github.com/KronicDeth/intellij-elixir/releases/tag/v10.4.0-pre+20190317214935

Published by KronicDeth over 5 years ago

intellij-elixir - v10.3.0

Published by KronicDeth over 5 years ago

Thanks

  • For reporting that they expect types to show up.
  • For reporting performance issues
  • For including thread dumps when reporting performance issues

Changelog

v10.3.0

Enhancements

Bug Fixes

  • #1408 - @KronicDeth
    • Cache all computed Elixir levels at the file, module, project, and SDK levels. The computed Elixir level is used to determine how to emulate the various grammar changes made for the different Elixir versions. This bug was potentially introduced as earlier asv7.0.0 (2017-12-15) and as late as v7.5.0 (2018-06-03) as that's the history for LevelPropertyPusher.java and has affected all later versions. If you ever experienced the 6.X series as faster than the 7.X series and later, this bug may be why and you should upgrade/reinstall immediately.

README Changes

Features

.beam Files

BEAM Chunks

Dbgi
Tab

####### Elixir (:elixir_erl backend)
######## Type Specifications

The Type Specifications tab is split between a tree of the Module, Module Attribute, and type specifications.

Tree.png

Clicking on a type specification will show only that type specification, but clicking on a higher in the tree will show all type specifications for the same module attribute or the entire Module.

Callback.png
Callbacks.png
Optional Callback.png
Optional Callbacks.png
Spec.png
Specs.png
Type.png
Types.png
Module.png

intellij-elixir - https://github.com/KronicDeth/intellij-elixir/releases/tag/v10.2.0-pre+20190307192515

Published by KronicDeth over 5 years ago

intellij-elixir - https://github.com/KronicDeth/intellij-elixir/releases/tag/v10.2.0-pre+20190301142557

Published by KronicDeth over 5 years ago

intellij-elixir - v10.2.0

Published by KronicDeth almost 6 years ago

Thanks

Changelog

v10.2.0

Enhancements

  • #1353 - @KronicDeth
    • Improve support for umbrella projects in Small IDEs like Rubymine by creating a separate module for each mix.exs when opening a directory (DirectoryConfigurator). This matches the pre-existing support in Rich IDEs (IntelliJ Community & Ultimate Edition) when using Import From External Model and Quick Import when opening a directory.
    • Ignore assets directory when looking for mix.exs files for Import From External Model, Quick Import and Directory Configurator.
  • #1355 - @KronicDeth
    • Update Build Matrix
      • Add 2018.3.
        • Update gradlew to 5.0.
        • Update org.jetbrains.intellij to 0.3.12.
        • Update org.jetbrains.kotlin.kvm to 1.3.10.
          • Update Kotlin apiVerision to 1.3.
        • Update de.undercouch.download to 3.4.3.
        • Don't configure Kotlin in projects that don't use it.
      • Remove 2017.3 to keep version count at 3.

Bug Fixes

  • #1355 - Prevent ConcurrentModificationExceptions when updating gradle by using allprojects less. - @KronicDeth
  • #1359 - @KronicDeth
    • Remove unused variables in Elixir debugger server.
    • Protect from AssertionError when VirtualFileCache is disposed.
  • #1360 - Protect from AssertionError when VirtualFilePointerContainer is disposed. - @KronicDeth
  • #1364 - Use :path for deps for paths external to project. Unfortunately, even though they show up in the Project Structure, only ebin directories are shown as it is restricted to those marked as CLASSES and the :path lib is a SOURCES. - @KronicDeth
  • #1367 - Ignore :tag when finding path to dep. - @KronicDeth
  • #1368 - No longer use the forked version of TerminalExecutionConsole as 2018.3's version doesn't have the text echoing behavior that was being bypassed before. - @KronicDeth
  • #1372 - Ignore :ref when finding path to dep. - @KronicDeth
intellij-elixir - https://github.com/KronicDeth/intellij-elixir/releases/tag/v10.2.0-pre+20181221211012

Published by KronicDeth almost 6 years ago

intellij-elixir - https://github.com/KronicDeth/intellij-elixir/releases/tag/v10.2.0-pre+20181220020236

Published by KronicDeth almost 6 years ago

intellij-elixir - https://github.com/KronicDeth/intellij-elixir/releases/tag/v10.2.0-pre+20181219035624

Published by KronicDeth almost 6 years ago

intellij-elixir - https://github.com/KronicDeth/intellij-elixir/releases/tag/v10.2.0-pre+20181217042655

Published by KronicDeth almost 6 years ago

intellij-elixir - https://github.com/KronicDeth/intellij-elixir/releases/tag/v10.2.0-pre+20181214014006

Published by KronicDeth almost 6 years ago

intellij-elixir - https://github.com/KronicDeth/intellij-elixir/releases/tag/v10.2.0-pre+20181213035528

Published by KronicDeth almost 6 years ago

intellij-elixir - https://github.com/KronicDeth/intellij-elixir/releases/tag/v10.2.0-pre+20181211035902

Published by KronicDeth almost 6 years ago

intellij-elixir - v10.1.0

Published by KronicDeth almost 6 years ago

Thanks

  • For reporting that packgePsiFileToDepSet needed to be wrapped in a read action
  • For requesting ExUnit Test New File template
  • For reporting that defmodule one-liner in IEx autocomplete test was being treated as a call definition head in the GoToSymbolContributor.
  • For opening a PR to fix deadlinks in the README that led me to auditing all the links in the README and fixing image links that were stale.

Changelog

v10.1.0

Enhancements

  • #1330 - @KronicDeth
    • Add IntelliJ Elixir Help to Help menu that opens link in browser using plugin version to link to README.md on GitHub.

      screen shot 2018-11-02 at 12 06 52 pm

      The link will work on released versions that have a tag.

  • #1334 - @KronicDeth
    • Allow creating ExUnit.Case modules from template. Template contains
      • use ExUnit.Case
      • alias of the source module
      • @moduletag :capture_log
      • doctest
      • test that checks that the source module exists.
    • Convert CreateElixirModuleAction to Kotlin.
    • Drop "Elixir" prefix from templates name in Elixir File dialog since you already know you're creating an Elixir File.

Bug Fixes

  • #1327 - Fix deadlinks to Run Configurations, which broke when section was renamed Run/Debug Configurations and auto-anchor changed name. - @KronicDeth
  • #1328 - Fix image links in README. - @KronicDeth
  • #1331 - Ensure defmodule one-liner isn't mistaken for call definition head in Go To Symbol. - @KronicDeth

README Updates

Fixed image layout and stale links.

intellij-elixir - https://github.com/KronicDeth/intellij-elixir/releases/tag/v10.0.1-pre+20181031235825

Published by KronicDeth almost 6 years ago

intellij-elixir - v10.0.1

Published by KronicDeth almost 6 years ago

Thanks

  • For reporting that real-world code may produce 10 names for one element.

Changelog

v10.0.1

Bug Fixes

  • #1322 - @KronicDeth
    • Eliminate freezes when calculating Module and Library dependencies during project import and dependency updates.
      • Run library syncing in tasks: When importing projects, run sync as a modal task while when VirtualFileSystem events occur, run sync as background tasks. Either style of task is cancellable and importantly, it allows to show what is happening during the syncing. This converts the unresponsive UI beachball on macOS during import to an updating progress bar.
      • Calculate dep sets iteratively with a work queue instead of recursively to limit the calculation of dep set for a root to 1 time. Then use normal transitive walk to get complete dep set for module. Vastly speeds up project import.
      • Cache dep set on package PsiFile to allow faster refreshes when indirect dependencies don't change.
  • #1323 - @KronicDeth
    • Log nameSet when it reaches suspect size (10) to allow triaging if it is a real bug or just something with a lot of valid names.
    • Fix inverted condition around when to warn and when to error and use readAheadLength.
intellij-elixir - https://github.com/KronicDeth/intellij-elixir/releases/tag/v10.0.1-pre+20181029224200

Published by KronicDeth almost 6 years ago

intellij-elixir - v10.0.0

Published by KronicDeth almost 6 years ago

Thanks

  • For reporting the new for a runWriteAction when adding new JDKs in Small IDES
  • For reporting that a modular element could become invalid during completion and not have a valid containing file.
  • For reporting that :crypto wasn't in the default module filters even though its NIFs can't be interpreted.
  • For reporting that the redefinition of defmodule in distillery broke the GoTo Symbol contributor.
  • For reporting "Test framework quit unexpectedly" being reported instead of showing the compilation errors during tests, which turned out to be a deprecation in OpenAPI and a change in ExUnit output in Elixir 1.7 I missed.
  • For reporting that Elixir was bigger than Erlang, or at least the icons in IntelliJ 2018.3 EAP :trollface:.
  • For reporting poor error message when removing module filters
  • For reporting that I can't make the fact that there is no use call a cache dependency
  • For reporting that completion with nested modules was broken
  • For reporting that alias __MODULE__, as: Mod did not work for resolving references through Mod.

Changelog

v10.0.0

Enhancements

  • #1272 - @KronicDeth
    • Go To Symbol and completion will only resolve in project source unless non-project sources are turned on.
      • deps are properly marked as Libraries and no longer count as being in the project scope for the Go To tools.
      • In umbrella projects, when in_umbrella is used, the Project Module for each apps/#{APP_NAME} will be marked a dependency,
      • Library and Modules are properly connected as dependencies, so that only declared dependencies will resolve, lessening false completions and declarations when different OTP app share common Module or function names.
    • deps and the _build/#{MIX_ENV}/lib/#{DEP_NAME} will be marked as Excluded, so that Libraries appear in External Libraries at the bottom of the Project Pane.
  • #1275 - @KronicDeth
    • Go To Class action (Cmd+O) to go to modules separately from all functions as would happen with Go To Symbols (Alt+Cmd+O).
      • New ModuleName index keeps track of only the names of modulars:

        • defmodule
        • defimpl
        • defprotocol

        It is used to power gotoClassContributor for Go To Class action.

  • #1280 - Handle commit and override for Mix.Dep. - @KronicDeth
  • #1283 - Add .eex to .ex and .exs for accepted file extensions used to hyperlink files in stacktraces. - @KronicDeth
  • #1285 - @KronicDeth
    • Resolve unaliased name when using alias __MODULE__, as: Mod
    • Resolve usage of Mod in alias __MODULE__, as Mod
      1. Mod
      2. __MODULE__ in alias __MODULE__
      3. defmodule MyModule that is enclosing __MODULE__.
    • Disable ProcessCanceledException for runIde gradle task, to allow for easier manual testing of completion and Go To actions during development.
    • Completion of functions in current module when using Mod. after alias __MODULE__, as: Mod.
    • Show more context for alias calls in presentations, like "Choose Declaration" pop up for Go To Declaration.
      • Show resolved __MODULE__ name (alias MyModule) when using alias __MODULE__.
      • Show full alias MyModule, as: Mod when listing Mod in alias __MODULE__, as Mod.
  • #1293 - @KronicDeth
    • Exclude common directories when importing projects
      • cover for test coverage
      • doc for ex_doc
      • logs for log files
      • assets/node_modules/phoenix for phoenix
      • assets/node_modules/phoenix_html for phoenix_html
    • Setup Libraries and Module dependencies when importing projects from Mix.
  • #1299 - Regression test for #1270. - @KronicDeth
  • #1313 - @KronicDeth
    • Update gradle wrapper to 3.5 to allow for environment variable overrides
    • Setup datetime based pre-release versioning to ensure that correct version of pre-release plugin is used when testing Install Plugin From Disk.
  • #1318 - @KronicDeth

Bug Fixes

  • #1277 - Don't include null useCall as __MODULE__ dependency. - @KronicDeth
  • #1279 - @KronicDeth
    • Wrap LibraryTable#removeLibrary in write action.
    • Wrap Library#modifiableModule#commit in write action.
  • #1282 - Check if Mix.Dep has already been seen to prevent recursive loops. - @KronicDeth
  • #1287 - @KronicDeth
    • More closely match ExUnit.CliFormatter output in Test Runner.
      • Don't inspect ExUnit failure reason as ##teamcity message.
      • Add captured logs to failure
      • Colorize test failures - including diff colorization
    • .formatter.exs input globs would not match file paths because it was default that needed lib on top and not version-dependent paths used in resources/exunit.
  • #1291 - @KronicDeth
    • Ignore branch and hex options when finding path of Mix.Dep
    • Map Elixir 1.7 :excluded and :skipped (added in elixir-lang/elixir#7245) to testIgnored teamcity message, thereby restoring ignored test counts and markers from Elixir 1.6.
  • #1293 - @KronicDeth
    • When the entire deps directory has updated sync the children deps directories and then sync all modules instead of syncing them after each dep.
    • For an unknown reason, when sync occurs at initComponent time in DepsWatcher or mix.Watcher, the child directories of the project basedDir aren't shown in the Project Pane until a change is applied in Project Structure.
    • Use invokeAndWait instead of invokeLater to ensure order of syncs.
  • #1299 - When finding a defmodule, check that it is an ancestor of the entrance of the ResolveState, so that nested sibling modules are not scanned for potential call definition clauses, but only the outer module of the entrance. - @KronicDeth
  • #1300 - Improve error message for org.elixir_lang.debugger.settings.stepping.module_filter.editor.table.Model.getValueAt, so we can detect if there is an off-by-1 error. - @KronicDeth
  • #1304 - Remove @2x and @3x SVG icons that render wrong size in 2018.3 EAP. - @KronicDeth
  • #1305 - @KronicDeth
    • Fix unused variables in TeamCityExUnitFormatting
      • reason was completely unused.
      • details should have been used.
  • #1306 - @KronicDeth
    • flushBufferBeforeTerminating was deprecated and in newer IntelliJ the call to processStatuses does not occur unless flushBufferOnProcessTermination is also overridden.
    • Treat == Compilation error in STDOUT as ERROR for ExUnit reporter
    • Convert (CompileError) of a test file to test failure. The "Test framework quit unexpectedly" is converted to a failed run with a single test with the compilation error as the failure message.
  • #1308 - @KronicDeth
    • Don't treat redefinition of defmodule macro as module definition (as occurs in @bitwalker's distillery's Mix.Tasks.Release.Init.MixMock
      • Bump AllName VERSION to re-index and drop bad call definition head from #1301.
  • #1310 - Don't log compilation errors as test failures unless a test has started. Test name being called mix test does not work, so log those compilation errors as normal build messages instead. - @KronicDeth
  • #1311 - Don't interpret :crypto by default: :crypto includes NIFs that can't be reloaded and so kills the debugger. - @KronicDeth
  • #1312 - Protect from null containingFile for modular names during completion. - @KronicDeth
  • #1313 - Wrap syncPublisher(JDK_TABLE_TOPIC) in invokeLater runWriteAction. - @KronicDeth

Incompatible Changes

  • #1272 - @KronicDeth
    • Dependencies are now counted as external to the project, so the Go To tools, like Go To Symbol will no longer include matches for both project sources and dependencies sources together, instead they will follow the more JetBrains native behavior
      • Project sources will be shown by default
      • If there are no project matches, dependencies will be shown instead.
      • If you want to include dependency (non-project) matches, you can check the box or hit Cmd+O.
  • #1293 - Modules and Libraries won't be automatically setup when a project or module is opened, but instead only when apps or deps directories or subdirectories change. - @KronicDeth

README Updates

Installation

Canary releases

Builds on master will produce pre-release builds of format NEXT_VERSION-pre+YYYYMMDDHHMMSS.

Inside IDE using JetBrains repository

You will need to add the canary repository once to your IDE:

  1. Preferences
  2. Plugins
  3. Browse Repositories
  4. Manage Repositories
  5. Click +
  6. Enter the IntelliJ Elixir canary URL: https://plugins.jetbrains.com/plugins/list?channel=canary&pluginId=7522
  7. Click OK
  8. Click OK to close the Custom Plugin Repositories dialog.

With the canary repository setup:

  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 latest pre-release zip.
In IDE
  1. Preferences
  2. Plugins
  3. Install plugin from disk...
  4. Select the downloaded zip.
  5. Apply
  6. Restart the IDE.
intellij-elixir - https://github.com/KronicDeth/intellij-elixir/releases/tag/v10.0.0-pre+20181026005139

Published by KronicDeth almost 6 years ago