scratch バッファをファイルにする拡張

scratch バッファを保存するために作りました.

ghost-scratch.el

zip
repository
自動保存系の機能はひと通り揃っています.

  1. 起動時に scratch を復元(モード,ポイント,文字コードを含む)
  2. scratch での kill-buffer を抑制
  3. 終了時に scratch を自動保存
  4. タイマーで一定時間ごとに scratch を保存(Emacs 付属の auto save とは違う)
  5. vc-mode を使ってヴァージョン管理

必要要件

GNU Emacs 23

commit の自動化

  1. ghost-scratch-directory で指定したディレクトリを単一のリポジトリとしている
  2. vc-mode が認識出来る vcs を使っている
  3. first commit は手動で行っている

以上の条件を満たす場合には commit を自動化出来ます(動作確認は git と mercurial で行っています).

以下,git での設定例です.

  1. ghost-scratch.elをインストールする
  2. Emacsを起動し,ghost-scratch-directory の値を確認したあと Emacs を終了
  3. ターミナルを開き,first commit まで実行
$ cd /path/to/scratch.d/
$ ls
config  scratch
$ git init
$ git add scratch
$ git commit -m 'first commit'

以後,Emacs 終了時に scratch に変更があれば,自動で commit するようになります.
commit comment は diff バッファからそれっぽいものを拾ってきますが,日本語はトラブルが多いので省略されるようになっています.

設定例

不具合

session 系パッケージのリストに scratch のパスが含まれてしまう

リストから除外するファイルを指定するような変数がパッケージごとに用意されているはずなので,それを使ってください.

Emacs を複数起動させたときに警告が出る

ファイルがロックされているだとか,revert が云々といった警告のことです.ほっといたほうが良いのかもしれませんが,スマートな対処方法がわかったらここに追記するかソースに反映させるかします.