scheme-macro-expand-command for Gauche

Emacs 上で Inferior Scheme モードを使って開発している場合、以下の設定を行うと、Emacs のキー操作のみでマクロ展開された結果を簡単に参照できて便利です。設定も簡単ですが何故かGoogle で一切検索にヒットしないので、メモしておきます。

設定

Scheme モードでは、デフォルトで C-c C-x に scheme-expand-current-form というものが定義されています。デフォルトでは scheme48 用の設定になっていますが、cmuscheme.el はカスタマイズ可能な変数 scheme-macro-expand-command を提供してくれています。

;; .emacs などに以下を記載
(setq scheme-macro-expand-command "(macroexpand (quote %s))")

これで、Emacs のバッファ上で C-c C-x を入力するとマクロ展開された結果が出力されます。

  • このままでは改行無しの一行のS式で出力されるためあまり見やすくありません。整形して出力するための pretty print などと組み合わせるとよいかもしれません。
  • scheme-expand-current-form は、EmacsScheme 間で情報をやりとりする典型として使えると思います。
  • *scheme* バッファの(current-module)とソースのmoduleは一致している必要があるかもしれません。

前提

  • Emacs 22.1.1 および、同梱されている cmuscheme.el
  • Gauche(0.8.14)