diff --git a/CHANGELOG.md b/CHANGELOG.md index 09f604cb4..5f557a785 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -558,6 +558,8 @@ If a variable is declared in an EEx tag then it is actually missing its declaration and cannot be resolved, so ignore its usage. * [#3043](https://github.com/KronicDeth/intellij-elixir/pull/3043) - [@KronicDeth](https://github.com/KronicDeth) * Check if module is disposed when write action is run for `syncLibraries`. +* [#3044](https://github.com/KronicDeth/intellij-elixir/pull/3044) - [@KronicDeth](https://github.com/KronicDeth) + * Only use Elixir SDK for `mix format` if it has an Erlang SDK. ## v14.0.0 diff --git a/resources/META-INF/changelog.html b/resources/META-INF/changelog.html index 5621697ad..3f487f9d1 100644 --- a/resources/META-INF/changelog.html +++ b/resources/META-INF/changelog.html @@ -16,6 +16,7 @@

v14.0.1

If a variable is declared in an EEx tag then it is actually missing its declaration and cannot be resolved, so ignore its usage.
  • Check if module is disposed when write action is run for syncLibraries.
  • +
  • Only use Elixir SDK for mix format if it has an Erlang SDK.
  • diff --git a/src/org/elixir_lang/Elixir.kt b/src/org/elixir_lang/Elixir.kt index a1324d13f..c01442195 100644 --- a/src/org/elixir_lang/Elixir.kt +++ b/src/org/elixir_lang/Elixir.kt @@ -31,9 +31,13 @@ object Elixir { } fun elixirSdkToEnsuredErlangSdk(elixirSdk: Sdk): Sdk = - elixirSdk.sdkAdditionalData?.let { it as SdkAdditionalData }?.ensureErlangSdk() + elixirSdkToErlangSdk(elixirSdk) ?: throw MissingErlangSdk(elixirSdk) + fun elixirSdkHasErlangSdk(elixirSdk: Sdk): Boolean = elixirSdkToErlangSdk(elixirSdk) != null + fun elixirSdkToErlangSdk(elixirSdk: Sdk): Sdk? = + elixirSdk.sdkAdditionalData?.let { it as SdkAdditionalData }?.erlangSdk + /** * Adds `-pa ebinDirectory` for those in the `elixirSdk` that aren't in the `erlangSdk` */ diff --git a/src/org/elixir_lang/formatter/MixFormatExternalFormatProcessor.kt b/src/org/elixir_lang/formatter/MixFormatExternalFormatProcessor.kt index c907b5b86..45af1232c 100644 --- a/src/org/elixir_lang/formatter/MixFormatExternalFormatProcessor.kt +++ b/src/org/elixir_lang/formatter/MixFormatExternalFormatProcessor.kt @@ -12,6 +12,7 @@ import com.intellij.openapi.roots.ProjectRootManager import com.intellij.openapi.util.TextRange import com.intellij.psi.PsiFile import com.intellij.psi.codeStyle.ExternalFormatProcessor +import org.elixir_lang.Elixir.elixirSdkHasErlangSdk import org.elixir_lang.Mix import org.elixir_lang.code_style.CodeStyleSettings import org.elixir_lang.psi.ElixirFile @@ -42,7 +43,7 @@ class MixFormatExternalFormatProcessor : ExternalFormatProcessor { application.executeOnPooledThread { workingDirectory(source)?.let { workingDirectory -> - mostSpecificSdk(source)?.let { sdk -> + mostSpecificSdk(source)?.takeIf(::elixirSdkHasErlangSdk)?.let { sdk -> format(workingDirectory, sdk, document.text)?.let { formattedText -> application.invokeLater { if (source.isValid) { @@ -94,7 +95,7 @@ class MixFormatExternalFormatProcessor : ExternalFormatProcessor { commandLine } catch (fileNotFoundException: FileNotFoundException) { LOGGER.info(fileNotFoundException) - + null } diff --git a/src/org/elixir_lang/github/issues/create/Request.kt b/src/org/elixir_lang/github/issues/create/Request.kt index 1406f34d7..354f9deb3 100644 --- a/src/org/elixir_lang/github/issues/create/Request.kt +++ b/src/org/elixir_lang/github/issues/create/Request.kt @@ -169,7 +169,7 @@ class Request private constructor(val title: String, val body: String) { val lines = ExceptionUtil.getThrowableText(throwable).lineSequence() val lastPluginLine = lines.indexOfLast { it.contains("at org.elixir_lang.") } val filteredLines = if (lastPluginLine != -1) { - lines.take(lastPluginLine + 1) + lines.take(lastPluginLine + 10) } else { lines } diff --git a/src/org/elixir_lang/sdk/erlang_dependent/SdkAdditionalData.java b/src/org/elixir_lang/sdk/erlang_dependent/SdkAdditionalData.java index 973dcd6ee..e06ea72b6 100644 --- a/src/org/elixir_lang/sdk/erlang_dependent/SdkAdditionalData.java +++ b/src/org/elixir_lang/sdk/erlang_dependent/SdkAdditionalData.java @@ -88,15 +88,4 @@ public Sdk getErlangSdk() { public void setErlangSdk(@Nullable Sdk erlangSdk) { this.erlangSdk = erlangSdk; } - - @NotNull - public Sdk ensureErlangSdk() throws MissingErlangSdk { - Sdk erlangSdk = getErlangSdk(); - - if (erlangSdk == null) { - throw new MissingErlangSdk(elixirSdk); - } - - return erlangSdk; - } }