Common Lispの統合開発環境としてはEmacs上で動くSLIMEがとても具合が良いのですが、Visual Studio Codeを使いたくなるときもあります(Emacsのハードルが高いと思う人には「VSCodeからも使えるよ」と言えるほうがLISPをおすすめしやすい)。そして、VSCodeにはAliveという統合開発環境があります。
また、Common Lisp処理系はRoswellを使って導入するのがラクチンです。ふだん僕はmacOSを使っているのでLinuxとほぼ同じ方法で簡単に導入できるのですが、Windowsで(WSLを使わずに)Common Lispを使いたいときのために、導入方法のメモを残しておきます。最後にSLIME導入についても少しだけ書きました。
まず、コマンドプロンプトで使える様々なプログラムをインストールするのに便利なscoopを準備します。PowerShellで以下の2行を実行するとscoopコマンドが使えるようになります。
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser Invoke-RestMethod -Uri https://get.scoop.sh | Invoke-Expression
次に、scoopを使ってRoswellをインストールします。
scoop install roswell
RoswellでCommon Lisp処理系をインストールします。デフォルトでは Steel Bank Common Lisp (SBCL) がインストールされます。自分の環境では C:\Users\marui\.roswell\src\sbcl-2.4.7-x86-64-windows\
にSBCLがインストールされました。
ros setup
ros run
してSBCLを立ち上げ、以下の4行でAliveに必要なパッケージをインストールします。
(ql:quickload "bordeaux-threads") (ql:quickload "usocket") (ql:quickload "cl-json") (ql:quickload "flexi-streams")
VSCodeを立ち上げてExtensionからAliveをインストールし、setting.jsonに以下を追加します。
"alive.lsp.startCommand": [ "C:\\Users\\marui\\scoop\\apps\\roswell\\current\\ros.exe", "run", "--eval", "(require :asdf)", "--eval", "(asdf:load-system :alive-lsp)", "--eval", "(alive/server:start)" ]
これでCommon Lispのファイルを開くとAliveが起動するようになります。Alt+Shift+Eでインライン評価、Alt+Shift+EnterでREPLに送って評価されます。Control+Shift+Pでコマンドパレットを呼び出すとMacro Expand 1やMacro Expand Allが検索・実行でき、マクロがin-placeに展開されます。
もしSLIMEも使いたい場合はコマンドプロンプト上で ros install slime
を実行し、~/.emacs.d/init.el
に (load (expand-file-name "C:/Users/marui/.roswell/helper.el"))
を追加します。