nREPL dynamic middleware loading
#clojure #nrepl
https://github.com/nrepl/nrepl/pull/185
ls-middleware
code:request.clj
{:op "ls-middleware" :session "..."}
code:response
{'status': 'done',
'middleware': ['#''nrepl.middleware/wrap-describe',
'#''cider.nrepl/wrap-info',
'#''nrepl.middleware.dynamic-loader/wrap-dynamic-loader',
.......,
'#''iced.nrepl/wrap-iced'],
'session': '83b4c87b-2a40-4183-a333-4ded3b3d0297'}
add-middleware
クラスパスにミドルウェアがある場合は単に以下だけでOK。無い場合は nREPL Sideloader と組み合わせる必要がある
code:request.clj
{:op "add-middleware"
:middleware "iced.nrepl/wrap-iced"}
code:成功レスポンス
{'status': 'done', 'session': '...'}
code:失敗レスポンス
{'status': 'done', 'error', 'session': '...', 'unresolved-middleware': 'iced.nreplllll/wrap-iced'}