Git Product home page Git Product logo

slt's Introduction

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!

slt's People

Contributors

enerccio avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.