Next: , Up: Backup Files   [Contents][Index]


25.1.1 Making Backup Files

Function: backup-buffer

この関数は、もしそれが適切であれば、カレントバッファーにvisitされているファイルのバックアップを作成する。これは、最初のバッファー保存を行う前に、save-bufferにより呼び出される。

リネームによりバックアップが作成された場合、リターン値は(modes extra-alist backupname)という形式のコンスセルである。ここでmodesは、file-modes(Testing Accessibilityを参照)でリターンされるような元ファイルのモードビット、extra-alistfile-extended-attributes(Extended Attributesを参照)によりリターンされるような元ファイルの拡張属性を示すalist、そしてbackupnameはバックアップの名前である。

他のすべての場合(コピーによりバックアップが作成された、またはバックアップが作成されなかった)、この関数はnilをリターンする。

Variable: buffer-backed-up

このバッファーローカル変数は、そのバッファーのファイルがバッファーによりバックアップされたかどうかを明示する。非nilの場合、バックアップファイルは書き込み済みであり、それ以外では、(バックアップが有効なら)次回保存時にファイルはバックアップされる。この変数は永続的にローカルであり、kill-all-local-variablesはそれを変更しない。

User Option: make-backup-files

この変数は、バックアップファイルを作成するかどうかを決定する。非nilの場合、Emacsは初回保存時にすべてのファイルのバックアップを作成する — ただしbackup-inhibitednilの場合(以下参照)。

以下の例は、Rmailバッファーだけで変数make-backup-filesを変更して、それ以外では変更しない方法を示す。この変数をnilにセットすると、Emacsはそれらのファイルのバックアップ作成をストップし、それはディスク容量の消費を節約するだろう(あなたは、このコードをinitファイルに配置したいと思うかもしれない)。

(add-hook 'rmail-mode-hook
          (lambda () (setq-local make-backup-files nil)))
Variable: backup-enable-predicate

この変数の値は、あるファイルがバックアップファイルをもつべきかどうかを決定する、特定の機会に呼び出される関数である。関数は、判断すべき絶対ファイル名という、1つの引数を受け取る。この関数がnilをリターンした場合、そのファイルにたいするバックアップは無効になる。それ以外では、このセクション内の他の変数がバックアップ作成の是非と方法を指定する。

デフォルト値はnormal-backup-enable-predicateで、これはtemporary-file-directorysmall-temporary-file-directory内のファイルをチェックする。

Variable: backup-inhibited

この変数が非nilの場合、バックアップは抑止される。これは、visitされているファイル名にたいするbackup-enable-predicateのテスト結果を記録する。さらに、visitされているファイルにたいするバックアップ抑止にもとづくその他機構によっても、使用され得る。たとえば、VCはバージョンコントロールシステムに管理されるファイルのバックアップを防ぐために、この変数を非nilにセットする。

これは永続的にローカルなので、メジャーモード変更により値は失われない。メジャーモードはこの変数ではなく、かわりにmake-backup-filesをセットするべきである。

User Option: backup-directory-alist

この変数の値は、ファイル名パターンとバックアップディレクトリー名のalistである。各要素は以下の形式をもつ

(regexp . directory)

名前がregexpにマッチするファイルのバックアップが、directory内に作成されるだろう。directoryには相対ディレクトリー、または絶対ディレクトリーを指定できる。絶対ディレクトリーの場合は、マッチするすべてのファイルが同じディレクトリー内にバックアップされる。このディレクトリー内でのファイル名は、クラッシュを避けるために、バックアップされるファイルの完全名のすべてのディレクトリー区切りは、‘!’に変更される。結果の名前を切り詰めるファイルシステムでは、これは正しく機能しないだろう。

すべてのバックアップが単一のディレクトリーで行われる一般的なケースでは、alistは‘"."’と適切なディレクトリーからなるペアーの、単一の要素を含むべきである。

この変数がnil(デフォルト)、またはファイル名のマッチに失敗した場合、バックアップは元のファイルのディレクトリーに作成される。

長いファイル名のないMS-DOSファイルシステムでは、この変数は常に無視される。

User Option: make-backup-file-name-function

この変数の値は、バックアップファイル名を作成する関数である。関数make-backup-file-nameは、これを呼び出す。Naming Backup Filesを参照のこと。

特定のファイルにたいして特別なことを行うために、これをバッファーローカルにすることもできる。変更する場合は、backup-file-name-pfile-name-sans-versionsも変更する必要があるかもしれない。