エディタのマクロ

以前にどこかで書いたかもしれないが、Monaの開発ではMeadow2というemacs系のエディタを使用している。
皆さんもご存知の通りemacsは有名なエディタで、Emacs Lispとかいう仕組みを使って色々と拡張が可能である。また秀丸も、マクロ機能が用意されている。


最近気づいたのだが、プログラムを書いているときにとりあえずのデバッグとして構造体メンバや、変数をprintfで表示することがよくある。(自分的に多いというだけかもしれないが)

printf("%d\n", hige->higeValue5);

構造体のメンバを列挙して表示したい場合は、↑みたいなのをたくさん書かなきゃいけないのである。


そこで今日思いついた。よく使うんだからマクロにしてしまえばよい!!
でもEmacs Lispはよく分からない・・・。
ということで、マクロの記録と再生を使うことにした。

  • マクロ記録開始 c-x (
  • 記録終了 c-x )
  • マクロ再生 c-x e
  • マクロ命名 m-x name-kbd-macro
  • ファイル書き出し m-x insert-kbd-macro

出来上がったのがこれ

(fset 'myprintf
   [?p ?r ?i ?n ?t ?f ?( ?" ?\C-  ?\C-e ?\M-w ?= ?% ?d ?\\ ?n ?" ?, ?  ?\C-y ?) ?\; ?\C-r ?p ?r ?i ?n ?t ?f left right down])

(global-set-key "\M-z" 'myprintf)


こいつは

  • mbr.partitionTable[0].bootDescriptor

の先頭の mにカーソルを合わせた状態で M-zとすると

  • printf("buf.partitionTable[0].bootDescriptor=%d\n", mbr.partitionTable[0].bootDescriptor);

と変えてくれるマクロなのだ。


このマクロは別にすごくなくて個人的に便利なだけなのでこれ以上あまり詳しく突っ込みませんが。


「きっと他にもマクロ化すればすごく楽になるエディタ作業があるだろうなぁ」という発見を皆様にも届けたかった次第です。


PCに向かってキーボードをカタカタと叩いているとなんとなく
頭を使っているような錯覚に陥りますが、その打鍵のほとんどがマクロ化できるかもしれませんよ。(´ヘ`;)