@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995 Free Software Foundation, Inc. 
@c See the file elisp.texi for copying conditions.
@setfilename ../info/backups
@node Backups and Auto-Saving, Buffers, Files, Top
@c @chapter Backups and Auto-Saving
@chapter バックアップと自動保存

@c   Backup files and auto-save files are two methods by which Emacs tries
@c to protect the user from the consequences of crashes or of the user's
@c own errors.  Auto-saving preserves the text from earlier in the current
@c editing session; backup files preserve file contents prior to the
@c current session.
バックアップファイルと自動保存ファイルは、
クラッシュやユーザー自身の誤りから
Emacsがユーザーを保護するための2つの方式です。
自動保存により、現在の編集セッションにおいて、
まえの時点でのテキストを確保します。
バックアップファイルにより、現在のセッション以前の
ファイル内容を確保します。

@menu
* Backup Files::   How backup files are made; how their names are chosen.
* Auto-Saving::    How auto-save files are made; how their names are chosen.
* Reverting::      @code{revert-buffer}, and how to customize what it does.
@end menu

@node Backup Files, Auto-Saving, Backups and Auto-Saving, Backups and Auto-Saving
@c @section Backup Files
@section バックアップファイル
@c @cindex backup file
@cindex バックアップファイル

@c   A @dfn{backup file} is a copy of the old contents of a file you are
@c editing.  Emacs makes a backup file the first time you save a buffer
@c into its visited file.  Normally, this means that the backup file
@c contains the contents of the file as it was before the current editing
@c session.  The contents of the backup file normally remain unchanged once
@c it exists.
@dfn{バックアップファイル}（backup file）とは、
読者が編集中のファイルの古い内容のコピーです。
バッファを訪問しているファイルに初めて保存するときに、
Emacsはバックアップファイルを作成します。
通常これは、バックアップファイルは
現在の編集セッションよりまえのファイルの内容を保持することを意味します。
バックアップファイルの内容は、通常、それが作られると変更されません。

@c   Backups are usually made by renaming the visited file to a new name.
@c Optionally, you can specify that backup files should be made by copying
@c the visited file.  This choice makes a difference for files with
@c multiple names; it also can affect whether the edited file remains owned
@c by the original owner or becomes owned by the user editing it.
訪問したファイルを新たな名前に改名することで
通常バックアップは作られます。
訪問したファイルをコピーしてバックアップファイルを作るように
指示することもできます。
どちらを選ぶかによって、複数の名前を持つファイルでは違いがでます。
また、編集したファイルの所有者が元所有者と同じであるか、
それとも編集したユーザーが所有者になるかにも影響します。

@c   By default, Emacs makes a single backup file for each file edited.
@c You can alternatively request numbered backups; then each new backup
@c file gets a new name.  You can delete old numbered backups when you
@c don't want them any more, or Emacs can delete them automatically.
デフォルトでは、Emacsは各編集ファイルに1つのバックアップファイルを作ります。
番号付きのバックアップファイルを作るように指示することもでき、
そうすると、新たなバックアップファイルごとに新たな名前が付きます。
古い番号付きバックアップファイルは必要なくなれば削除できますし、
Emacsがそれらを自動的に削除することも可能です。

@menu
* Making Backups::     How Emacs makes backup files, and when.
* Rename or Copy::     Two alternatives: renaming the old file or copying it.
* Numbered Backups::   Keeping multiple backups for each source file.
* Backup Names::       How backup file names are computed; customization.
@end menu

@node Making Backups, Rename or Copy, Backup Files, Backup Files
@c @subsection Making Backup Files
@subsection バックアップファイルの作成

@defun backup-buffer
@c   This function makes a backup of the file visited by the current
@c buffer, if appropriate.  It is called by @code{save-buffer} before
@c saving the buffer the first time.
この関数は、必要ならば、カレントバッファで訪問しているファイルの
バックアップを作成する。
バッファを初めて保存するまえに@code{save-buffer}がこの関数を呼び出す。
@end defun

@defvar buffer-backed-up
@c   This buffer-local variable indicates whether this buffer's file has
@c been backed up on account of this buffer.  If it is non-@code{nil}, then
@c the backup file has been written.  Otherwise, the file should be backed
@c up when it is next saved (if backups are enabled).  This is a
@c permanent local; @code{kill-local-variables} does not alter it.
このバッファローカルな変数は、
当該バッファのもとで当該バッファのファイルの
バックアップを作成済みかどうかを表す。
@code{nil}以外であれば、バックアップファイルは作成済みであることを表す。
さもなければ、（バックアップがオンになっていれば）つぎに保存するときに
ファイルのバックアップを作成するべきであることを表す。
これは恒久的にバッファローカルであり、
@code{kill-local-variables}によって変更されない。
@end defvar

@defopt make-backup-files
@c This variable determines whether or not to make backup files.  If it
@c is non-@code{nil}, then Emacs creates a backup of each file when it is
@c saved for the first time---provided that @code{backup-inhibited}
@c is @code{nil} (see below).
この変数は、バックアップファイルを作成するかどうかを決定する。
@code{nil}以外であると、@code{backup-inhibited}が@code{nil}ならば（下記参照）
Emacsは初めて保存するときに各ファイルのバックアップを作成する。

@c The following example shows how to change the @code{make-backup-files}
@c variable only in the Rmail buffers and not elsewhere.  Setting it
@c @code{nil} stops Emacs from making backups of these files, which may
@c save disk space.  (You would put this code in your @file{.emacs} file.)
つぎの例は、rmailのバッファでのみ変数@code{make-backup-files}を
変更する方法である。
この変数を@code{nil}にすると、
Emacsはそれらのファイルのバックアップを作成しなくなり、
ディスクスペースの節約になる。
（このコードを読者のファイル@file{.emacs}に入れてもよい。）

@smallexample
@group
(add-hook 'rmail-mode-hook 
          (function (lambda ()
                      (make-local-variable 
                       'make-backup-files)
                      (setq make-backup-files nil))))
@end group
@end smallexample
@end defopt

@defvar backup-enable-predicate
@c This variable's value is a function to be called on certain occasions to
@c decide whether a file should have backup files.  The function receives
@c one argument, a file name to consider.  If the function returns
@c @code{nil}, backups are disabled for that file.  Otherwise, the other
@c variables in this section say whether and how to make backups.
この変数の値は、ファイルをバックアップすべきかどうかを決定する
ために特定の場面で呼び出される関数である。
当該関数は、調べるべきファイルの名前を引数にとる。
当該関数が@code{nil}を返すと、当該ファイルのバックアップは禁止である。
さもなければ、本節の他の変数が、
バックアップするかどうかやバックアップ方法を指定する。

@c The default value is this:
デフォルト値はつぎのとおりである。

@example
(lambda (name)
  (or (< (length name) 5)
      (not (string-equal "/tmp/"
                         (substring name 0 5)))))
@end example
@end defvar

@defvar backup-inhibited
@c If this variable is non-@code{nil}, backups are inhibited.  It records
@c the result of testing @code{backup-enable-predicate} on the visited file
@c name.  It can also coherently be used by other mechanisms that inhibit
@c backups based on which file is visited.  For example, VC sets this
@c variable non-@code{nil} to prevent making backups for files managed
@c with a version control system.
この変数が@code{nil}以外であると、バックアップを禁止する。
この変数は、訪問したファイルの名前に対する@code{backup-enable-predicate}の
検査結果を記録している。
訪問したファイルに基づいてバックアップを禁止する
他の機構でもこの変数を使える。
たとえば、VCはこの変数に@code{nil}以外を設定し、
版管理システムで管理されているファイルに対してバックアップの作成を禁止する。

@c This is a permanent local, so that changing the major mode does not lose
@c its value.  Major modes should not set this variable---they should set
@c @code{make-backup-files} instead.
これは恒久的にバッファローカルであり、
メジャーモードを変更しても値は失われない。
メジャーモードはこの変数に設定するべきではなく、
かわりに、@code{make-backup-files}に設定するべきである。
@end defvar

@node Rename or Copy, Numbered Backups, Making Backups, Backup Files
@c @subsection Backup by Renaming or by Copying?
@subsection 改名によるバックアップかコピーによるバックアップか
@c @cindex backup files, how to make them
@cindex バックアップファイルの作成方法
@cindex 作成方法、バックアップファイル

@c   There are two ways that Emacs can make a backup file: 
Emacsは2つの方法でバックアップファイルを作れます。

@itemize @bullet
@item
@c Emacs can rename the original file so that it becomes a backup file, and
@c then write the buffer being saved into a new file.  After this
@c procedure, any other names (i.e., hard links) of the original file now
@c refer to the backup file.  The new file is owned by the user doing the
@c editing, and its group is the default for new files written by the user
@c in that directory.
Emacsは、元ファイルを改名してバックアップファイルとしてから、
保存すべきバッファを新たなファイルに書き出す。
この処理のあとでは、元ファイルの他の名前（つまりハードリンク）は
バックアップファイルを指す。
新たなファイルの所有者は編集しているユーザーになり、そのグループは
当該ディレクトリでユーザーが新規にファイルを書いた場合のデフォルトである。

@item
@c Emacs can copy the original file into a backup file, and then overwrite
@c the original file with new contents.  After this procedure, any other
@c names (i.e., hard links) of the original file continue to refer to the
@c current (updated) version of the file.  The file's owner and group will
@c be unchanged.
Emacsは元ファイルをバックアップファイルにコピーしてから、
元ファイルを新たな内容で上書きする。
この処理のあとでは、元ファイルの他の名前（つまりハードリンク）は
ファイルの（更新した）現在の版を指し続ける。
ファイルの所有者とグループは変わらない。
@end itemize

@c   The first method, renaming, is the default.
最初の改名による方式がデフォルトです。

@c   The variable @code{backup-by-copying}, if non-@code{nil}, says to use
@c the second method, which is to copy the original file and overwrite it
@c with the new buffer contents.  The variable @code{file-precious-flag},
@c if non-@code{nil}, also has this effect (as a sideline of its main
@c significance).  @xref{Saving Buffers}.
変数@code{backup-by-copying}が@code{nil}以外であると、
2番目の方式、つまり、元ファイルをコピーしてから
バッファの新たな内容で上書きすることを指示します。
変数@code{file-precious-flag}が@code{nil}以外であっても
（その主目的の副作用として）同じ効果があります。
@xref{Saving Buffers}。

@defvar backup-by-copying
@c If this variable is non-@code{nil}, Emacs always makes backup files by
@c copying.
この変数が@code{nil}以外であると、
Emacsはつねにコピーしてバックアップファイルを作る。
@end defvar

@c   The following two variables, when non-@code{nil}, cause the second
@c method to be used in certain special cases.  They have no effect on the
@c treatment of files that don't fall into the special cases.
つぎの2つの変数が@code{nil}以外であると、
特定の場面では2番目の方式を使うことになります。
これらの変数は、特別な場面に該当しないファイルの扱い方には影響しません。

@defvar backup-by-copying-when-linked
@c If this variable is non-@code{nil}, Emacs makes backups by copying for
@c files with multiple names (hard links).
この変数が@code{nil}以外の場合、Emacsは、
複数の名前（ハードリンク）を持つファイルはコピーしてバックアップする。

@c This variable is significant only if @code{backup-by-copying} is
@c @code{nil}, since copying is always used when that variable is
@c non-@code{nil}.
この変数は@code{backup-by-copying}が@code{nil}以外の場合にのみ意味を持つ。
というのは、その変数が@code{nil}以外の場合にコピーを用いるからである。
@end defvar

@defvar backup-by-copying-when-mismatch
@c If this variable is non-@code{nil}, Emacs makes backups by copying in cases
@c where renaming would change either the owner or the group of the file.
この変数が@code{nil}以外の場合、Emacsは、
改名するとファイルの所有者やグループを変更してしまう場合に
コピーしてバックアップする。

@c The value has no effect when renaming would not alter the owner or
@c group of the file; that is, for files which are owned by the user and
@c whose group matches the default for a new file created there by the
@c user.
改名してもファイルの所有者やグループを変更しなければ、
この値は効果を持たない。
つまり、ユーザーが所有しているファイルであり、
そのグループが当該ユーザーが新規作成するファイルのデフォルトに一致する
場合である。

@c This variable is significant only if @code{backup-by-copying} is
@c @code{nil}, since copying is always used when that variable is
@c non-@code{nil}.
この変数は@code{backup-by-copying}が@code{nil}以外の場合にのみ意味を持つ。
というのは、その変数が@code{nil}以外の場合にコピーを用いるからである。
@end defvar

@node Numbered Backups, Backup Names, Rename or Copy, Backup Files
@c @subsection Making and Deleting Numbered Backup Files
@subsection 番号付きバックアップファイルの作成と削除

@c   If a file's name is @file{foo}, the names of its numbered backup
@c versions are @file{foo.~@var{v}~}, for various integers @var{v}, like
@c this: @file{foo.~1~}, @file{foo.~2~}, @file{foo.~3~}, @dots{},
@c @file{foo.~259~}, and so on.
ファイル名が@file{foo}であると、
その番号付きバックアップファイルの名前は@var{v}を整数として
@file{foo.~@var{v}~}となります。
つまり、@file{foo.~1~}、@file{foo.~2~}、@file{foo.~3~}、@dots{}、
@file{foo.~259~}といった具合です。

@defopt version-control
@c This variable controls whether to make a single non-numbered backup
@c file or multiple numbered backups.
この変数は、番号なしの1つのバックアップファイルを作るのか
複数の番号付きバックアップファイルを作るのかを制御する。

@table @asis
@item @code{nil}
@c Make numbered backups if the visited file already has numbered backups;
@c otherwise, do not.
訪問したファイルにすでに番号付きバックアップファイルがあれば
番号付きバックアップを作る。
さもなければ作らない。

@item @code{never}
@c Do not make numbered backups.
番号付きバックアップは作らない。

@c @item @var{anything else}
@item @var{その他}
@c Make numbered backups.
番号付きバックアップを作る。
@end table
@end defopt

@c   The use of numbered backups ultimately leads to a large number of
@c backup versions, which must then be deleted.  Emacs can do this
@c automatically or it can ask the user whether to delete them.
番号付きバックアップファイルを使うと、
最終的には非常に多くのバックアップファイルができてしまい、
それらは削除しなければなりません。
Emacsはそれらを自動的に削除したり、
削除するかどうかユーザーに問い合わせることができます。

@defopt kept-new-versions
@c The value of this variable is the number of newest versions to keep
@c when a new numbered backup is made.  The newly made backup is included
@c in the count.  The default value is 2.
この変数の値は、新たに番号付きバックアップを作成したときに
保存すべき最新のバックアップの個数である。
新たに作成したバックアップも数える。
デフォルト値は2である。
@end defopt

@defopt kept-old-versions
@c The value of this variable is the number of oldest versions to keep
@c when a new numbered backup is made.  The default value is 2.
この変数の値は、新たに番号付きバックアップを作成したときに
保存すべき最古のバックアップの個数である。
デフォルト値は2である。
@end defopt

@c   If there are backups numbered 1, 2, 3, 5, and 7, and both of these
@c variables have the value 2, then the backups numbered 1 and 2 are kept
@c as old versions and those numbered 5 and 7 are kept as new versions;
@c backup version 3 is excess.  The function @code{find-backup-file-name}
@c (@pxref{Backup Names}) is responsible for determining which backup
@c versions to delete, but does not delete them itself.
1、2、3、5、7と番号が付いたバックアップがあり、
これらのどちらの変数の値も2であるとすると、
最古のものとして1と2の番号が付いたバックアップを保存し、
最新のものとして5と7の番号が付いたバックアップを保存する。
関数@code{find-backup-file-name}（@pxref{Backup Names}）は、
どの番号のバックアップを削除すべきかを決定する責任があるが、
それ自身はそれらを削除しない。

@tindex delete-old-versions
@defopt delete-old-versions
@c If this variable is non-@code{nil}, then saving a file deletes excess
@c backup versions silently.  Otherwise, it asks the user whether to delete
@c them.
この変数が@code{nil}以外であると、
ファイルを保存すると黙って範囲外のバックアップを削除する。
さもなければ、それを削除するかどうかユーザーに問い合わせる。
@end defopt

@defopt dired-kept-versions
@c This variable specifies how many of the newest backup versions to keep
@c in the Dired command @kbd{.} (@code{dired-clean-directory}).  That's the
@c same thing @code{kept-new-versions} specifies when you make a new backup
@c file.  The default value is 2.
この変数は、diredのコマンド@kbd{.}（@code{dired-clean-directory}）で
最新のバックアップを何個保存するかを指定する。
これは、新たなバックアップファイルの作成を指示したときに
@code{kept-new-versions}が指定することと同じである。
デフォルト値は2である。
@end defopt

@node Backup Names,  , Numbered Backups, Backup Files
@c @subsection Naming Backup Files
@subsection バックアップファイルの命名方法

@c   The functions in this section are documented mainly because you can
@c customize the naming conventions for backup files by redefining them.
@c If you change one, you probably need to change the rest.
本節の関数は、それらを再定義することでバックアップファイルの命名方法を
カスタマイズできるため、ここで述べることにします。
どれか1つを変更すると、残りのものも変更する必要があるでしょう。

@defun backup-file-name-p filename
@c This function returns a non-@code{nil} value if @var{filename} is a
@c possible name for a backup file.  A file with the name @var{filename}
@c need not exist; the function just checks the name.
この関数は、@var{filename}がバックアップファイルの名前である
可能性があると@code{nil}以外の値を返す。
@var{filename}という名前のファイルが存在する必要はなく、
この関数は単に名前だけを検査する。

@smallexample
@group
(backup-file-name-p "foo")
     @result{} nil
@end group
@group
(backup-file-name-p "foo~")
     @result{} 3
@end group
@end smallexample

@c The standard definition of this function is as follows:
この関数の標準定義はつぎのとおりである。

@smallexample
@group
(defun backup-file-name-p (file)
  "Return non-nil if FILE is a backup file \
name (numeric or not)..."
  (string-match "~$" file))
@end group
@end smallexample

@noindent
@c Thus, the function returns a non-@code{nil} value if the file name ends
@c with a @samp{~}.  (We use a backslash to split the documentation
@c string's first line into two lines in the text, but produce just one
@c line in the string itself.)
したがって、ファイル名が@samp{~}で終っていると、
この関数は@code{nil}以外の値を返す。
（説明文字列を2行に分けるためにバックスラッシュを使っているが、
文字列としては1行になる。）

@c This simple expression is placed in a separate function to make it easy
@c to redefine for customization.
カスタマイズのために再定義しやすいように、
この単純な式を独立した関数にしてある。
@end defun

@defun make-backup-file-name filename
@c This function returns a string that is the name to use for a
@c non-numbered backup file for file @var{filename}.  On Unix, this is just
@c @var{filename} with a tilde appended.
この関数は、ファイル@var{filename}に対する
番号なしバックアップファイルに使う名前を表す文字列を返す。
UNIXでは、単に@var{filename}の末尾にティルダを付加したものである。

@c The standard definition of this function, on most operating systems, is
@c as follows:
ほとんどのオペレーティングシステムでは、
この関数の標準定義はつぎのとおりである。

@smallexample
@group
(defun make-backup-file-name (file)
  "Create the non-numeric backup file name for FILE@enddots{}"
  (concat file "~"))
@end group
@end smallexample

@c You can change the backup-file naming convention by redefining this
@c function.  The following example redefines @code{make-backup-file-name}
@c to prepend a @samp{.} in addition to appending a tilde:
この関数を再定義すれば、バックアップファイルの命名方法を変更できる。
つぎの例では、ティルダに加えて先頭に@samp{.}を付けるように
@code{make-backup-file-name}を再定義する。

@smallexample
@group
(defun make-backup-file-name (filename)
  (expand-file-name
    (concat "." (file-name-nondirectory filename) "~")
    (file-name-directory filename)))
@end group

@group
(make-backup-file-name "backups.texi")
     @result{} ".backups.texi~"
@end group
@end smallexample

@c Some parts of Emacs, including some Dired commands, assume that backup
@c file names end with @samp{~}.  If you do not follow that convention, it
@c will not cause serious problems, but these commands may give
@c less-than-desirable results.
diredコマンドを含めてEmacsには、
バックアップファイルは@samp{~}で終ると仮定しているものがある。
この慣習に従わない場合、重大な問題には至らないであろうが、
それらのコマンドがあまり望ましくない結果をもたらすかもしれない。
@end defun

@defun find-backup-file-name filename
@c This function computes the file name for a new backup file for
@c @var{filename}.  It may also propose certain existing backup files for
@c deletion.  @code{find-backup-file-name} returns a list whose @sc{car} is
@c the name for the new backup file and whose @sc{cdr} is a list of backup
@c files whose deletion is proposed.
この関数は、@var{filename}に対する新たなバックアップファイルの
ファイル名を計算する。
さらに、削除すべき既存のバックアップファイルも計算する。
@code{find-backup-file-name}は、
@sc{car}に新たなバックアップファイルの名前、
@sc{cdr}に削除すべきバックアップファイルのリストを持つリストを返す。

@c Two variables, @code{kept-old-versions} and @code{kept-new-versions},
@c determine which backup versions should be kept.  This function keeps
@c those versions by excluding them from the @sc{cdr} of the value.
@c @xref{Numbered Backups}.
2つの変数、@code{kept-old-versions}と@code{kept-new-versions}は、
どのバックアップを保存すべきかを決定する。
この関数は、値の@sc{cdr}ではそれらのバックアップファイルは
除外してある。
@pxref{Numbered Backups}。

@c In this example, the value says that @file{~rms/foo.~5~} is the name
@c to use for the new backup file, and @file{~rms/foo.~3~} is an ``excess''
@c version that the caller should consider deleting now.
つぎの例の値では、@file{~rms/foo.~5~}が
新たなバックアップファイルの名前であり、
@file{~rms/foo.~3~}が『範囲外』のものであり、
呼び出し側で削除するかどうか考慮すべきである。

@smallexample
@group
(find-backup-file-name "~rms/foo")
     @result{} ("~rms/foo.~5~" "~rms/foo.~3~")
@end group
@end smallexample
@end defun

@c Emacs 19 feature
@defun file-newest-backup filename
@c This function returns the name of the most recent backup file for
@c @var{filename}, or @code{nil} if that file has no backup files.
この関数は、@var{filename}の最新のバックアップファイルの名前を返す。
当該ファイルにバックアップファイルがなければ@code{nil}を返す。

@c Some file comparison commands use this function so that they can
@c automatically compare a file with its most recent backup.
ファイルを比較するコマンドのなかには、
最新のバックアップファイルと自動的に比較できるように
この関数を使うものがある。
@end defun 

@node Auto-Saving, Reverting, Backup Files, Backups and Auto-Saving
@c @section Auto-Saving
@section 自動保存
@c @cindex auto-saving
@cindex 自動保存

@c   Emacs periodically saves all files that you are visiting; this is
@c called @dfn{auto-saving}.  Auto-saving prevents you from losing more
@c than a limited amount of work if the system crashes.  By default,
@c auto-saves happen every 300 keystrokes, or after around 30 seconds of
@c idle time.  @xref{Auto-Save, Auto-Save, Auto-Saving: Protection Against
@c = 誤植?     @xref{Auto Save, Auto Save, Auto-Saving: Protection Against
@c Disasters, emacs, The GNU Emacs Manual}, for information on auto-save
@c for users.  Here we describe the functions used to implement auto-saving
@c and the variables that control them.
Emacsは編集中のすべてのファイルを定期的に保存します。
これを@dfn{自動保存}（auto-savign）と呼びます。
自動保存により、システムがクラッシュしても、
一定量以上の作業を失わないようにします。
デフォルトでは、300打鍵ごと、あるいは、30秒間なにもしないと自動保存します。
ユーザー向けの自動保存に関する情報については、
@xref{Auto Save,, 自動保存、不慮の事故に対する備え, emacs,
GNU Emacs マニュアル}。
ここでは、自動保存を実装するための関数と
それらを制御する変数について述べます。

@defvar buffer-auto-save-file-name
@c This buffer-local variable is the name of the file used for
@c auto-saving the current buffer.  It is @code{nil} if the buffer
@c should not be auto-saved.
このバッファローカルな変数は、カレントバッファの自動保存に
用いるファイル名である。
当該バッファを自動保存しない場合には@code{nil}である。

@example
@group
buffer-auto-save-file-name
=> "/xcssun/users/rms/lewis/#files.texi#"
@end group
@end example
@end defvar

@c @deffn Command auto-save-mode arg
@deffn コマンド auto-save-mode arg
@c When used interactively without an argument, this command is a toggle
@c switch: it turns on auto-saving of the current buffer if it is off, and
@c vice-versa.  With an argument @var{arg}, the command turns auto-saving
@c on if the value of @var{arg} is @code{t}, a nonempty list, or a positive
@c integer.  Otherwise, it turns auto-saving off.
引数なしに対話的に呼ばれると、
このコマンドは自動保存機能をトグルする。
つまり、カレントバッファの自動保存がオンであるとオフにし、
オフならばオンにする。
引数@var{arg}を指定すると、
@var{arg}の値が@code{t}、空でないリスト、正整数のいずれかであれば、
このコマンドは自動保存をオンにする。
さもなければ自動保存をオフにする。
@end deffn

@defun auto-save-file-name-p filename
@c This function returns a non-@code{nil} value if @var{filename} is a
@c string that could be the name of an auto-save file.  It works based on
@c knowledge of the naming convention for auto-save files: a name that
@c begins and ends with hash marks (@samp{#}) is a possible auto-save file
@c name.  The argument @var{filename} should not contain a directory part.
この関数は、@var{filename}が自動保存ファイルの名前でありえれば、
@code{nil}以外を返す。
この関数は自動保存ファイルの名前の慣習に基づいて動作する。
名前がハッシュマーク（@samp{#}）で始まりかつ終っていれば、
自動保存ファイルの名前である可能性がある。
引数@var{filename}にはディレクトリ部分を含まないこと。

@example
@group
(make-auto-save-file-name)
     @result{} "/xcssun/users/rms/lewis/#files.texi#"
@end group
@group
(auto-save-file-name-p "#files.texi#")
     @result{} 0
@end group
@group
(auto-save-file-name-p "files.texi")
     @result{} nil
@end group
@end example

@c The standard definition of this function is as follows:
この関数の標準定義はつぎのとおりである。

@example
@group
(defun auto-save-file-name-p (filename)
  "Return non-nil if FILENAME can be yielded by..."
  (string-match "^#.*#$" filename))
@end group
@end example

@c This function exists so that you can customize it if you wish to
@c change the naming convention for auto-save files.  If you redefine it,
@c be sure to redefine the function @code{make-auto-save-file-name}
@c correspondingly.
この関数は、自動保存ファイルの名前の慣習を変更したい場合に
当該関数をカスタマイズできるようにするためである。
当該関数を再定義した場合には、関数@code{make-auto-save-file-name}も
それに従って必ず再定義すること。
@end defun

@defun make-auto-save-file-name
@c This function returns the file name to use for auto-saving the current
@c buffer.  This is just the file name with hash marks (@samp{#}) appended
@c and prepended to it.  This function does not look at the variable
@c @code{auto-save-visited-file-name} (described below); you should check
@c that before calling this function.
この関数は、カレントバッファの自動保存に使うファイル名を返す。
その名前は、単にファイル名の前後にハッシュマーク（@samp{#}）を
付加するだけである。
この関数は変数@code{auto-save-visited-file-name}（下記参照）を
調べないため、読者はこの関数を呼び出すまえにその変数を検査しておくこと。

@example
@group
(make-auto-save-file-name)
     @result{} "/xcssun/users/rms/lewis/#backup.texi#"
@end group
@end example

@c The standard definition of this function is as follows:
この関数の標準定義はつぎのとおりである。

@example
@group
(defun make-auto-save-file-name ()
  "Return file name to use for auto-saves \
of current buffer@enddots{}"
  (if buffer-file-name
@end group
@group
      (concat
       (file-name-directory buffer-file-name)
       "#"
       (file-name-nondirectory buffer-file-name)
       "#")
    (expand-file-name
     (concat "#%" (buffer-name) "#"))))
@end group
@end example

@c This exists as a separate function so that you can redefine it to
@c customize the naming convention for auto-save files.  Be sure to
@c change @code{auto-save-file-name-p} in a corresponding way.
自動保存ファイルの名前の慣習をカスタマイズするために
関数を再定義できるように1つの関数にしてある。
関数@code{auto-save-file-name-p}もそれに従って必ず変更すること。
@end defun

@defvar auto-save-visited-file-name
@c If this variable is non-@code{nil}, Emacs auto-saves buffers in
@c the files they are visiting.  That is, the auto-save is done in the same
@c file that you are editing.  Normally, this variable is @code{nil}, so
@c auto-save files have distinct names that are created by
@c @code{make-auto-save-file-name}.
この変数が@code{nil}以外であると、
Emacsは訪問しているファイルにバッファを自動保存する。
つまり、読者が編集しているファイルと同じファイルに自動保存を行う。
通常、この変数は@code{nil}であり、自動保存ファイルには
@code{make-auto-save-file-name}で作成した別の名前がある。

@c When you change the value of this variable, the value does not take
@c effect until the next time auto-save mode is reenabled in any given
@c buffer.  If auto-save mode is already enabled, auto-saves continue to go
@c in the same file name until @code{auto-save-mode} is called again.
この変数の値を変更しても、
バッファの自動保存をつぎにオンにするまで、この値は効果を発揮しない。
自動保存がすでにオンであると、
@code{auto-save-mode}を再度呼び出すまでは、
同じファイルの名前に自動保存し続ける。
@end defvar

@defun recent-auto-save-p
@c This function returns @code{t} if the current buffer has been
@c auto-saved since the last time it was read in or saved.
カレントバッファに最後に読み込んだり保存してから以降に自動保存していると、
この関数は@code{t}を返す。
@end defun

@defun set-buffer-auto-saved
@c This function marks the current buffer as auto-saved.  The buffer will
@c not be auto-saved again until the buffer text is changed again.  The
@c function returns @code{nil}.
この関数は、カレントバッファに自動保存済みであると印を付ける。
バッファのテキストが再度変更されない限り、バッファは自動保存されない。
この関数は@code{nil}を返す。
@end defun

@defopt auto-save-interval
@c The value of this variable is the number of characters that Emacs
@c reads from the keyboard between auto-saves.  Each time this many more
@c characters are read, auto-saving is done for all buffers in which it is
@c enabled.
この変数の値は、つぎの自動保存までに
Emacsがキーボードから読み取る文字の個数である。
これだけの文字を読み取ると、自動保存をオンにしてあるすべてのバッファを
自動保存する。
@end defopt

@defopt auto-save-timeout
@c The value of this variable is the number of seconds of idle time that
@c should cause auto-saving.  Each time the user pauses for this long,
@c Emacs auto-saves any buffers that need it.  (Actually, the specified
@c timeout is multiplied by a factor depending on the size of the current
@c buffer.)
この変数の値は、自動保存を引き起こすまでのなにもしていない期間の秒数である。
この時間だけユーザーがなにもしないと、
Emacsは自動保存する必要があるバッファを自動保存する。
（実際には、カレントバッファの大きさに依存した係数を指定時間に掛ける。）
@end defopt

@defvar auto-save-hook
@c This normal hook is run whenever an auto-save is about to happen.
このノーマルフックは、自動保存を行う直前に毎回実行される。
@end defvar

@defopt auto-save-default
@c If this variable is non-@code{nil}, buffers that are visiting files
@c have auto-saving enabled by default.  Otherwise, they do not.
この変数が@code{nil}以外であると、
ファイルを訪問しているバッファはデフォルトで自動保存をオンにする。
さもなければ、そうしない。
@end defopt

@c @deffn Command do-auto-save &optional no-message current-only
@deffn コマンド do-auto-save &optional no-message current-only
@c This function auto-saves all buffers that need to be auto-saved.  It
@c saves all buffers for which auto-saving is enabled and that have been
@c changed since the previous auto-save.
この関数は、自動保存する必要があるすべてのバッファを自動保存する。
自動保存がオンになっていて、かつ、以前の自動保存からあとで
変更されているすべてのバッファを自動保存する。

@c Normally, if any buffers are auto-saved, a message that says
@c @samp{Auto-saving...} is displayed in the echo area while auto-saving is
@c going on.  However, if @var{no-message} is non-@code{nil}, the message
@c is inhibited.
通常、バッファを自動保存すると、
自動保存を実行中にはエコー領域にメッセージ@samp{Auto-saving...}が表示される。
しかし、@var{no-message}が@code{nil}以外であると、
メッセージを表示しない。

@c If @var{current-only} is non-@code{nil}, only the current buffer
@c is auto-saved.
@var{current-only}が@code{nil}以外であると、
カレントバッファのみを自動保存する。
@end deffn

@defun delete-auto-save-file-if-necessary
@c This function deletes the current buffer's auto-save file if
@c @code{delete-auto-save-files} is non-@code{nil}.  It is called every
@c time a buffer is saved.
この関数は、@code{delete-auto-save-files}が@code{nil}以外であると、
カレントバッファの自動保存ファイルを削除する。
バッファを保存するたびに呼び出される。
@end defun

@defvar delete-auto-save-files
@c This variable is used by the function
@c @code{delete-auto-save-file-if-necessary}.  If it is non-@code{nil},
@c Emacs deletes auto-save files when a true save is done (in the visited
@c file).  This saves disk space and unclutters your directory.
この変数は、関数@code{delete-auto-save-file-if-necessary}が使う。
@code{nil}以外であると、Emacsは（訪問しているファイルに）実際に
保存すると自動保存ファイルを削除する。
これによりディスクスペースを節約し、読者のディレクトリを整頓できる。
@end defvar

@defun rename-auto-save-file
@c This function adjusts the current buffer's auto-save file name if the
@c visited file name has changed.  It also renames an existing auto-save
@c file.  If the visited file name has not changed, this function does
@c nothing.
この関数は、訪問しているファイルの名前が変更されていると、
カレントバッファの自動保存ファイルの名前を修正する。
さらに、既存の自動保存ファイルも改名する。
訪問しているファイルの名前が変更されていなければ、
この関数はなにもしない。
@end defun

@defvar buffer-saved-size
@c The value of this buffer-local variable is the length of the current
@c buffer as of the last time it was read in, saved, or auto-saved.  This is
@c used to detect a substantial decrease in size, and turn off auto-saving
@c in response.
このバッファローカルな変数の値は、
最後に読み込んだり保存したり自動保存したときの
カレントバッファの長さである。
サイズの大幅な変更を検知すると自動保存をオフにするために使われる。

@c If it is @minus{}1, that means auto-saving is temporarily shut off in this
@c buffer due to a substantial deletion.  Explicitly saving the buffer
@c stores a positive value in this variable, thus reenabling auto-saving.
@c Turning auto-save mode off or on also alters this variable.
この変数が@minus{}1であると、
大幅に削除したために一時的に自動保存をオフにしたことを意味する。
明示的にバッファを保存すると、この変数に正の値が保存され、
自動保存が再度オンになる。
自動保存をオフにしたりオンにしても、この変数が変更される。
@end defvar

@defvar auto-save-list-file-name
@c This variable (if non-@code{nil}) specifies a file for recording the
@c names of all the auto-save files.  Each time Emacs does auto-saving, it
@c writes two lines into this file for each buffer that has auto-saving
@c enabled.  The first line gives the name of the visited file (it's empty
@c if the buffer has none), and the second gives the name of the auto-save
@c file.
この変数は（@code{nil}以外であると）、
すべての自動保存ファイルの名前を記録するファイルを指定する。
Emacsが自動保存を行うたびに、
自動保存がオンである各バッファに関する2行をこのファイルに書き出す。
1行目は訪問しているファイルの名前を与え（訪問していなければ空）、
2行目は自動保存ファイルの名前を与える。

@c If Emacs exits normally, it deletes this file.  If Emacs crashes, you
@c can look in the file to find all the auto-save files that might contain
@c work that was otherwise lost.  The @code{recover-session} command uses
@c these files.
Emacsが正常に終ると、このファイルは削除される。
Emacsがクラッシュしたら、失われてしまう作業内容を含んでいるかもしれない
自動保存ファイルを探すために読者はこのファイルを調べられる。
コマンド@code{recover-session}はこれらのファイルを使う。

@c The default name for this file is in your home directory and starts with
@c @samp{.saves-}.  It also contains the Emacs process @sc{id} and the host
@c name.
このファイルのデフォルト名は、
読者のホームディレクトリにあり@samp{.saves-}で始まる。
さらに、Emacsのプロセス@sc{id}とホスト名も含む。
@end defvar

@node Reverting,  , Auto-Saving, Backups and Auto-Saving
@c @section Reverting
@section 復元

@c   If you have made extensive changes to a file and then change your mind
@c about them, you can get rid of them by reading in the previous version
@c of the file with the @code{revert-buffer} command.  @xref{Reverting, ,
@c Reverting a Buffer, emacs, The GNU Emacs Manual}.
ファイルを大幅に変更したあとで、そのような変更をやめたい場合には、
コマンド@code{revert-buffer}でファイルのまえの版を読み込めます。
@xref{Reverting,, バッファを復元する, emacs, GNU Emacs マニュアル}。

@c @deffn Command revert-buffer &optional ignore-auto noconfirm
@deffn コマンド revert-buffer &optional ignore-auto noconfirm
@c This command replaces the buffer text with the text of the visited
@c file on disk.  This action undoes all changes since the file was visited
@c or saved.
このコマンドは、バッファのテキストを
ディスク上の訪問しているファイルのテキストで置き換える。
これにより、ファイルを訪問したり保存してから行った変更をすべて取り消せる。

@c By default, if the latest auto-save file is more recent than the visited
@c file, @code{revert-buffer} asks the user whether to use that instead.
@c But if the argument @var{ignore-auto} is non-@code{nil}, then only the
@c the visited file itself is used.  Interactively, @var{ignore-auto} is
@c @code{t} unless there is a numeric prefix argument; thus, the
@c interactive default is to check the auto-save file.
デフォルトでは、最後の自動保存ファイルが
訪問しているファイルよりも新しい場合には、
@code{revert-buffer}は自動保存ファイルを使うかどうか
ユーザーに問い合わせる。
しかし、引数@var{ignore-auto}が@code{nil}以外であると、
訪問したファイルのみを使う。
対話的に呼ばれた場合、数値前置引数を指定しない限り、
@var{ignore-auto}は@code{t}である。
したがって、対話的な場合のデフォルトでは、自動保存ファイルを検査する。

@c Normally, @code{revert-buffer} asks for confirmation before it changes
@c the buffer; but if the argument @var{noconfirm} is non-@code{nil},
@c @code{revert-buffer} does not ask for confirmation.
通常、バッファを変更するまえに@code{revert-buffer}は確認してくる。
しかし、引数@var{noconfirm}が@code{nil}以外であると、
@code{revert-buffer}は確認しない。

@c Reverting tries to preserve marker positions in the buffer by using the
@c replacement feature of @code{insert-file-contents}.  If the buffer
@c contents and the file contents are identical before the revert
@c operation, reverting preserves all the markers.  If they are not
@c identical, reverting does change the buffer; then it preserves the
@c markers in the unchanged text (if any) at the beginning and end of the
@c buffer.  Preserving any additional markers would be problematical.
復元作業では、
@code{insert-file-contents}の置換機能を用いて
バッファ内のマーカ位置を保存するように努める。
復元操作のまえにバッファの内容とファイルの内容が同一であれば、
すべてのマークが保存される。
同一でなければ、復元によりバッファが変更され、
バッファの先頭と末尾の（あれば）未変更なテキスト内のマーカを保存する。
それ以外のマーカを保存しても問題を引き起こすだけであろう。
@end deffn

@c You can customize how @code{revert-buffer} does its work by setting
@c these variables---typically, as buffer-local variables.
以下の変数を典型的にはバッファローカルな変数として設定することで
@code{revert-buffer}の動作をカスタマイズできます。

@defvar revert-without-query
@c This variable holds a list of files that should be reverted without
@c query.  The value is a list of regular expressions.  If a file name
@c matches one of these regular expressions, then @code{revert-buffer}
@c reverts the file without asking the user for confirmation, if the file
@c has changed on disk and the buffer is not modified.
この変数は、問い合わせずに復元すべきファイルのリストを保持する。
値は、正規表現のリストである。
ファイル名がこれらの正規表現の1つに一致すると、
ディスク上のファイルが変更されていて当該バッファが未変更であれば、
@code{revert-buffer}はユーザーに確認せずに当該ファイルを復元する。
@end defvar

@defvar revert-buffer-function
@c The value of this variable is the function to use to revert this buffer.
@c If non-@code{nil}, it is called as a function with no arguments to do
@c the work of reverting.  If the value is @code{nil}, reverting works the
@c usual way.
この変数の値は、このバッファを復元するために使う関数である。
@code{nil}以外であれば、復元を行う引数なしの関数として呼び出される。
値が@code{nil}であると、復元操作は通常の方法で行われる。

@c Modes such as Dired mode, in which the text being edited does not
@c consist of a file's contents but can be regenerated in some other
@c fashion, give this variable a buffer-local value that is a function to
@c regenerate the contents.
diredモードなどのモードでは、
編集中のテキストはファイルの内容ではなく
別の方法で再生成されたものなので、
この変数のバッファローカルな値には内容を再生成する関数を指定すること。
@end defvar

@defvar revert-buffer-insert-file-contents-function
@c The value of this variable, if non-@code{nil}, is the function to use to
@c insert the updated contents when reverting this buffer.  The function
@c receives two arguments: first the file name to use; second, @code{t} if
@c the user has asked to read the auto-save file.
この変数の値が@code{nil}以外であると、
このバッファを復元するときに更新内容を挿入するために使われる関数である。
当該関数は2つの引数をとる。
第1引数は、使用するファイル名である。
第2引数は、ユーザーが自動保存ファイルを
読むように指示していると@code{t}である。
@end defvar

@defvar before-revert-hook
@c This normal hook is run by @code{revert-buffer} before actually
@c inserting the modified contents---but only if
@c @code{revert-buffer-function} is @code{nil}.
このノーマルフックは、@code{revert-buffer-function}が@code{nil}である
場合にのみ、変更内容を実際に挿入するまえに@code{revert-buffer}が実行する。

@c Font Lock mode uses this hook to record that the buffer contents are no
@c longer fontified.
フォントロック（font-lock）モードはこのフックを使って、
バッファ内容をこれ以上強調表示しないことを記録する。
@end defvar

@defvar after-revert-hook
@c This normal hook is run by @code{revert-buffer} after actually inserting
@c the modified contents---but only if @code{revert-buffer-function} is
@c @code{nil}.
このノーマルフックは、@code{revert-buffer-function}が@code{nil}である
場合にのみ、変更内容を実際に挿入したあとに@code{revert-buffer}が実行する。

@c Font Lock mode uses this hook to recompute the fonts for the updated
@c buffer contents.
フォントロック（font-lock）モードはこのフックを使って、
更新されたバッファ内容に対するフォントを再計算する。
@end defvar

