CommonLisp 環境構築 with Neovim
Neovimのプラグイン
- nvlime
- lazy.nvim (今回のテーマとは関係ないですが)
SBCLの立ち上げ時にquicklispを読み込んでくれない
- こういう時はHelp
:h nvlime
をチェック - 起動関数をカスタマイズできるっぽい? のでプラグインマネージャの起動タイミングで呼んでみる
vim.g.nvlime_config = { implementation = "custom" } local setup_lisp_file_path = vim.fn.expand('$HOME/quicklisp/setup.lisp') local fn = string.format([[ function! NvlimeBuildServerCommandFor_custom(nvlime_loader, nvlime_eval) return [ "sbcl", \ "--load", "%s", \ "--load", a:nvlime_loader, \ "--eval", a:nvlime_eval] endfunction ]], setup_lisp_file_path) vim.api.nvim_exec(fn, false)
簡単な使い方
使う頻度の高いものだけ一覧にしてみた。( :h nvlime-tutor
読んでみるのがいいかも)
<leader>rr
サーバー立ち上げ<leader>si
replにコマンド送信<leader>cd
サーバー停止<leader>rt
サーバー再起動<leader><enter>
で interactiveモード?- これになるとnormalモードでenter押すとreplで解釈してくれる。
サーバー立ち上げ時に自分のPackageがquicklispのマネジメント配下にいない問題
- サーバー立ち上げ時に作業中のpackageを読み込ませておきたいので、ローカルに指定ファイルがあったら初期化時に読み込むように作り変えた。
そもそもの開発Packageをasdfに読み込ませる方法
asdf:*central-registry*
という変数の中にディレクトリのリストが入っていて、そこをチェックするっぽいので登録する。
(let ((packages '("project/" "project/sub-module/"))) (loop for p in packages do (let ((path (merge-pathnames p (user-homedir-pathname)))) (pushnew path asdf:*central-registry* :test #'equal))))