GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/elisp/Making-Backups.html ・ emacs-doc.conao3.com

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

関数: backup-buffer

この関数は、必要に応じて現在のバッファが参照しているファイルのバックアップを作成します。バッファを初めて保存する前に、save-buffer によって呼び出されます。

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

それ以外の場合(すなわち、コピーによってバックアップが作成された場合、またはバックアップが作成されなかった場合)、この関数は nil を返します。

変数: buffer-backed-up

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

ユーザーオプション: make-backup-files

この変数は、バックアップファイルを作成するかどうかを決定します。値が nil 以外の場合、Emacs は各ファイルを初めて保存する際にバックアップを作成します—ただし、backup-inhibited が nil である場合に限ります(後述)。

以下の例では、Rmailバッファ内でのみmake-backup-files変数を変更し、それ以外の場所では変更しない方法を示します。これをnilに設定すると、Emacsがこれらのファイルのバックアップを作成しなくなるため、ディスク容量を節約できる場合があります。(このコードはinitファイルに記述します。)

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

この変数の値は、ファイルにバックアップファイルを作成すべきかどうかを判断するために、特定のタイミングで呼び出される関数です。この関数は、判定対象となる絶対ファイル名を1つの引数として受け取ります。関数が nil を返した場合、そのファイルのバックアップは無効になります。それ以外の場合は、本セクションの他の変数で、バックアップを作成するか否か、およびその方法が規定されています。

デフォルト値は normal-backup-enable-predicate で、temporary-file-directory と small-temporary-file-directory 内のファイルを確認します。

変数: backup-inhibited

この変数が non-nil の場合、バックアップは抑制されます。この変数には、アクセスしたファイル名に対して backup-enable-predicate をテストした結果が記録されます。また、どのファイルにアクセスしたかに基づいてバックアップを抑制する他のメカニズムにおいても、一貫して利用することが可能です。例えば、VC はこの変数を non-nil に設定することで、バージョン管理システムで管理されているファイルのバックアップ作成を防止します。

これは永続的なローカル変数であるため、メジャーモードを変更してもその値が失われることはありません。メジャーモードはこの変数を設定すべきではなく、代わりに make-backup-files を設定するべきです。

ユーザーオプション: backup-directory-alist

この変数の値は、ファイル名パターンとバックアップディレクトリのalistです。各要素は以下のようになっています。

(regexp . directory)

regexp に一致するファイル名のファイルのバックアップは、directory に作成されます。directory は相対パスまたは絶対パスを指定できます。絶対パスを指定し、一致するすべてのファイルを同一ディレクトリにバックアップする場合、そのディレクトリ内のファイル名は、競合を防ぐため、すべてのディレクトリ区切り文字を ‘!’ に置き換えたバックアップファイルのフルネームになります。ファイルシステムが結果として得られたファイル名を切り捨てる場合、この動作は正しく機能しません。

すべてのバックアップを一つのディレクトリに格納するという一般的なケースでは、alistには‘"."’と適切なディレクトリを対応させた単一の要素が含まれている必要があります。

この変数が nil(デフォルト)であるか、あるいはファイル名と一致しない場合、バックアップは元のファイルのディレクトリに作成されます。

ロングファイル名に対応していないMS-DOSファイルシステムでは、この変数は常に無視されます。

ユーザーオプション: make-backup-file-name-function

この変数の値は、バックアップファイル名の作成に使用する関数です。関数 make-backup-file-name がこの変数を呼び出します。バックアップファイル名の命名 を参照してください。

これは、特定のファイルに対して特別な処理を行うためのバッファローカル変数かもしれません。変更する場合は、backup-file-name-p と file-name-sans-versions も併せて変更する必要があるかもしれません。