はじめに
元々はRoswell + VSCode
でCommonLispの実行環境を作成したかったのですが、うまくいかなかったので、VSCode
+ Alive
+ SBCL
+ Quicklisp
でどうにかした際の記録を書いていきます。
インストール
以下のツールをインストールします
- SBCL
- CommonLisp本体
- Quicklisp
- パッケージ管理
brew install sbcl
curl -O https://beta.quicklisp.org/quicklisp.lisp
curl -O https://beta.quicklisp.org/quicklisp.lisp.asc
gpg --verify quicklisp.lisp.asc quicklisp.lisp
sbcl --load quicklisp.lisp
SBCLの起動中に以下のコードを実行します
* (quicklisp-quickstart:install)
* (ql:add-to-init-file)
シェルの設定ファイル(~/.bashrc
や~/.zshrc
など)に以下のコード追記します
QUICKLISP_HOME=~/quicklisp
コンソールで以下のコマンドを実行し、設定を反映します
source ~/.bashrc
AliveのREPL環境をインストールします
git clone https://github.com/nobody-famous/alive-lsp.git $QUICKLISP_HOME/quicklisp/local-projects/alive-lsp
VSCodeの設定ファイル(.settings.json
)に以下を追記します
{
〜〜(省略)〜〜
"alive.lsp.startCommand": [
"sbcl",
"--eval",
"(require :asdf)",
"--eval",
"(asdf:load-system :alive-lsp)",
"--eval",
"(alive/server:start)"
]
}
VSCodeを起動して、拡張機能からAliveを検索します。
インストール後に、LispファイルがあるディレクトリでVSCodeを再起動すると、REPLが自動で起動します。
使い方
コマンド一覧
コマンド | 説明 |
---|---|
Alt+Shift+Up | カーソル下のS式全体を選択状態にする |
Alt+Shift+Enter | カーソル下のS式をREPLに送る |
Alt+Shift+L | ファイル全体を読み込む |
Alt+Shift+E | インライン評価(*1) |
Alt+Shift+C | 表示のクリア(*2) |
Alt+Shift+R | REPL上の実行履歴 |
*1 : Alt+Shift+Enterと違いREPLに読み込んだコードが表示されない
*2 : 手元の環境だとクリアされなかった...
使用例
まず sample.lisp
というファイルを作成し、以下の内容を記述してください
(defun sample ()
(print "Hello World"))
(sample)
(defun sample ()
の部分にカーソルをあわせて Alt+Shift+Enter
を実行すると式がREPに読み込まれます。
REPL上の cl-user >
となっている箇所に (sample)
と打ち込んで実行すると以下のように式が実行されます。
(sample)
"Hello Worlds"
Hello Worlds
また、ソースコード上の (sample)
と書いてある行で Alt+Shift+Enter
を実行しても同様の実行結果を得られます。
まとめ
とりあえず実行できる環境ができたので良かったのだが、この状態だと裸のSBCLとQuicklispを使って開発しないとイケない状態になっているので辛いです。
RoswellやMondoなどと連携してどうにかしたかったのですが、何故かうまくいかなったので、今回はここまでにしようかと思います...