最近思いついたEmacs Tips

どれも日頃のEmacsの不便を少し解消できるはず。

現在のバッファをanythingの選択バッファを出さずに消したい

(defun my-kill-current-buffer
  (interactive)
  (kill-buffer (current-buffer)))
;;"Ctrl + Alt + k"
(define-key global-map (kbd "C-M-k") 'my-kill-current-buffer)

anythingを使っているので少し環境は違いますが便利です。
これはバッファの状態がmodified*1ならキルするかどうかの質問が出ます。
キー操作は"Ctrl + Alt + k"

現在のバッファをanythingの選択バッファを出さず消す、かつ、バッファの状態がmodifiedであるかにかかわらず強制的に消したい。

(defun my-force-kill-current-buffer
  (interactive)
  (set-buffer-modified-p nil)
  (kill-buffer (current-buffer)))
;;"Ctrl + Alt + Shift + k"
(define-key global-map (kbd "C-M-S-k") 'my-force-kill-current-buffer) 

これは使うときかなり気をつけて使わないといけない関数ですが、とにかくバッファを消したい時に便利です。

auto-installの *auto-install http~*-wget のバッファを消したい

(require 'cl)
(defun my-erase-auto-install-buffer ()
  ;;(interactive)
  (dolist (buf (buffer-list))
    (if (eq (string-match "^\\*auto-install " (buffer-name buf)) 0)
        (progn
	   ;; (print "ok")
	   (kill-buffer buf)))))
;;実行する
(my-erase-auto-install-buffer)

init.elのファイルにコピペしておいて、実行するようにしておいたら*auto-installうんたらかんたらなバッファが消えてるのでそれなりに便利です。この関数の(interactive)を有効にしておけば必要なときにM-x my-erase-auto-install-bufferで呼び出せます。

終わりに

define-key関数で設定しているキーバインドは自分のキーバインドなので気に入らない場合は適当に変えてください。

*1:変更が加えられた状態。1文字でも入力したらmodifiedの状態になります。