変数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
にカスタマイズしてください。
プログラムがファイルに書き込むとき、オペレーティングシステムはデータを補助記憶装置にコミットする前に、ファイルのデータを一時的にメインメモリーにキャッシュします。これにより大幅にパフォーマンスを向上するかもしれないとはいえ、キャッシュのコミット前にシステムの電源が喪失するとデータを失う危険があり、一部のシステムでは他のプロセスがファイルの変更にすぐに気づかないかもしれません。
このリスクを減少させるため、Emacsはファイルを保存した後にfsync
システムコールを呼び出すことができます。fsync
により、データ喪失や遅い通知というリスクを皆無にすることはできません。その理由の一部は、多くのシステムはfsync
を正しくサポートしていないことであり、他の理由の一部はEmacsのファイル保存手段は通常ディレクトリー更新に頼っており、これはfsync
が正しく実装されていても、クラッシュを生き延びることはできないでしょう。
write-region-inhibit-fsync
変数は、ファイルを保存した後にEmacsがfsync
を呼び出すかを制御します。この変数のデフォルト値はt
です。
Emacsは自動保存ファイルの書き込みにfsync
を使うことはありません。なぜなら、それらのファイルのデータは、いずれにせよ失われるものだからです。