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


27.1.1 バックアップファイルの作成

Function: backup-buffer

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

リネームによりバックアップが作成されると、リターン値は(modes extra-alist backupname)という形式のコンスセルになる。ここでmodesfile-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を変更する必要もあるかもしれない。