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;
- }
}