diff --git a/.gitignore b/.gitignore
index 27b3ae1..87b2c79 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,5 @@
signcerts/
+distributions/
.gradle
build/
!gradle/wrapper/gradle-wrapper.jar
diff --git a/.run/Run Plugin.run.xml b/.run/Run Plugin.run.xml
index f89315c..25d1050 100644
--- a/.run/Run Plugin.run.xml
+++ b/.run/Run Plugin.run.xml
@@ -5,7 +5,7 @@
-
+
diff --git a/README.md b/README.md
index ed00ae7..2ccc965 100644
--- a/README.md
+++ b/README.md
@@ -4,6 +4,8 @@
[![0.1.0](https://badgen.net/github/milestones/enerccio/SLT/1)](https://github.com/enerccio/SLT/milestone/1)
[![0.2.0](https://badgen.net/github/milestones/enerccio/SLT/2)](https://github.com/enerccio/SLT/milestone/2)
+**THIS PLUGIN IS EXPERIMENTAL and can crash at any time! Please report all bugs!**
+
This plugin is providing support for Common Lisp for JetBrains IDEs.
Using modified SLIME/Swank protocol to commmunicate with SBCL providing
IDE capabilities for Common Lisp.
@@ -18,15 +20,31 @@ IDE capabilities for Common Lisp.
## Getting started
-Download plugin for your IDE from releases and install it via file.
+Download plugin for your IDE from releases and install it via file.
+To find out which release applies to you check this table:
+
+| Jetbrains IDE Variant | Plugin name pattern |
+|-----------------------|----------------------------:|
+| CLion | slt-_version_-signed-CL.zip |
+| GoLand | slt-_version_-signed-GO.zip |
+| Intellij Community | slt-_version_-signed-IC.zip |
+| Intellij Ultimate | slt-_version_-signed-IU.zip |
+| PyCharm | slt-_version_-signed-PY.zip |
+| PyCharm Community | slt-_version_-signed-PC.zip |
+| Rider | slt-_version_-signed-RD.zip |
+
+PhpStorm is coming when I read how to build it correctly since just swapping
+the type does not work.
## Compiling source
-Clone the repository and change gradle.properties for your IDE. Then use gradle to build the plugin.
+Clone the repository and change gradle.properties for your IDE.
+Then use gradle to build the plugin.
You can also open this as a project in Intellij Idea.
## Planned features / goals
+* [ ] Upload to marketplace when it has enough features
* [x] REPL
* [x] Interactive debugging
* [ ] Walkable debugger without actions
diff --git a/build-distributions.sh b/build-distributions.sh
new file mode 100644
index 0000000..74b305a
--- /dev/null
+++ b/build-distributions.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+
+rm distributions/*
+
+echo -n Private key password:
+read -s PASSWORD
+export PRIVATE_KEY_PASSWORD=$PASSWORD
+
+expandedName() (
+ # shellcheck disable=SC2125
+ UNEXPANDED=build/distributions/slt-*-signed.zip
+ set +f
+ echo $UNEXPANDED
+)
+
+DISTRIBUTIONS="CL GO IC IU PY PC RD"
+for TARGET_IDE in ${DISTRIBUTIONS}; do
+ echo Trying to build $TARGET_IDE
+ export TARGET_IDE=$TARGET_IDE
+ ./gradlew clean signPlugin verifyPlugin buildPlugin || ./gradlew signPlugin verifyPlugin buildPlugin || exit
+ FILE=$(expandedName)
+ NEW_FILE=$(basename ${FILE%.*}-$TARGET_IDE.zip)
+ cp "$FILE" distributions/$NEW_FILE
+ echo Built $NEW_FILE
+done
diff --git a/build.gradle.kts b/build.gradle.kts
index 2d1126c..bd2d304 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -1,6 +1,6 @@
plugins {
id("java")
- id("org.jetbrains.intellij") version "1.11.0"
+ id("org.jetbrains.intellij") version "1.12.0"
}
group = "com.en_circle.slt"
@@ -26,9 +26,12 @@ sourceSets {
// Configure Gradle IntelliJ Plugin
// Read more: https://plugins.jetbrains.com/docs/intellij/tools-gradle-intellij-plugin.html
intellij {
- version.set("2022.1.4")
+ version.set("2022.1")
pluginName.set("slt")
- type.set(extra["targetIDE"].toString()) // Target IDE Platform
+ var ide = System.getenv("TARGET_IDE")
+ if (ide == null || "" == ide)
+ ide = extra["targetIDE"].toString()
+ type.set(ide) // Target IDE Platform
plugins.set(listOf(
diff --git a/gradle.properties b/gradle.properties
index 743db28..80959e1 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1,4 +1,4 @@
org.gradle.jvmargs=-XX:MaxHeapSize=512m -Xms512m -Xmx1g
-# IU, IC, CL, PY, GO
-targetIDE=IU
\ No newline at end of file
+# CL GO IC IU PS PY PC RD
+targetIDE=IC
\ No newline at end of file
diff --git a/src/main/java/com/en_circle/slt/plugin/SltSBCLSymbolCache.java b/src/main/java/com/en_circle/slt/plugin/SltSBCLSymbolCache.java
index 81ff638..85ea7ca 100644
--- a/src/main/java/com/en_circle/slt/plugin/SltSBCLSymbolCache.java
+++ b/src/main/java/com/en_circle/slt/plugin/SltSBCLSymbolCache.java
@@ -10,7 +10,7 @@
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiElement;
import com.intellij.util.FileContentUtilCore;
-import org.codehaus.plexus.util.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import java.lang.ref.WeakReference;
import java.util.*;
diff --git a/src/main/java/com/en_circle/slt/plugin/lisp/lisp/LispUtils.java b/src/main/java/com/en_circle/slt/plugin/lisp/lisp/LispUtils.java
index 638e0b4..82fd33d 100644
--- a/src/main/java/com/en_circle/slt/plugin/lisp/lisp/LispUtils.java
+++ b/src/main/java/com/en_circle/slt/plugin/lisp/lisp/LispUtils.java
@@ -13,7 +13,7 @@
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiRecursiveVisitor;
import com.intellij.psi.tree.IElementType;
-import org.codehaus.plexus.util.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.jetbrains.annotations.NotNull;
import java.math.BigInteger;
diff --git a/src/main/java/com/en_circle/slt/plugin/ui/debug/SltDebuggerImpl.java b/src/main/java/com/en_circle/slt/plugin/ui/debug/SltDebuggerImpl.java
index 7970df7..88a15d1 100644
--- a/src/main/java/com/en_circle/slt/plugin/ui/debug/SltDebuggerImpl.java
+++ b/src/main/java/com/en_circle/slt/plugin/ui/debug/SltDebuggerImpl.java
@@ -30,7 +30,7 @@
import com.intellij.ui.components.JBTextField;
import com.intellij.ui.tabs.TabInfo;
import com.intellij.ui.tabs.impl.JBTabsImpl;
-import org.codehaus.plexus.util.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.jetbrains.annotations.NotNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;