Skip to content
forked from Enerccio/SLT

SLT is an IDE Plugin for Itellij/Jetbrains IDE lineup implementing support for Common Lisp via SBCL and Slime/Swank

License

Notifications You must be signed in to change notification settings

mayerrobert/SLT

 
 

Repository files navigation

SLT - A Common Lisp Language Plugin for Jetbrains IDE lineup

License: APACHE 0.1.0 0.2.0 0.3.0

Image

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.

Image

Requirements

  1. Intellij based IDE - tested on Intellij Idea Community/Ultimate but should work on all major IDEs
    1. Versions supported are from 2022.2 and upwards
  2. Steel Bank Common Lisp installed
  3. Quicklisp

Getting started

Download plugin for your IDE from releases and install it via file.

ie File->Settings->Plugin, click on gear icon and then 'Install plugin from disk' and then select the downloaded zip (do not unzip the zip)

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.

For the first time use, I recommend installing swank and eclector dependencies manually from sbcl because there is 10 seconds timeout to see if swank has initialized,and it might terminate before quicklisp has initialized.

Start sbcl and run this script:

On linux and default quicklisp path:

(load "~/quicklisp/setup.lisp")
(ql:quickload :swank)
(ql:quickload :eclector)

Plugin options

Plugin has 2 options right now. These are accessible in Settings>SLT Configuration

  • SBCL executable: Full path to sbcl or if sbcl is in path just sbcl is fine.
    • on windows, you might need .exe or even full path to .exe
  • Quicklisp path: path to the setup.lisp file of quicklisp. Defaults to ~/quicklisp/setup.lisp

Compiling source

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
  • Automatic indentation
  • REPL
  • Interactive debugging
  • Inspection
    • Basic inspection
    • Actions
    • Inspection eval
  • Walkable debugger without actions
  • Breakpoints
  • Documentation
  • Macro expand in documentation
    • Macro expand requires you to hover element twice for now
  • Find function by symbol name
  • Search for symbols
  • Back references
  • Refactoring
  • List of quicklisp installed packages / ASDF packages
  • List of modified top level forms that are yet to be evaluated
  • Actually make an IDE, ie just plugin with dependencies as one application, not a plugin

Far futures / possible goals

  • SDK Support
  • Automatic download of lisp interpret and quicklisp
  • Different lisp interpreter support
  • Remote connections to interpreters
  • Rewrite everything into ABCL just for purity sake lol

License

This project is licensed under Apache License v2.

What does SLT even mean?

SLT - Speech Language Therapy. Only cure for LISP!

About

SLT is an IDE Plugin for Itellij/Jetbrains IDE lineup implementing support for Common Lisp via SBCL and Slime/Swank

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Java 93.3%
  • Common Lisp 3.6%
  • Lex 2.4%
  • Other 0.7%