M-x occur でのデフォルトをカーソル下の単語に

どうもりんこです。
少し寝て,おとんのプリンタ周りのサポートをして,あぁ一仕事終えたなと
今日も頑張った感のある(うそつけ!) whitypig さんです。

M-x occur をよく使います

私は,`C-c o' に割り当ててます。
しかし,正規表現で検索することはまれで,基本,カーソル下の単語を調べることが
多いです。
なので,デフォルトは,カーソル下の単語があればそれになってほしい次第。
ググったら,
http://www.mail-archive.com/emacs-devel@gnu.org/msg08959.html
を見つけた。後半はあまり読んでないですが,最初の方を,引用します。

Richard M. Stallman
Mon, 29 Aug 2005 02:27:11 -0700

    The command `occur' currently uses the last item in the regexp history
    as the default value.

Please do not change that.
Peopel are accustomed to just typing RET to search
for the same thing again.

ほう。
なるほど,一理あるっちゃーあるか。
なので,ソースに手を加えるのはまずいという。

そこで advice ですよ。

書いてみました。
occur は,default を,(car regexp-history) にしているようです。
なので,おなじみの,let de kurunde やってみました。
regexp-history を汚さない方がいいかなと思ったので,
汚さないように気をつけてみました。

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; M-x occur で,(word-at-point) があればそれをデフォルトにする。
;; regexp-history は汚れないはず。
(defadvice occur-read-primary-args (around my-occur-read-primary-args-around-ad)
  (let* ((w (word-at-point))
         (regexp-history (if w (cons w regexp-history) regexp-history)))
    ad-do-it))

(ad-activate 'occur-read-primary-args)
;; 無効化
;(ad-deactivate 'occur-read-primary-args)
;; 削除
;(ad-remove-advice 'occur-read-primary-args 'before 'my-occur-read-primary-args-around-ad)

どうなんだ?

これで,word-at-point を検索した後,
次に検索するときに履歴が残らないのだが,いいのかな?
汚さないからいいちゃーいいかもしれんが。


なんにせよ,これでかなり快適な occur ライフを送れるようになったはず。
あとは,imenu の件だ。未だに解決せず。orz