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;