Serving open street map vector tiles with elixir and phoenix Elixir Wizards: Steve Domin on Innovating Travel APIs

IntelliJ Elixir v11.9.0

Changelog

Enhancements

  • Make plugin updatable without a restart when installing from the JetBrains Marketplace. (If installing from file on GitHub you still need to restart due to a limitation in the JetBrains API.). JetBrains refers to this as a Dynamic Plugin.
    • Convert DepsWatcher from project component to project listener
    • Convert Watcher from module component to project listener
    • Make org.elixir_lang.packageManager extension point dynamic
  • Remove unnecessary assert.
  • Replace if with when
  • Include asd tool version Prevent me screwing up the quoter cache using the wrong elixir version again.
  • Update gradle project
    • gradlew 6.7.1
    • org.jetbrains.intellij 0.6.3
    • org.jetbrains.kotlin.jvm 1.3.70
    • de.undercouch.download to 4.4.1
  • Update to GitHub Environment Files
  • Update CI to Elixir 1.11.2 and Erlang 23.1
    • Quoting (for verification of correspondences between plugin and Elixir native lexer and parser.)
      • Port elixir-lang/elixir#9725
        • Indentations for sigil binaries with complex content. Makes sure the indentation metadata is added to sigils that have content with metadata already.
      • Quote charlist the same as string when used for a quoted atom
      • Port elixir-lang/elixir@e89e9d874bf803379d729a3bae185052a5323a85
      • Add sigil delimiter to metadata Ports elixir-lang/elixir#9671
        • Have 3 character delimiter for heredocs
      • Add no_parens: true metadata Port elixir-lang/elixir@8e7befb1087bd37d5acb883e21925b1c0eb0a55f
    • Remove elixir-lang parsing tests for files that don’t exist in Elixir 1.11
    • Add missing @Deprecated to match overridden method
    • Format expected and actual quoted Makes the diff not be a one-liner. so easier to spot the difference.
    • Convert Quoter to Kotlin
    • Regenerate Parser for newer GrammarParser version.
    • Port elixir-lang/elixir@1e4e05ef78b3105065f0a313bd0e1e78b2aa973e
  • Rewrote the DocumentationProvider so it no longer relies on invoking mix (which I admit was more like a hack than a real solution). This now works so quickly that it actually makes sense to show docs on mouse hover.
    • It can get the documentation from both the source code and decompiled .beam files.
  • Decompilation of documentation was implemented according to EEP-48.
  • The experience on navigating through decompiled file has also been improved a bit
    • See the @moduledoc and @docs
    • See if a function has been deprecated
    • See the original signature of the function (instead of just p0, p1, …).

Bug Fixes

  • Fix deprecation warnings for IntelliJ IDEA 2020.2
    • Replace fileTypeFactory extensions with fileType
    • Convert fileTypes to Kotlin
    • Replace uses of deprecated Project#baseDir
    • Replace uses of deprecated ContainerUtil.newHashMap
    • Replace defaultLiveTemplatesProvider with defaultLiveTemplates
    • spaceExistanceTypeBetweenTokens replaced with spaceExistenceTypeBetweenTokens
    • Replace ListCellRendererWrapper with SimpleListCellRenderer
    • Replace StdFileTypes.PLAIN_TEXT with FileTypes.PLAIN_TEXT
    • Replace LanguageSubstitutors.INSTANCE with getInstance()
    • Replace ReportMessages.ERROR_REPORT with ReportMessages.getErrorReport()
    • Replace DefaultProgramRunner with GenericProgramRunner
      • Have only one runner for all configurations in plugin since body of runner was all the same for non-debug.
    • Don’t override deprecated flushBufferBeforeTerminating()
    • Don’t override deprecated acceptsFile
    • Override initExtra(Project) instead of initExtra(Project, MessageBus, Engine)
    • Replace NamedFoldingDescriptor with FoldingDescriptor
      • Convert folding.Builder to Kotlin
    • Replace file with value for @Storage annotation
    • Replace checkBox(fieldName, title) with checkBox(title, getter, setter)
    • Replace com.intellij.util.contains.Predicate with java.util.function.Predicate
    • Replace CodeStyleSettingsManager with CodeStyle
    • Replace Comparing.equal with Objects.equals
    • Replace UsageType(String) with UsageType(Supplier)
    • Replace PluginManager with PluginManagerCore
    • Replace WakValueHashMap with createWakeValueMap
    • Don’t pass Pass to LineMarkerInfo
    • Replace newArrayListWithCapacity with ArrayList
    • Replace newIdentityHashMap with IdentityHashMap
    • Replace RefElement#element with #psiElement
    • Pass columnMargin to setupCheckboxColumn
    • Extensions.getExtensions(name) -> name.extensionList
    • Extensions.findExtension -> ExtensionPointName.findExtensionOrFail
    • Object -> Any
    • Replace choseAndSetSdk with SdkPopupFactory
  • Fix error reporting formatting
    • Fix new lines around excerpts so that code blocks quote correctly
    • Use FILE:LINE format for excerpt location, so it can be used in editors for rapid lookup.
    • Separate title from message
    • Remove use of ErrorBean
    • Pass project for LevelPropertyPusher DumbModeTask
    • Don’t use constructor injection for SetupSDKNotificationProvider
    • Don’t use AnnotationHolder::create* APIs and use AnnotationBuilder instead.
      • Convert Annotators to Kotlin
    • Use logger.error directly instead of LogMessageEx
  • Fix Atom annotator to only annotator within current element. Annotation keyword pair’s key and colon instead of annotating the keyword key and the colon outside of it.
  • Fix Macro parsing in DbgI
    • ifAccessToString I missed taking the 3rd element of the tuple to get [Access, :get] and was checking the outer tuple directly.
      • Convert beam.assembly.ParserDefinition to Kotlin
    • ifWhenToString where as should be as?
  • Suppress unused variables for TODO()s
  • Remove unnecessary Line chunk dependency on Atom chunk
  • Switch unused unsignedInt values to _ as Kotlin doesn’t support _name
  • Use key instead of environment for computeIfAbsent
  • Replace lambda with constructor reference
  • Remove unnecessary !!s
  • Replace mapIndexed with map because index is unused
  • Remove open that has no effect in object
  • Fix is overrides by converting to Kotlin
  • Remove unused Call from Implementation. and CallDefinitionClause .elementDescription(Call, ElementDescriptionLocation).
  • Don’t shadow resolveResultList in addToResolveResultList
  • Remove useless ?:
  • Remove unnecessary != null
  • Fix named argument calling by using super argument name
  • Change Float.from(ByteArray, Int) to TODO() as implementation is invalid.
  • Remove unused ModuleChooserDialog
  • Setup EncodingManager for ParsingTestCase
  • Remove redundant internal
  • Don’t highlight resolved callables along with referrers Newest annotation API asserts that the annotator only annotates the PsiElement being visited, so can’t highlight the resolved call definitions at the same time anymore.
  • Differentiate signs, unary +/-, and addition/subtraction in lexer. Fix parsing of -1 for case clauses (#1316) by more strictly parsing decimal exponent signs differently than addition/subtraction and differently from unary + and -. No longer have a “dual” operation emitted from the lexer like the Elixir native lexer and instead use specific tokens for each use case so that the parser doesn’t need to decide on the operation.
  • Heredoc with escapable newlines (#1843) Heredocs allow the final newline to be escaped so you can write a heredoc in the code, but have no newlines in the string term at runtime.
  • Fix terminators docs to show closing version and not opening version
  • Protect against IndexOutOfBounds from highlighterIterator in QuoteHandler.

Installation Instructions