🔖

Lem Advent Calendar 2023 - Lisp Mode - print debug編

2023/12/12に公開

これは Lem Advent Calendar の記事です。

LemではmicrosというリポジトリをSLIMEからフォークして開発していることを以前、紹介しました。
今回は、そのmicrosに新しく追加した機能について紹介していきます。

Featurs

micors:micros-print

コードをデバッグしているとき、扱っているオブジェクトをprintすることがあるかと思います。
そのときREPLに表示されたオブジェクトの中身を確認したい事があります。

この方法として、setq等を使ってグローバル変数に保持してから、REPLで操作している人もいるかもしれません。

(defun doit (object)
  ...
  (setq $ object)
  ...)

上記の方法の代わりにエディタが、printしてREPLに表示されたオブジェクトを直接選択してinspectする機能を提供すると便利なのではないでしょうか?

Lemではmicros:micros-printという関数を使うとそれが可能です。

REPLで変数を介して扱いたい場合は、表示されたオブジェクト上でM-Returnを押下することで*に束縛できます。

trace

上記の機能を流用して、traceの結果にも使えるようにしました。


trace対象の関数はC-c C-t (M-x micros-trace)コマンドで設定できます。

micros:watch

print debugによる値を、REPLではなくソースコード上に直接表示したい事もあるかと思います。
micros:watchを使うと、printの結果をソースコード上に表示することが出来ます。

おわりに

今回はmicrosで新しく追加したprint debug用の機能について紹介しました。
次回はコードウォーカーについてです。

Discussion