GNU Emacs拡張ガイドを読み直す

最近 Emacs Lisp を久しぶりにいくつか書き始めて、そういえばきちんとEmacs Lispの勉強をしたのってEmacs Lispプログラミング入門以来ないなあ、と反省。

と思ったら、なんとなく買って余りきちんと読んでいない本を本棚から発見。
しおりがページの半分位に挟まっていたので少しは読んだのだろうけど余り記憶が無い・・・。

Amazon.co.jp: GNU Emacs拡張ガイド―Emacs Lispプログラミング: ボブ グリックステイン, Bob Glickstein, 榎並 嗣智: 本

今になって読み返してみるととても貴重な情報が分かりやすくまとめられていて感動!まだ2章までしか読んでいませんが、最終的にはモードの作成(しかもクロスワードだとか・・・)を作る所まで進むらしい。

備忘録的に2章までで勉強になったものを網羅してみる。

  1. "help + b" で describe-bindings(キーバインディングの表示)
  2. クオートのニュアンス(↓別記)
  3. prognの意味。if文など基本的に一つの式しか渡せない場合にprognで複数のコマンドをまとめることが出来る。要はC言語でいえばただの'{}'なのね。
  4. defadviceの意味。各関数の前や後に対してコールバックを渡せる。でもその関数名自体は変わらない所がすごい(こういう機能ってCやC++でもよく欲しいと感じる、特にソースの公開されていないライブラリ等の機能にパッチを当てたい時等)。
; クオートのニュアンス
(setq x 'help)            ; こっちはクオート付けないと駄目、xに束縛したいのはhelpというシンボル(って言い方でいいんだっけ?)であってhelp関数の中身ではない
(global-set-key "\M-?" x) ; こっちはクオート付けてはいけない、global-set-keyに渡したいのはxの中身である'helpであってxでは無い

少しずつ読み進めようと思います。

※ Amazonでは絶版になっていて残念です。