はじめに
grepコマンドを実行した時に、*grep*バッファが1つしか生成されず、既存の*grep*バッファが上書きされるのはコードリーディング時には非常に不便。
なので、バッファ名をリネームするアドバイスを.emacs.elに追加した。
.emacs.el
.emacs.el
;;; .emacs.elの末尾に追加
;; grep実施時に複数のバッファで開けるよう設定
(defadvice grep (after my-grep activate) ;; grep実施後に実行
(let ((grep-buffer (get-buffer "*grep*"))) ;; *grep*バッファをローカル変数に代入
(set-buffer grep-buffer) ;; カレントバッファを*grep*バッファに設定
(rename-buffer (concat "*grep*" "<\"" (ad-get-arg 0) "\">" ) t) ;; バッファ名をリネームする
)
)
grep -nH -e "hoge" "*.el"
を実行した時の生成されるバッファ名は下記のようになる。
*grep*<"grep -nH -e "hoge" "*.el">
これで複数のgrepバッファを生成することが可能となった。
個人的につまづいたところ
久しぶりにelispを触ったので忘れていたが、letでローカル変数を定義する場合はローカル変数が1つでも()が2つ必要であった。
今後も注意したい。
*scratch*
;; ローカル変数1つの場合
(let ((hoge 1))
(+ hoge 2)
)
;; ローカル変数2つの場合
(let ((hoge 1)
(piyo 2))
(+ hoge piyo)
)