unkillable-scratch 20160504.1903(in MELPA)
Disallow buffers from being killed by regexp -- default is *scratch* buffer

概要

バッファを誤って削除してしまうことってありますよね?

特に特定のバッファを誤削除から守るマイナーモードが
M-x unkillable-scratch です。

名前からして*scratch*バッファ限定と思われがちですが、
保護対象のバッファ名の正規表現リスト unkillable-buffers
を指定すれば任意のバッファに適用できます。

開くのに時間がかかる巨大なファイルに対して使うのもいいです。

*scratch*については特別扱いされていて、
*scratch*を削除しようとしたら、
現在の*scratch*の内容がクリアされます。

unkillable-buffers に指定されたバッファを削除しようとしたとき、
デフォルトでは何もしませんが、 unkillable-scratch-behavior
buryに指定すれば bury-buffer が実行されます。

そのとき、見かけ上はそのバッファが削除されたようですが、
実は buffer-list の最後尾に回されるだけで選択しづらくなるだけです。

マイナーモードとして実装されていますが、
単に kill-buffer-query-functions を設定しているだけです。

*scratch*バッファを削除不能にするelispは他にも
scratch-log.el(レビュー) があり、それはさらに
*scratch*の内容を記録し、再起動時に復元までします。

*scratch*バッファを選択しやすくする scratch-pop.el(レビュー)
も便利でしょう。

インストール

パッケージシステムを初めて使う人は
以下の設定を ~/.emacs.d/init.el の
先頭に加えてください。

(package-initialize)
(setq package-archives
      '(("gnu" . "http://elpa.gnu.org/packages/")
        ("melpa" . "http://melpa.org/packages/")
        ("org" . "http://orgmode.org/elpa/")))

初めてunkillable-scratchを使う方は
以下のコマンドを実行します。

M-x package-install unkillable-scratch

アップグレードする方は、
以下のコマンドでアップグレードしてください。
そのためにはpackage-utilsパッケージが必要です。

M-x package-install package-utils (初めてアップグレードする場合のみ)
M-x package-utils-upgrade-by-name unkillable-scratch

設定 150322075829.unkillable-scratch.el(以下のコードと同一)

;;; デフォルトでは何もしない
;;; buryを指定すればバッファリストの最後尾に回される
(setq unkillable-scratch-behavior 'do-nothing)
;;; 保護対象のバッファの正規表現リスト
(setq unkillable-buffers
      '("^\\*scratch\\*$"))
(unkillable-scratch 1)

実行方法

$ wget http://rubikitch.com/f/150322075829.unkillable-scratch.el
$ emacs -Q -f package-initialize -l 150322075829.unkillable-scratch.el

本サイト内の関連パッケージ


本日もお読みいただき、ありがとうございました。参考になれば嬉しいです。