Skip to content

User Guide

Enerccio edited this page Jun 30, 2023 · 25 revisions

This guide is for version 0.3.1 and up unless mentioned otherwise!

Installation

Plugin Installation

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)

You no longer need different plugin versions!

Continue with installation of SDK below:

Windows

Automatic Download

  • In the IDE open Settings > Languages & Frameworks > Common Lisp SDKs, then click on Download New SBCL SDK (Windows Only)

  • It just works!™ --Todd Howard (cca 2015, colorized)

Manual Installation

  • It should end with T. Then type (quicklisp-quickstart:install) end press enter. After download it should look like this:

  • Quicklisp is now installed in your home directory (C:\Users\<name>\quicklisp)

  • In the IDE open Settings > Languages & Frameworks > Common Lisp SDKs, then click on Add New SBCL SDK

  • Then locate sbcl.exe for SBCL executable.

  • You can do same with SBCL.core file but it is optional, alternatively you can supply your own core. Then find your setup.lisp inside quicklisp folder in your home and add it to the sdk. Should look like this when filled:

  • Clicking on Verify SBCL SDK will download all necessary libraries requires and will verify the SDK. Wait until verification is finished, it can take some time to download all dependencies. Click Save and then Apply to add your SDK.

  • Then go to Languages And Settings > Common Lisp SDK and click the refresh icon and select your installed SDK from the menu and hit Apply

This is a change from 0.3.0! to accommodate deprecated Project setting

  • Done!

Mac

User submitted guide from @chlebik

  • Install SBCL by simply using brew
brew install sbcl
  • Second step is to install QuickLisp. The official site has a detailed instruction just for MacOS users. Below I'm presenting the steps I've taken to install it.
curl -O https://beta.quicklisp.org/quicklisp.lisp       # Best way is to download to your home directory
curl -O https://beta.quicklisp.org/quicklisp.lisp.asc
gpg --verify quicklisp.lisp.asc quicklisp.lisp          # Did not work due to missing gpg command, but that's not critical
sbcl --load quicklisp.lisp                                       

After issuing last command REPL is opened, and installation is as simple as just following the instructions. The ones that are mentioned in the Windows installation section seems to be exactly the same as for MacOS.

  • In order to setup the plugin you need to add SBCL to the list of the existing SDKs, the same way as in the Windows installation steps. IMPORTANT! Even after I've added SBCL executables to the config, provided QuickLisp path, verifying the whole thing, Intellij still did not was able to see the SDK in the toolbar or specific SDK config. I had to restart IDE in order for it to refresh the list. After that, SBCL is present in the SDK lists, and can be chosen as a default one.

Linux

Repository Installation

Installing SBCL from repo works and usually all you need to enter into path is sbcl. Install quicklisp via

$ curl -o /tmp/ql.lisp http://beta.quicklisp.org/quicklisp.lisp

$ sbcl --no-sysinit --no-userinit --load /tmp/ql.lisp --eval '(quicklisp-quickstart:install :path "~/.quicklisp") --quit

To set up SDK, follow Windows guide above but usually if sbcl is in path, simple sbcl is all that is required. Quicklisp path must be filled though, which, if you used previous commands to install quicklisp is ~/.quicklisp/setup.lisp.

Usage

To unlock most potential out of plugin you have to start sbcl instance. This is done on Common Lisp toolbar, green icon "Start SBCL Instance".

You can stop the instance by following red button. If you get this error you need to setup SDK, see above.

How to..

...open REPL?

Click on the "Create Lisp REPL" + button in Common Lisp toolbar.

To evaluate expression add one blank line at the end. You can use arrows to get to previous expressions and such.

new from 0.5.1

You can click on result to see it in inspector.

...create lisp file?

Right click on folder and then "New > Asdf system/Common Lisp Lisp File/Common Lisp CL File" to create basic template

...evaluate lisp file?

Right click on a file in project explorer and pick Evaluate File option:

Alternatively, you can right click in any opened file and then select "Evaluate Current File"

...evaluate expressions?

There are options when you right click:

  • Evaluate Selected Region will evaluate selected region as an expression. You can evaluate parts of toplevel expressions and inside comments.

    • Default key combination: Ctrl+Alt+R
  • Evaluate This S-Expression will evaluate S-Expression cursor is in. Only right this expression will be evaluated, not whole toplevel. Will also select the evaluated expression.

    • Default key combination: Ctrl+Alt+F
  • Evaluate Previous S-Expression will evaluate S-Expression left of cursor. Will also select the evaluated expression.

    • Default key combination: Ctrl+Alt+E
  • Evaluate Next S-Expression will evaluate S-Expression to the right of the cursor. Will also select the evaluated expression.

    • Default key combination: Ctrl+Alt+Q

...debug my code?

As of 0.3.0, only interactive debugger is implemented. If failure happens, SBCL Debuggers panel will be selected and Debugger #N will be there:

You can select actions what to do on the left. If actions require parameters you will be prompted to input them:

You can also click on frames to see variables. Click on frame will also open up source location, if available.

this example is from linux where I have SBCL sources available

You can use Frame REPL to evaluate code in that frame. Alternatively, you can click on locals to enter inspector:

In inspector you can click on more links and/or use arrows to move in history. Refresh will refresh inspector contents on change.

...learn more about a symbol?

Hovering over a symbol will show documentation retrieved from SBCL:

...macroexpand?

new from 0.5.1

You can macroexpand by right clicking in editor in a form and then choose Macroexpand option. Result will be show in the popup.

...go where symbol has definition?

Ctrl+Click on a symbol will open new editor with a file containing source, if there is such file

...get context help?

When you are typing, you get automatic contextual help of available functions and macros

...search symbols?

Shift+shift gives context help.

...change colors of elements?

For coloring to work completely, SBCL has to be running. This is also reason default color preview in Jetbrains IDE won't preview correctly.

  • Open the Settings Menu,
  • Navigate to Editor > Color Scheme > Common Lisp
  • Change colors to your liking (if need more help check Intellij help)

...change indentation settings?

You can change some indentation settings for every common lisp project in "Settings > Editor > Common Lisp Indentation"

Or you can also change project specific ones in "Editor > Common Lisp Indentation (Project)"

This is a change from 0.3.0! to accommodate deprecated Project setting

If "Apply indentation rules" is checked, SLT will try to indent according to simplified slime indentation rules. It will also work with user generated macros and their &body argument position.

...show threads?

Click on Lisp Instance Information

You can select a thread and stop/kill it with buttons.

...show argument list?

If you are inside function call, you can press Ctrl+P to show argument list:

...enable spell checking?

new from 0.4.0

Spell checking is enabled by default but file has to be under content root (File>Project Structure>Modules)

Other Implementations

new from 0.4.0

SLT works with these implementations to a degree: SBCL, ABCL, CCL, Allegro CL, CMUCL. Each version is configured as SDK. You can check FEATURES.md file to see which parts of SLT are supported for that implementation.

What about roswell?

You can use roswell in case of binary executable for executable path. Just use ros run instead of path to sbcl and it will work just fine.

Common Lisp Hyperspec integration

new from 0.5.0

You can open CLHS tab to see hyperspec (Of course, you need internet because CLHS is not distributed). Alternatively, you can right click on any symbol to search it via Show Symbol In CLHS or if you have cursor in symbol you can press default Ctrl+Alt+H.

Example: