あどけない話

インターネットに関する技術的な話など

Emacs の C で書かれた部分を観察する

Emacs には、C で書かれた部分と、Emacs Lisp で書かれた部分があります。

Emacs Lisp の部分の挙動を観察しようと思ったら、Lisp というぐらいでとっても簡単です。たとえば、x という変数の値が知りたいなら、(message "DEBUG: x = %d" x) を追加すればいいでしょう。また、デバッガを使ってもいいですね。方法はいくらでもあります。

しかし C の部分では、Emacs のコーディング流儀を知らないと、うまくはいきません。以前、そういう流儀に詳しかったのですが、最近は忘れていて、思い出すのに時間がかかったので、忘れないように書いておきます。

(message "DEBUG: x = %d" x) と同じことをやるには、こういうコードを書き加えます。

  {
    Lisp_Object args[2];
    args[0] = build_string("DEBUG: %d");
    args[1] = make_number(x);
    Fmessage(2, args);
  }