bonotakeの日記

元・ソフトウェア工学系研究者、今・AI系エンジニア

ghci-mode for xyzzy

夜寝付けないので、ボーっとPCいじっているうちそんなものを作ってしまいました。
私は紫藤さんとこのhs-modeを適当にいじって使っているのですが、やっぱり処理系のインタフェースがあった方がいいなぁと以前から思っておりまして。

ということで、インタフェースのとこだけマイナーモードで実装してみました。やってみたら結構あっさりとできてしまったり。(というか、一部shell.lに丸投げ)
ちなみに、現在のところ

C-c l ... GHCi起動、ファイルをロード
C-c q ... GHCi終了

です。
インデント部分はhs-modeにお任せで(というか、何でもいいんですが)(5/1一部修正)

;;; hs-mode + ghci-mode
(autoload 'editor::hs-mode "hs-mode" t)
(autoload 'editor::ghci-mode "ghci" t)
(push '("\\.hs$" . (lambda ()
		     (editor::hs-mode)
		     (editor::ghci-mode))) *auto-mode-alist*)

.xyzzyにこんな感じに書いとくと、.hs なHaskellのソースで hs-mode と ghci-mode が両方同時に起動できます。

もう少し手直しして、そのうちパッケージ化しようかとも思いますが、とりあえずソース直置き※テンポラリなので、そのうちリンクはなくなります。
動作の保証や、これに伴って発生するいかなる問題も責任取りませんのでよろしく。


…つーか、明日は朝から圏論勉強会なのに、どうすんだろう。困った。




5/1追記:一行書き換えたらまんまhugsでも使えましたw たぶん、ちょいちょいと書き換えたらocamlでもいけるでしょう。
まぁ、所詮はそんだけユルい(中身の薄い)もんだということですかな。その辺割り切って、インタプリタの窓用再利用フレームワークとして育てようかしらん。誰が使うのかは謎ですが。

注:bonotakeは、amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、 Amazonアソシエイト・プログラムの参加者です。