Skip to content

Commit

Permalink
Merge pull request #53 from Enerccio/stable
Browse files Browse the repository at this point in the history
Stable
  • Loading branch information
Enerccio authored Feb 11, 2023
2 parents 50f6f35 + 320790b commit 390b2c1
Show file tree
Hide file tree
Showing 161 changed files with 6,216 additions and 792 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -45,3 +45,4 @@ bin/

.idea
/.run/Build Release.run.xml
/temporary/
22 changes: 22 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,25 @@
## 0.4.0 230211

### Added

- Support for multiple lisp interprets
- ABCL Support
- CCL Support
- AllegroCL Support
- CMUCL Support
- Breakpoint support
- Spellchecker support
- Folding support, structure support, navigation bar

### Fixes

- Fixed parser issue with dot
- Fixed xref speed issues with large psi

### Changes

- Feature list for each interpret changes availability of functions in IDE

## 0.3.1 230203

### Added
Expand Down
47 changes: 47 additions & 0 deletions FEATURES.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
Since I started supporting multiple interprets I have learned that some features just don't work well across them or even in swank.
This is a list of features that are supported.

| Legend | |
|--------|----------------------------------------|
| ✅️ | Implemented |
|| Not implemented but might be in future |
|| Is not supported |

Unsupported and will not be supported implementations:

* CLISP - does not work, maybe with threads, but single threaded it's useless and crashes on debug attempt

* LispWorks - unfortunately free version only works as GUI so not usable.

| Features / Lisp | SBCL | ABCL | CCL | Allegro CL | CMUCL |
|------------------------------|------|------|------|------------|-------|
| REPL | ✅️ | ✅️ | ✅️ | ✅️ | ✅️ |
| Buffer Evaluation | ✅️ | ✅️ | ✅️ | ✅️ | ✅️ |
| Documentation ||| ✅️ | ✅️ | ✅️ |
| Macroexpand ||| ✅️ | ✅️ | ✅️ |
| Debugger ||| ✅️ |||
| Debugger Actions ||| ✅️³️ | ✅⁴ ||
| Frame REPL ||| ✅️ |||
| Breakpoints ||||||
| Stepping Debugger⁵ ||||||
| References ||| ✅️ | ✅️ ||
| Inspector | ✅¹ | ✅² | ✅️¹ | ✅️¹ | ✅️¹ |
| Autocomplete ||||||
| Find References ||| ✅️ |||
| Function Arguments ||| ✅️ | ✅️ | ✅️ |
| Automatic Download - Windows ||||||

¹Only read-only inspector available

²Only read-only inspector available, also no history support

³️Due to how CCL optimizes restarts into tag jumps and is not storing arglist,
there is no automatic restart action argument detection.
Thus, you need to supply your own and every action has "invoke with arguments" or "invoke without arguments"
option, so you have to decide. FML for ansi common lisp not having ansi way to get restart
arguments because fuck you that's why.

⁴Allegro CL restarts have correct arglists so actions work but for some reason all restarts from SWANK have arguments,
event abort ones...

⁵No implementation in Slime supports this, maybe I will work in custom solutions.
52 changes: 42 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,27 +1,43 @@
# SLT - A Common Lisp Language Plugin for Jetbrains IDE lineup

![GitHub release (latest by date)](https://img.shields.io/github/v/release/Enerccio/SLT)
![GitHub Release Date](https://img.shields.io/github/release-date/Enerccio/SLT)
![OSS Lifecycle](https://img.shields.io/osslifecycle/Enerccio/SLT)
![GitHub](https://img.shields.io/github/license/Enerccio/SLT)
![GitHub lisp counter](https://img.shields.io/github/search/Enerccio/SLT/lisp)
[![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)
[![0.3.0](https://badgen.net/github/milestones/enerccio/SLT/4)](https://github.com/enerccio/SLT/milestone/4)
[![0.3.0](https://badgen.net/github/milestones/enerccio/SLT/5)](https://github.com/enerccio/SLT/milestone/5)
[![0.4.0](https://badgen.net/github/milestones/enerccio/SLT/5)](https://github.com/enerccio/SLT/milestone/5)
[![0.5.0](https://badgen.net/github/milestones/enerccio/SLT/6)](https://github.com/enerccio/SLT/milestone/6)
![GitHub all releases](https://img.shields.io/github/downloads/Enerccio/SLT/total)
![GitHub last commit](https://img.shields.io/github/last-commit/Enerccio/SLT)
![GitHub commit activity](https://img.shields.io/github/commit-activity/m/Enerccio/SLT)
![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/Enerccio/SLT)
![Lines of code](https://img.shields.io/tokei/lines/github/Enerccio/SLT)
![GitHub top language](https://img.shields.io/github/languages/top/Enerccio/SLT)
[![(want-to-support-me? T NIL)](https://img.shields.io/liberapay/receives/Enerccio.svg?logo=liberapay)](https://liberapay.com/Enerccio)
![Liberapay patrons](https://img.shields.io/liberapay/patrons/Enerccio)
![Maintenance](https://img.shields.io/maintenance/yes/2023)
![GitHub issues](https://img.shields.io/github/issues/Enerccio/SLT)
![GitHub branch checks state](https://img.shields.io/github/checks-status/Enerccio/SLT/master)

[![Subreddit subscribers](https://img.shields.io/reddit/subreddit-subscribers/SLT_IDE?style=social)](https://old.reddit.com/r/SLT_IDE/)
![GitHub forks](https://img.shields.io/github/forks/Enerccio/SLT?style=social)
![GitHub Repo stars](https://img.shields.io/github/stars/Enerccio/SLT?style=social)
![GitHub watchers](https://img.shields.io/github/watchers/Enerccio/SLT?style=social)
[![Join the chat at https://gitter.im/SLT-Plugin/community](https://badges.gitter.im/SLT-Plugin/Lobby.svg)](https://gitter.im/SLT-Plugin/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
![GitHub Discussions](https://img.shields.io/github/discussions/Enerccio/SLT)

![Image](src/main/resources/logo/logo.svg)

**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
Using modified SLIME/Swank protocol to communicate with lisp interpret providing
IDE capabilities for Common Lisp.

# (Somewhat)Detailed Installation and Usage Guide
# (Somewhat) Detailed Installation and Usage Guide

https://github.com/Enerccio/SLT/wiki/User-Guide

Expand All @@ -32,9 +48,16 @@ https://github.com/Enerccio/SLT/wiki/User-Guide

Optionally (see more - guide):

1) [Steel Bank Common Lisp](https://www.sbcl.org/) installed
1) One of the supported LISP Interprets installed:
* [Steel Bank Common Lisp](https://www.sbcl.org/)
* [Armed Bear Common Lisp](https://armedbear.common-lisp.dev/)
* [Clozure Common Lisp](https://ccl.clozure.com/)
* [Allegro CL](https://franz.com/products/allegro-common-lisp/)
* [CMUCL](https://www.cons.org/cmucl/)
2) [Quicklisp](https://www.quicklisp.org/beta/) installed

(Not all features work with all interprets, see [FEATURES.md](FEATURES.md) for more info!)

## Getting started

See https://github.com/Enerccio/SLT/wiki/User-Guide#plugin-installation
Expand All @@ -58,13 +81,11 @@ You can also open this as a project in Intellij Idea.
* [x] REPL
* [x] Interactive debugging
* [x] Argument help (Ctrl+P)
* [ ] Inspection
* [x] Inspection
* [x] Basic inspection
* [ ] Actions
* [ ] Inspection eval
* [ ] Walkable debugger without actions
* [ ] Breakpoints
* Currently impossible to do correctly with sbcl, investigating other options
* [x] Breakpoints
* [x] Documentation
* [x] Macro expand in documentation
* Macro expand requires you to hover element twice for now
Expand All @@ -83,15 +104,26 @@ You can also open this as a project in Intellij Idea.
this is implemented manually.
* [x] Download SBCL and quicklisp for user
* [x] Automatic download of lisp interpret and quicklisp
* [ ] Different lisp interpreter support
* [x] Different lisp interpreter support
* [ ] Remote connections to interpreters
* [ ] Rewrite everything into ABCL just for purity’s sake lol

## License

This project is licensed under [Apache License v2](LICENSE.txt).

### What does SLT even mean?
# How to help?

* Please install the plugin and try it out!
* Report all bugs so I can catch them all. Click [here](https://github.com/enerccio/SLT/issues/new) to report.
* If you like the project, consider starring it or spreading info about it
* This project is OSS so if you have knowledge and want to implement something you can fork the repo and then create PR!

## Donations

If you feel like it, you can donate to support my work via [Liberapay](https://liberapay.com/Enerccio/donate).

# What does SLT even mean?

SLT - Speech Language Therapy. Only cure for LISP!

Expand Down
5 changes: 3 additions & 2 deletions build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
plugins {
id("java")
id("org.jetbrains.intellij") version "1.12.0"
id("org.jetbrains.intellij") version "1.13.0"
}

group = "com.en_circle.slt"
version = "0.3.1"
version = "0.4.0"

repositories {
mavenCentral()
Expand All @@ -15,6 +15,7 @@ dependencies {
implementation("org.watertemplate:watertemplate-engine:1.2.2")
implementation("com.google.guava:guava:31.1-jre")
implementation("org.rauschig:jarchivelib:1.2.0")
implementation("org.abcl:abcl:1.8.0")

testImplementation("org.junit.jupiter:junit-jupiter-api:5.9.2")
testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.9.2")
Expand Down
46 changes: 8 additions & 38 deletions src/main/gen/com/en_circle/slt/plugin/lisp/LispParser.java

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

37 changes: 0 additions & 37 deletions src/main/gen/com/en_circle/slt/plugin/lisp/impl/LispPairImpl.java

This file was deleted.

Loading

0 comments on commit 390b2c1

Please sign in to comment.