xyzzyでprolog-mode
prolog-mode.l ver.0.0.8
コメント
xyzzyでprolog-modeを探したけれど、良いのがない。そしてlispをいい加減覚えようとも思った。なのでprolog-modeを作ってみた。ただし、lispを覚えるために作ったので、ソースコードそのものは全く参考にならないとだけ言い訳しておきます。きっちり作ろうと思ったのだけれど、prologを構文解析するのが面倒くさくなって、かなりアドホックな固まりになってしまってます。インデンテイションって奥が深いなぁ。気が向いたらバージョンアップする。
使い方
- ファイルの先頭に書いてるから、それ見て欲しい。簡単には、
(import '(ed::*prolog-indent-width* ed::*prolog-paren-complement* ed::*prolog-strict-indentation*)) ;(setf *prolog-indent-width* 3) ; インデント幅 ;(setf *prolog-paren-complement* t) ; 括弧の自動補完 (t/nil) ;(setf *prolog-strict-indentation* nil) ; 括弧のインデントの基準をネスト数か直前の括弧 (t/nil) (require "prolog/prolog-mode") ; site-lisp/置いたフォルダ名/ファイル名(拡張子無し) (pushnew '("\\.pl$" . prolog-mode) *auto-mode-alist*)
-
- 後はplファイルを読み込んでください。※拡張子plはPerlに関連づけされている場合があるので、それを回避するには適当に「'("\\.pl$"」部分を変更してください。
できること
- 改行でそれなりにオートインデント
- C-c >/<で、マーク範囲をコメントアウト/アンコメントアウト。マークがない場合は現在行をコメントアウト/アンコメントアウト。
- 簡単な色つけ機能。
- TABでオートインデント
- マルチラインコメントリージョンでは基本1インデントし,それ以後は前行のインデント幅でインデント
- 無コンパイル状態で1000行を、C-F8(全行インデント)で約98秒@2.6GHz。コンパイルすると10秒ぐらいになる。結構きっちり検査してるので、遅い方ではない気がする。
できないこと
既知のバグ
- (修正済み)小数のドットが、節の終了ドットと勘違いする模様
xyzzyのlisp programを作っていて気がついたこと
xyzzyでlispをいじろうと思い始めた人は気をつけると良いかも。
====追記
2017/07/25: ファイルのリンクが切れていたので設定し直しました。