Next: , Previous: , Up: ファイルの保存   [Contents][Index]


20.3.3 ファイル保存のカスタマイズ

変数require-final-newlineの値がtのとき、ファイルの保存または書き込みにより、ファイルの終端に改行がないときは、何も尋ねずに改行を追加します。値がvisitの場合、Emacsはファイルをvisitした直後に、終端に改行がないファイルの改行を追加します(これによりバッファーは変更されたとマークされます。undoはできません)。値がvisit-saveの場合、Emacsはそのような改行をvisitと保存のときに追加します。値がnilの場合、Emacsはファイルの終端を変更しません。それ以外の非nil値は、改行を追加するかをEmacsが尋ねることを意味します。デフォルトはnilです。

ファイルの終端に常に改行があると想定する、特定の種類のファイルのためにデザインされたメジャーモードがいくつかあります。そのようなメジャーモードは、変数require-final-newlineに、変数mode-require-final-newlineの値(デフォルトはt)をセットします。後者の変数の値をセットすることにより、これらのモードが終端の改行を取り扱う方法を制御できます。

このオプションが非nilでシンボリックリンクを介してファイルをvisitすると、バッファー保持時にlEmacsはシンボリックリンクを解除して、file-precious-flagの値が非nilなら、そのシンボリックリンクと同じ名前のファイルにバッファーを書き込みます(file-precious-flag in The Emacs Lisp Reference Manualを参照)。シンボリックリンクが指すファイルにバッファーを保存させる(リンクを維持させる)には、変数file-preserve-symlinks-on-savetにカスタマイズしてください。

プログラムがファイルに書き込むとき、オペレーティングシステムはデータを補助記憶装置にコミットする前に、ファイルのデータを一時的にメインメモリーにキャッシュします。これにより大幅にパフォーマンスを向上するかもしれないとはいえ、キャッシュのコミット前にシステムの電源が喪失するとデータを失う危険があり、一部のシステムでは他のプロセスがファイルの変更にすぐに気づかないかもしれません。

このリスクを減少させるため、Emacsはファイルを保存した後にfsyncシステムコールを呼び出すことができます。fsyncにより、データ喪失や遅い通知というリスクを皆無にすることはできません。その理由の一部は、多くのシステムはfsyncを正しくサポートしていないことであり、他の理由の一部はEmacsのファイル保存手段は通常ディレクトリー更新に頼っており、これはfsyncが正しく実装されていても、クラッシュを生き延びることはできないでしょう。

write-region-inhibit-fsync変数は、ファイルを保存した後にEmacsがfsyncを呼び出すかを制御します。この変数のデフォルト値はtです。

Emacsは自動保存ファイルの書き込みにfsyncを使うことはありません。なぜなら、それらのファイルのデータは、いずれにせよ失われるものだからです。

This page has generated for branch:emacs-30, commit:ab5505a8acf795c0a0a2745dd6fb666954c6a4bb to check Japanese translation.