#:g1: lw-add-ons の紹介

Posted 2021-07-11 20:22:43 GMT

一時期Lisp関係のライブラリを紹介するというのをやっていましたが、最近はそういうのもすっかりご無沙汰です。

そんな近頃ですが、最近、UltralispにLispWorksのdistができたので、このなかに収録されているlw-add-onsを久々に紹介してみます。

ちなみに、LispWorksのdistができた背景ですが、Quicklispのquicklisp distはSBCLで動作確認をしている関係からSBCLで動かないものは一切収録されておらず、lw-add-onsのようなLispWorks固有のライブラリは、配布の枠組みは作っているので誰かが独自のdistをまとめれば良いだろう、という雰囲気でした。
そういう流れのところに、たまたまUltralispの作者が最近LispWorksを利用するようになったので、処理系固有のdistとして試しにLispWorksのdistができた、という感じだと思います。

lw-add-ons とはなにか

lw-add-ons はcl-ppcre等でお馴染のEdmund Weitz氏が作製した、LispWorksのIDEをEmacs+SLIMEの環境に近付けるような拡張です。

試してみる

拡張の説明はライブラリのドキュメントに書いてあるので使い勝手的なところや、個人的なカスタマイズについて書いていきたいと思いますが、改めてドキュメントを確認してみると、開発当初の2005年のLispWorks 4.4の時代にはLispWorks IDEに存在しなかった機能も、LispWorksの版を重ねるごとに本体に取り込まれており、取り込まれていない機能は、arglistの表示の"Insert Space and Show Arglist"や、ドキュメントを開く、"Meta Documentation"とSLIMEのREPLのショートカット機能的なリスナーの拡張機能位になってしまいました。

個人的にはキーバインドをSLIMEにさらに近付けて使ったりしています。

;;; SLIMEのslime-doc-mapの模倣
(defvar *slime-doc-map* (editor::make-key-table))

(editor::set-table-entry (editor::get-table-entry (editor::get-right-table :global :emacs) (editor::crunch-key "Control-c")) (editor::crunch-key "Control-d") *slime-doc-map*)

;;; c-c c-d h でドキュメントを開く(SLIMEではHyperSpecを開く) (editor::set-table-entry *slime-doc-map* (editor::crunch-key "h") (editor::find-command "Meta Documentation"))

また、LispWorksはMOPのドキュメントも標準で添付されてくるので、これを活用するように設定してみています。

(progn
  (setq lw-add-ons:*mop-page*
        (lw:lispworks-file  "manual/online/MOP/mop/dictionary.html"))
  (lw-add-ons::collect-mop-links))

まとめ

Lispの開発環境単体で比較するなら、多分SLIMEよりLispWorksの方が強力なのですが、Emacs+SLIMEの方は、マルチプラットフォームでかつLisp開発で活用できる強力なテキスト編集拡張が存在するというのが、かなりの強みだなと思います。

まあ、LispWorksへEmacsのライブラリを移植すれば良いのですが、便利な拡張ライブラリはコードのボリュームも多くなかなか面倒です。


HTML generated by 3bmd in LispWorks 7.0.0

comments powered by Disqus