Next: 同時編集からの保護, Previous: バックアップファイル, Up: ファイルの保存 [Contents][Index]
変数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-save
をt
にカスタマイズしてください。
通常プログラムがファイルに書き込むとき、オペレーティングシステムはデータをディスクにコミットする前に、ファイルのデータをメインメモリーにキャッシュします。これにより大幅にパフォーマンスを向上できます。たとえばラップトップを使っている場合、ファイルを書き込む度にディスクをスピンアップ(spin-up)しなくて済みます。しかし、キャッシュをディスクにコミットする前にオペレーティングシステムがクラッシュすることにより、データを失うリスクもあります。
このリスクを減少させるため、Emacsはファイルを保存した後にfsync
システムコールを呼び出すことができます。fsync
により、データを失うリスクを皆無にすることはできません。その理由の一部は、多くのシステムはfsync
を正しく実装していないことであり、他の理由の一部はEmacsのファイル保存手段は通常ディレクトリー更新に頼っており、これはfsync
が正しく実装されていても、クラッシュを生き延びることはできないでしょう。
write-region-inhibit-fsync
変数は、ファイルを保存した後にEmacsがfsync
を呼び出すかを制御します。この変数のデフォルト値は、Emacsを対話的に使用しているときはnil
、バッチモードの時はt
です(Batch Modeを参照)。
Emacsは自動保存ファイルの書き込みにfsync
を使うことはありません。なぜなら、それらのファイルのデータは、いずれにせよ失われるものだからです。