Re: Outputz を Growl で表示し隊。
エロい人達のコメントを待ってまーす。
http://d.hatena.ne.jp/tomoya/20081216/1229378861
やった。「エロい人」なら答えられる :)
outputz.el に手を入れないで、同じようなことをするコードを書いてみました。
(when (executable-find "growlnotify") (add-hook 'outputz-mode-hook (lambda () (set (make-local-variable 'outputz-latest-count) 0))) (defun growlnotify (str) (shell-command (format "growlnotify -m %s" str))) (defun growlnotify-outputz (&optional count) (interactive) (growlnotify (format "Emacs: You are %s bytes Outputz!!!!!!" (or count outputz-latest-count)))) (defadvice outputz-post (after growl-outputz (count) activate) (growlnotify-outputz (setq outputz-latest-count count))))
いろいろやってます。
executable-find
まず executable-find で growlnotify を探します。見付かったら...
outputz-latest-count
バッファローカル変数 outputz-latest-count を定義するよう定義。初期値は 0 にしておきます。
growlnotify
関数 growlnotify を定義。
growlnotify(1) の、ごく単純なラッパです。
growlnotify-outputz
関数 growlnotify-outputz を定義。
- 引数 count が渡されたらその数値を
- 渡されなかったら outputz-latest-count を
format して growlnotify に渡します。
growl-outputz
みんな大好き defadvice. outputz-post に対し アドバイス growl-outputz を定義します。
outputz-post が呼ばれた後 growlnotify-outputz へ数値を渡します。
ところでぼくは chord を導入していないので試していませんが、 id:tomoya さんのこれもそのまま動くはず……です。
(key-chord-define-global "op" 'growlnotify-outputz)http://d.hatena.ne.jp/tomoya/20081216/1229378861
というわけで今回も defadvice の布教でした。
既存のコードをに手を加えずに機能を追加できるのって素敵ですね :)
*1: そう setq は束縛した値を返すのです ;)