File:  [Local Repository] / gnujdoc / emacs-20.6 / files-ja.texi
Revision 1.1: download - view: text, annotated - select for diffs
Wed Apr 26 06:42:34 2000 UTC (20 years, 6 months ago) by hayashi
Branches: MAIN
CVS tags: HEAD
New files

    1: @c =============================================================
    2: @c = 元 翻 訳: 鈴木悦子@津田塾大学
    3: @c = 加筆修正: 大木敦雄@大塚.筑波大学 = 1998/11/25
    4: @c = 20.4改訂: 大木敦雄@大塚.筑波大学 = 1999/09/12
    5: @c =============================================================
    6: @c This is part of the Emacs manual.
    7: @c Copyright (C) 1985, 86, 87, 93, 94, 95, 1997 Free Software Foundation, Inc.
    8: @c See file emacs.texi for copying conditions.
    9: @node Files, Buffers, Fixit, Top
   10: @c @chapter File Handling
   11: @c @cindex files
   12: @chapter ファイルの扱い方
   13: @cindex ファイル
   15: @c   The operating system stores data permanently in named @dfn{files}.  So
   16: @c most of the text you edit with Emacs comes from a file and is ultimately
   17: @c stored in a file.
   18: オペレーティングシステムは、
   19: データを指定した@dfn{ファイル}(file)に恒久的に保存します。
   20: ですから、Emacsで編集するテキストの多くはファイルから取り込み、
   21: 最終的にはファイルに格納されます。
   23: @c   To edit a file, you must tell Emacs to read the file and prepare a
   24: @c buffer containing a copy of the file's text.  This is called
   25: @c @dfn{visiting} the file.  Editing commands apply directly to text in the
   26: @c buffer; that is, to the copy inside Emacs.  Your changes appear in the
   27: @c file itself only when you @dfn{save} the buffer back into the file.
   28: ファイルを編集するには、
   29: Emacsに対してファイルを読むように指示して、
   30: ファイルの内容のコピーを入れたバッファを用意させる必要があります。
   31: これを、ファイルを@dfn{訪問する/訪れる}(visiting)といいます。
   32: 編集コマンドはバッファ内のテキストに直接作用します。
   33: つまり、Emacs内にあるコピーを操作します。
   34: バッファをファイルに@dfn{保存}(save)した場合に限り、
   35: 変更はファイルそのものに反映されます。
   37: @c   In addition to visiting and saving files, Emacs can delete, copy,
   38: @c rename, and append to files, keep multiple versions of them, and operate
   39: @c on file directories.
   40: ファイルを訪問したり保存したりすることに加えて、
   41: Emacsは、ファイルを、削除したり、コピーしたり、名前を変更したり、
   42: 別のファイルへ追加したり、複数の版を保持したり、
   43: ファイルディレクトリを操作したりできます。
   45: @menu
   46: * File Names::          How to type and edit file-name arguments.
   47: * Visiting::            Visiting a file prepares Emacs to edit the file.
   48: * Saving::              Saving makes your changes permanent.
   49: * Reverting::           Reverting cancels all the changes not saved.
   50: * Auto Save::           Auto Save periodically protects against loss of data.
   51: * File Aliases::        Handling multiple names for one file.
   52: * Version Control::     Version control systems (RCS, CVS and SCCS).
   53: * Directories::         Creating, deleting, and listing file directories.
   54: * Comparing Files::     Finding where two files differ.
   55: * Misc File Ops::       Other things you can do on files.
   56: * Compressed Files::    Accessing compressed files.
   57: * Remote Files::        Accessing files on other sites.
   58: * Quoted File Names::   Quoting special characters in file names.
   59: @end menu
   61: @node File Names, Visiting, , Files
   62: @c @section File Names
   63: @c @cindex file names
   64: @section ファイル名
   65: @cindex ファイル名
   67: @c   Most Emacs commands that operate on a file require you to specify the
   68: @c file name.  (Saving and reverting are exceptions; the buffer knows which
   69: @c file name to use for them.)  You enter the file name using the
   70: @c minibuffer (@pxref{Minibuffer}).  @dfn{Completion} is available, to make
   71: @c it easier to specify long file names.  @xref{Completion}.
   72: ファイルを操作するほとんどのEmacsコマンドには、
   73: ファイル名を指定する必要があります。
   74: (保存と復元の操作を除く。
   75: バッファはこれらの操作に対して使うファイル名を記録している。)
   76: ファイル名は、ミニバッファを使って入力します(@pxref{Minibuffer})。
   77: 長いファイル名の指定を簡単にする補完も使えます。
   78: @xref{Completion}。
   80: @c   For most operations, there is a @dfn{default file name} which is used
   81: @c if you type just @key{RET} to enter an empty argument.  Normally the
   82: @c default file name is the name of the file visited in the current buffer;
   83: @c this makes it easy to operate on that file with any of the Emacs file
   84: @c commands.
   85: 多くの操作には、@dfn{デフォルトファイル名}があり、
   86: @key{RET}だけを打って空の引数を指定した場合に使われます。
   87: 通常、デフォルトファイル名は、
   88: カレントバッファで訪問したファイルの名前です。
   89: こうすることで、
   90: Emacsのファイルコマンドで当該ファイルを操作するのが簡単になります。
   92: @vindex default-directory
   93: @c   Each buffer has a default directory, normally the same as the
   94: @c directory of the file visited in that buffer.  When you enter a file
   95: @c name without a directory, the default directory is used.  If you specify
   96: @c a directory in a relative fashion, with a name that does not start with
   97: @c a slash, it is interpreted with respect to the default directory.  The
   98: @c default directory is kept in the variable @code{default-directory},
   99: @c which has a separate value in every buffer.
  100: 各バッファにはデフォルトディレクトリがあります。
  101: 通常は、そのバッファの訪問先のファイルのディレクトリと同じです。
  102: ディレクトリを指定しないでファイル名を入力すると、
  103: デフォルトディレクトリを使います。
  104: スラッシュ(@samp{/})で始まらない相対的なディレクトリを指定すると、
  105: デフォルトディレクトリ相対に解釈します。
  106: デフォルトディレクトリは変数@code{default-directory}に保持されていて、
  107: バッファごとに別々の値を持ちます。
  109: @c   For example, if the default file name is @file{/u/rms/gnu/gnu.tasks} then
  110: @c the default directory is @file{/u/rms/gnu/}.  If you type just @samp{foo},
  111: @c which does not specify a directory, it is short for @file{/u/rms/gnu/foo}.
  112: @c @samp{../.login} would stand for @file{/u/rms/.login}.  @samp{new/foo}
  113: @c would stand for the file name @file{/u/rms/gnu/new/foo}.
  114: たとえば、デフォルトファイル名が@file{/u/rms/gnu/gnu.tasks}ならば、
  115: デフォルトディレクトリは@file{/u/rms/gnu/}です。
  116: ディレクトリを指定しないで@samp{foo}とだけ打つと、
  117: @file{/u/rms/gnu/foo}を意味します。
  118: @samp{../.login}は、@file{/u/rms/.login}を意味します。
  119: @samp{new/foo}は、ファイル名@file{/u/rms/gnu/new/foo}を意味します。
  121: @findex cd
  122: @findex pwd
  123: @c   The command @kbd{M-x pwd} prints the current buffer's default
  124: @c directory, and the command @kbd{M-x cd} sets it (to a value read using
  125: @c the minibuffer).  A buffer's default directory changes only when the
  126: @c @code{cd} command is used.  A file-visiting buffer's default directory
  127: @c is initialized to the directory of the file that is visited there.  If
  128: @c you create a buffer with @kbd{C-x b}, its default directory is copied
  129: @c from that of the buffer that was current at the time.
  130: コマンド@kbd{M-x pwd}は、カレントバッファのデフォルトディレクトリを表示し、
  131: コマンド@kbd{M-x cd}は、それを(ミニバッファで読んだ値に)設定します。
  132: バッファのデフォルトディレクトリは、
  133: @code{cd}コマンドを使ったときだけ変更されます。
  134: ファイルを訪問しているバッファのデフォルトディレクトリは、
  135: 訪問したファイルのディレクトリに初期化されます。
  136: @kbd{C-x b}で作ったバッファのデフォルトディレクトリは、
  137: その時点のカレントバッファのデフォルトディレクトリと同じです。
  139: @vindex insert-default-directory
  140: @c   The default directory actually appears in the minibuffer when the
  141: @c minibuffer becomes active to read a file name.  This serves two
  142: @c purposes: it @emph{shows} you what the default is, so that you can type
  143: @c a relative file name and know with certainty what it will mean, and it
  144: @c allows you to @emph{edit} the default to specify a different directory.
  145: @c This insertion of the default directory is inhibited if the variable
  146: @c @code{insert-default-directory} is set to @code{nil}.
  147: デフォルトディレクトリは、ミニバッファでファイル名を読むときに、
  148: 実際にミニバッファに表示されます。
  149: これには2つの目的があります。
  150: デフォルトが何であるかを@emph{示す}ことで、
  151: 相対ファイル名を打ち込めるようにし、しかも、
  152: その意味を確実に知ることができるようにします。
  153: もう1つは、デフォルトディレクトリを@emph{編集}して、
  154: 別のディレクトリを指定できるようにします。
  155: 変数@code{insert-default-directory}を@code{nil}に設定すると、
  156: デフォルトディレクトリを挿入しません。
  158: @c   Note that it is legitimate to type an absolute file name after you
  159: @c enter the minibuffer, ignoring the presence of the default directory
  160: @c name as part of the text.  The final minibuffer contents may look
  161: @c invalid, but that is not so.  For example, if the minibuffer starts out
  162: @c with @samp{/usr/tmp/} and you add @samp{/x1/rms/foo}, you get
  163: @c @samp{/usr/tmp//x1/rms/foo}; but Emacs ignores everything through the
  164: @c first slash in the double slash; the result is @samp{/x1/rms/foo}.
  165: @c @xref{Minibuffer File}.
  166: ミニバッファで入力するとき、
  167: テキストの一部として入っているデフォルトディレクトリを無視して、
  168: 絶対ファイル名を打っても何の問題もありません。
  169: 最終的なミニバッファの内容は不正なように見えても、
  170: そうではありません。
  171: たとえば、ミニバッファには@samp{/usr/tmp/}が入っていて
  172: @samp{/x1/rms/foo}を追加すると、@samp{/usr/tmp//x1/rms/foo}となります。
  173: Emacsは連続した2個のスラッシュの始めのスラッシュまでをすべて無視するので、
  174: 結果として@samp{/x1/rms/foo}となります。
  175: @xref{Minibuffer File}。
  177: @c   @samp{$} in a file name is used to substitute environment variables.
  178: @c For example, if you have used the shell command @samp{export
  179: @c FOO=rms/hacks} to set up an environment variable named @code{FOO}, then
  180: @c you can use @file{/u/$FOO/test.c} or @file{/u/$@{FOO@}/test.c} as an
  181: @c abbreviation for @file{/u/rms/hacks/test.c}.  The environment variable
  182: @c name consists of all the alphanumeric characters after the @samp{$};
  183: @c alternatively, it may be enclosed in braces after the @samp{$}.  Note
  184: @c that shell commands to set environment variables affect Emacs only if
  185: @c done before Emacs is started.
  186: ファイル名の中の@samp{$}は環境変数で置き換えられます。
  187: たとえば、シェルコマンド@samp{export FOO=rms/hacks}で、
  188: 環境変数@code{FOO}を設定してあるとします。
  189: そうすると、@file{/u/rms/hacks/test.c}の略称として
  190: @file{/u/$FOO/test.c}や@file{/u/$@{FOO@}/test.c}を使えます。
  191: 環境変数の名前は、@samp{$}のうしろにある英数字全部です。
  192: あるいは、@samp{$}のうしろにある括弧で囲まれたものです。
  193: シェルコマンドで設定した環境変数がEmacsに影響を及ぼすのは、
  194: Emacsを起動するまえに設定したものに限ります。
  196: @c   To access a file with @samp{$} in its name, type @samp{$$}.  This pair
  197: @c is converted to a single @samp{$} at the same time as variable
  198: @c substitution is performed for single @samp{$}.  Alternatively, quote the
  199: @c whole file name with @samp{/:} (@pxref{Quoted File Names}).
  200: 名前の中に@samp{$}があるファイルを参照するには、
  201: @samp{$$}と打ちます。
  202: 1個の@samp{$}に対して変数の置き換えを行うときに、
  203: この2個の@samp{$}は1個の@samp{$}に変換されます。
  204: あるいは、ファイル名全体を@samp{/:}でクォートします
  205: (@pxref{Quoted File Names})。
  207: @findex substitute-in-file-name
  208: @c   The Lisp function that performs the substitution is called
  209: @c @code{substitute-in-file-name}.  The substitution is performed only on
  210: @c file names read as such using the minibuffer.
  211: (変数の)置き換えを行うLisp関数は@code{substitute-in-file-name}です。
  212: 置き換えは、ミニバッファで読んだファイル名だけに適用されます。
  214: @c   You can include non-ASCII characters in file names if you set the
  215: @c variable @code{file-name-coding-system} to a non-@code{nil} value.
  216: @c @xref{Specify Coding}.
  217: 変数@code{file-name-coding-system}に@code{nil}以外を設定すると、
  218: ファイル名に非ASCIIを含めることができます。
  219: @xref{Specify Coding}。
  221: @node Visiting, Saving, File Names, Files
  222: @c @section Visiting Files
  223: @c @cindex visiting files
  224: @section ファイルを訪問する
  225: @cindex ファイルを訪問する
  227: @c WideCommands
  228: @table @kbd
  229: @item C-x C-f
  230: @c Visit a file (@code{find-file}).
  231: ファイルを訪問する(@code{find-file})。
  232: @item C-x C-r
  233: @c Visit a file for viewing, without allowing changes to it
  234: @c (@code{find-file-read-only}).
  235: ファイルを眺めるために訪問し、変更を許さない
  236: (@code{find-file-read-only})。
  237: @item C-x C-v
  238: @c Visit a different file instead of the one visited last
  239: @c (@code{find-alternate-file}).
  240: 最後に訪問したファイルのかわりに、別のファイルを訪問する
  241: (@code{find-alternate-file})。
  242: @item C-x 4 f
  243: @c Visit a file, in another window (@code{find-file-other-window}).  Don't
  244: @c alter what is displayed in the selected window.
  245: 別のウィンドウでファイルを訪問する
  246: (@code{find-file-other-window})。
  247: 選択されているウィンドウに表示されている内容は変化しない。
  248: @item C-x 5 f
  249: @c Visit a file, in a new frame (@code{find-file-other-frame}).  Don't
  250: @c alter what is displayed in the selected frame.
  251: 新たなフレームでファイルを訪問する
  252: (@code{find-file-other-frame})。
  253: 選択されているフレームに表示されている内容は変化しない。
  254: @item M-x find-file-literally
  255: @c Visit a file with no conversion of the contents.
  256: ファイルの内容をいっさい変換せずに訪問する。
  257: @end table
  259: @c @cindex files, visiting and saving
  260: @c @cindex visiting files
  261: @c @cindex saving files
  262: @cindex ファイル、訪問と保存
  263: @cindex ファイルを訪問する
  264: @cindex ファイルを保存する
  265: @c   @dfn{Visiting} a file means copying its contents into an Emacs buffer
  266: @c so you can edit them.  Emacs makes a new buffer for each file that you
  267: @c visit.  We say that this buffer is visiting the file that it was created
  268: @c to hold.  Emacs constructs the buffer name from the file name by
  269: @c throwing away the directory, keeping just the name proper.  For example,
  270: @c a file named @file{/usr/rms/emacs.tex} would get a buffer named
  271: @c @samp{emacs.tex}.  If there is already a buffer with that name, a unique
  272: @c name is constructed by appending @samp{<2>}, @samp{<3>}, or so on, using
  273: @c the lowest number that makes a name that is not already in use.
  274: ファイルを@dfn{訪問する/訪れる}とは、
  275: ファイルの内容のコピーを編集できるようにEmacsバッファに入れることです。
  276: Emacsは、訪問する各ファイルごとに新たにバッファを作ります。
  277: バッファ名は、ディレクトリ部分を取りさったファイル名から作ります。
  278: たとえば、ファイル名@file{/usr/rms/emacs.tex}の
  279: バッファ名は@samp{emacs.tex}となります。
  280: その名前のバッファがすでに存在するならば、
  281: まだ使われていない名前になるようなもっとも小さい数を使って、
  282: @samp{<2>}, @samp{<3>}などを付加して唯一の名前を作ります。
  284: @c   Each window's mode line shows the name of the buffer that is being displayed
  285: @c in that window, so you can always tell what buffer you are editing.
  286: 各ウィンドウのモード行にはウィンドウ内に表示している
  287: バッファ名が示されているので、
  288: 編集しているバッファが何かいつでもわかります。
  290: @c   The changes you make with editing commands are made in the Emacs
  291: @c buffer.  They do not take effect in the file that you visited, or any
  292: @c place permanent, until you @dfn{save} the buffer.  Saving the buffer
  293: @c means that Emacs writes the current contents of the buffer into its
  294: @c visited file.  @xref{Saving}.
  295: 編集コマンドによる変更は、Emacsバッファに対して行われます。
  296: バッファを@dfn{保存}するまでは、
  297: 変更は、訪問先のファイルや他のどんな恒久的なものにも影響しません。
  298: バッファを保存するとは、
  299: バッファの現在の内容をそのバッファの訪問先のファイルに書き出すことです。
  300: @xref{Saving}。
  302: @c @cindex modified (buffer)
  303: @cindex 変更されたバッファ
  304: @c   If a buffer contains changes that have not been saved, we say the
  305: @c buffer is @dfn{modified}.  This is important because it implies that
  306: @c some changes will be lost if the buffer is not saved.  The mode line
  307: @c displays two stars near the left margin to indicate that the buffer is
  308: @c modified.
  309: バッファに未保存の変更がある場合、
  310: バッファは@dfn{変更されている}といいます。
  311: バッファを保存しないと変更内容が失われてしまうので、
  312: これは重要なことです。
  313: モード行の左端近くに2個の星印を表示して、
  314: バッファが変更されていることを示します。
  316: @kindex C-x C-f
  317: @findex find-file
  318: @c   To visit a file, use the command @kbd{C-x C-f} (@code{find-file}).  Follow
  319: @c the command with the name of the file you wish to visit, terminated by a
  320: @c @key{RET}.
  321: ファイルを訪問するには、コマンド@kbd{C-x C-f}(@code{find-file})を使います。
  322: このコマンドに、訪問したいファイル名を続けて@key{RET}で終えます。
  324: @c   The file name is read using the minibuffer (@pxref{Minibuffer}), with
  325: @c defaulting and completion in the standard manner (@pxref{File Names}).
  326: @c While in the minibuffer, you can abort @kbd{C-x C-f} by typing @kbd{C-g}.
  327: ファイル名はミニバッファ(@pxref{Minibuffer})で読まれ、
  328: このときデフォルトや標準的な方法の補完を使えます(@pxref{File Names})。
  329: ミニバッファ内で@kbd{C-g}と打てば、@kbd{C-x C-f}をアボートできます。
  331: @c   Your confirmation that @kbd{C-x C-f} has completed successfully is the
  332: @c appearance of new text on the screen and a new buffer name in the mode
  333: @c line.  If the specified file does not exist and could not be created, or
  334: @c cannot be read, then you get an error, with an error message displayed
  335: @c in the echo area.
  336: @kbd{C-x C-f}が正しく完了したことは、画面上に新たに現れるテキストと
  337: モード行に現れる新たなバッファ名で確認できます。
  338: 指定したファイルが存在せず作成もできない場合や読めない場合には、
  339: エコー領域にエラーメッセージが表示されます。
  341: @c   If you visit a file that is already in Emacs, @kbd{C-x C-f} does not make
  342: @c another copy.  It selects the existing buffer containing that file.
  343: @c However, before doing so, it checks that the file itself has not changed
  344: @c since you visited or saved it last.  If the file has changed, a warning
  345: @c message is printed.  @xref{Interlocking,,Simultaneous Editing}.
  346: すでに訪問しているファイルを再度訪問すると、
  347: @kbd{C-x C-f}は別のコピーを作らずに、
  348: そのファイルを入れた既存のバッファを選択します。
  349: しかし、そうするまえに、訪問してから、あるいは、保存してから以降に
  350: ファイルが変更されたかどうか検査します。
  351: ファイルが変更されていると警告メッセージを表示します。
  352: @xref{Interlocking}。
  354: @c @cindex creating files
  355: @cindex ファイルの新規作成
  356: @c   What if you want to create a new file?  Just visit it.  Emacs prints
  357: @c @samp{(New File)} in the echo area, but in other respects behaves as if
  358: @c you had visited an existing empty file.  If you make any changes and
  359: @c save them, the file is created.
  360: 新たにファイルを作りたいときにはどうするのでしょう?@code{ }
  361: 単に訪問すればよいのです。
  362: Emacsはエコー領域に@samp{(New File)}と表示しますが、
  363: それ以外に関しては、あたかも空のファイルが存在するかのようにふるまいます。
  364: 変更してから保存すれば、ファイルを作成できます。
  366: @c   Emacs recognizes from the contents of a file which convention it uses
  367: @c to separate lines---newline (used on GNU/Linux and on Unix),
  368: @c carriage-return linefeed (used on Microsoft systems), or just
  369: @c carriage-return (used on the Macintosh)---and automatically converts the
  370: @c contents to the normal Emacs convention, which is that the newline
  371: @c character separates lines.  This is a part of the general feature of
  372: @c coding system conversion (@pxref{Coding Systems}), and makes it possible
  373: @c to edit files imported from various different operating systems with
  374: @c equal convenience.  If you change the text and save the file, Emacs
  375: @c performs the inverse conversion, changing newlines back into
  376: @c carriage-return linefeed or just carriage-return if appropriate.
  377: Emacsはファイルの内容から、行区切りの方法、
  378: すなわち、(GNU/LinuxやUNIXで使われる)改行、
  379: (Microsoftシステムで使われる)復帰改行、
  380: (Machintoshで使われる)復帰のみを認識します。
  381: さらに、Emacsの通常の方法、つまり、改行文字で行を区切るように
  382: 内容を自動的に変換します。
  383: これは、コーディングシステム変換(@pxref{Coding Systems})の
  384: 一般的な機能の一部であり、
  385: さまざまの異なるオペレーティングシステムから持ってきた
  386: ファイルを同一の方法で編集できるようにします。
  387: テキストを変更してファイルに保存すると、
  388: Emacsは逆変換を行い、必要ならば、改行を
  389: 復帰改行や復帰のみに戻します。
  391: @vindex find-file-run-dired
  392: @c   If the file you specify is actually a directory, @kbd{C-x C-f} invokes
  393: @c Dired, the Emacs directory browser, so that you can ``edit'' the contents
  394: @c of the directory (@pxref{Dired}).  Dired is a convenient way to delete,
  395: @c look at, or operate on the files in the directory.  However, if the
  396: @c variable @code{find-file-run-dired} is @code{nil}, then it is an error
  397: @c to try to visit a directory.
  398: 指定したファイルが実際にはディレクトリならば、
  399: @kbd{C-x C-f}はEmacsのディレクトリブラウザであるdiredを起動するので、
  400: ディレクトリの内容を『編集』できます(@pxref{Dired})。
  401: diredは、ディレクトリ内のファイルを、消去したり、眺めたり、
  402: 操作するのに便利です。
  403: しかし、変数 @code{find-file-run-dired}が@code{nil}ならば、
  404: ディレクトリを訪問しようとするとエラーになります。
  406: @c   If the file name you specify contains wildcard characters, Emacs
  407: @c visits all the files that match it.  @xref{Quoted File Names}, if you
  408: @c want to visit a file whose name actually contains wildcard characters.
  409: 指定したファイル名にワイルドカード文字が含まれていると、
  410: Emacsは一致するすべてのファイルを訪問します。
  411: ワイルドカード文字そのものを含む名前のファイルを訪問するには、
  412: @xref{Quoted File Names}。
  414: @c   If you visit a file that the operating system won't let you modify,
  415: @c Emacs makes the buffer read-only, so that you won't go ahead and make
  416: @c changes that you'll have trouble saving afterward.  You can make the
  417: @c buffer writable with @kbd{C-x C-q} (@code{vc-toggle-read-only}).
  418: @c @xref{Misc Buffer}.
  419: オペレーティングシステムが変更を許さないファイルを訪問すると、
  420: Emacsはバッファを読み出し専用に設定するので、
  421: 修正できなかったり、修正できてもあとで保存に手間取ります。
  422: @kbd{C-x C-q}(@code{vc-toggle-read-only})で、
  423: バッファを書き込み可能にできます。
  424: @xref{Misc Buffer}。
  426: @kindex C-x C-r
  427: @findex find-file-read-only
  428: @c   Occasionally you might want to visit a file as read-only in order to
  429: @c protect yourself from entering changes accidentally; do so by visiting
  430: @c the file with the command @kbd{C-x C-r} (@code{find-file-read-only}).
  431: ときには、自分でまちがって変更しないように、
  432: ファイルを読み出し専用で訪問したい場合があります。
  433: そういう場合には、コマンド@kbd{C-x C-r}(@code{find-file-read-only})で
  434: ファイルを訪問します。
  436: @kindex C-x C-v
  437: @findex find-alternate-file
  438: @c   If you visit a nonexistent file unintentionally (because you typed the
  439: @c wrong file name), use the @kbd{C-x C-v} command
  440: @c (@code{find-alternate-file}) to visit the file you really wanted.
  441: @c @kbd{C-x C-v} is similar to @kbd{C-x C-f}, but it kills the current
  442: @c buffer (after first offering to save it if it is modified).  When it
  443: @c reads the file name to visit, it inserts the entire default file name in
  444: @c the buffer, with point just after the directory part; this is convenient
  445: @c if you made a slight error in typing the name.
  446: (ファイル名をまちがって打ったりして)
  447: 存在しないファイルを意図せずに訪問してしまったときには、
  448: @kbd{C-x C-v}コマンド(@code{find-alternate-file})を使って
  449: 本当の目的のファイルを訪問します。
  450: @kbd{C-x C-v}は@kbd{C-x C-f}と同様ですが、
  451: (バッファが変更されていればまず保存するかどうか聞いてから)
  452: カレントバッファを消去します。
  453: 訪問するファイル名を読むときには、
  454: ミニバッファにデフォルトファイル名全体を挿入し、
  455: ディレクトリ部分の直後にポイントを置きます。
  456: これは、ファイル名をほんの少しまちがって入力したときに便利です。
  458: @c   If you find a file which exists but cannot be read, @kbd{C-x C-f}
  459: @c signals an error.
  460: 存在するのに読めないファイルを訪問すると、
  461: @kbd{C-x C-f}はエラーを通知します。
  463: @kindex C-x 4 f
  464: @findex find-file-other-window
  465: @c   @kbd{C-x 4 f} (@code{find-file-other-window}) is like @kbd{C-x C-f}
  466: @c except that the buffer containing the specified file is selected in another
  467: @c window.  The window that was selected before @kbd{C-x 4 f} continues to
  468: @c show the same buffer it was already showing.  If this command is used when
  469: @c only one window is being displayed, that window is split in two, with one
  470: @c window showing the same buffer as before, and the other one showing the
  471: @c newly requested file.  @xref{Windows}.
  472: @kbd{C-x 4 f}(@code{find-file-other-window})は、
  473: 別のウィンドウで、指定したファイルを入れたバッファを選択することを除けば、
  474: @kbd{C-x C-f}と同じです。
  475: @kbd{C-x 4 f}を実行するまえに選択されていたウィンドウは、
  476: 同じバッファを表示したままです。
  477: ウィンドウを1つだけ表示しているときにこのコマンドを使うと、
  478: そのウィンドウを2つに分けて、一方のウィンドウにはまえと同様に同じバッファを
  479: 表示しますが、もう一方には新たに指示したファイルを表示します。
  480: @xref{Windows}。
  482: @kindex C-x 5 f
  483: @findex find-file-other-frame
  484: @c   @kbd{C-x 5 f} (@code{find-file-other-frame}) is similar, but opens a
  485: @c new frame, or makes visible any existing frame showing the file you
  486: @c seek.  This feature is available only when you are using a window
  487: @c system.  @xref{Frames}.
  488: @kbd{C-x 5 f}(@code{find-file-other-frame})も同様ですが、
  489: 新たなフレームを開くか、
  490: 捜しているファイルを表示している既存のフレームを見えるようにします。
  491: ウィンドウシステムを使っているときだけ、
  492: この機能を利用できます。
  493: @xref{Frames}。
  495: @findex find-file-literally
  496: @c   If you wish to edit a file as a sequence of characters with no special
  497: @c encoding or conversion, use the @kbd{M-x find-file-literally} command.
  498: @c It visits a file, like @kbd{C-x C-f}, but does not do format conversion
  499: @c (@pxref{Formatted Text}), character code conversion (@pxref{Coding
  500: @c Systems}), or automatic uncompression (@pxref{Compressed Files}).
  501: @c If you already have visited the same file in the usual (non-literal)
  502: @c manner, this command asks you whether to visit it literally instead.
  503: 特別な符号化や変換をせずにファイルを文字の列として編集したいときには、
  504: @kbd{M-x find-file-literally}コマンドを使います。
  505: このコマンドは、@kbd{C-x C-f}のようにファイルを訪問しますが、
  506: 形式変換(@pxref{Formatted Text})、文字コード変換(@pxref{Coding Systems})、
  507: (圧縮を)自動展開(@pxref{Compressed Files})といったことをしません。
  508: (そのままの文字の列としてではなく)普通の方法で同じファイルを
  509: すでに訪問している場合には、このコマンドは、
  510: そのままの文字の列として訪問するかどうか聞いてきます。
  512: @vindex find-file-hooks
  513: @vindex find-file-not-found-hooks
  514: @c   Two special hook variables allow extensions to modify the operation of
  515: @c visiting files.  Visiting a file that does not exist runs the functions
  516: @c in the list @code{find-file-not-found-hooks}; this variable holds a list
  517: @c of functions, and the functions are called one by one until one of them
  518: @c returns non-@code{nil}.  Any visiting of a file, whether extant or not,
  519: @c expects @code{find-file-hooks} to contain a list of functions and calls
  520: @c them all, one by one.  In both cases the functions receive no
  521: @c arguments.  Of these two variables, @code{find-file-not-found-hooks}
  522: @c takes effect first.  These variables are @emph{not} normal hooks, and
  523: @c their names end in @samp{-hooks} rather than @samp{-hook} to indicate
  524: @c that fact.  @xref{Hooks}.
  525: 2つの特別なフック変数で、ファイルを訪問する操作を修正して拡張できます。
  526: 存在しないファイルを訪問すると、
  527: @code{find-file-not-found-hooks}のリスト内の関数群を実行します。
  528: この変数は関数のリストを保持していて、
  529: 呼び出した関数の中のどれかが@code{nil}以外を返すまで1つ1つ順に呼び出します。
  530: ファイルが存在するかどうかに関わらず、
  531: どんなファイルを訪問するときでも
  532: @code{find-file-hooks}には関数のリストが入っていると仮定され、
  533: それらの1つ1つを順にすべて呼び出します。
  534: いずれの場合でも、関数は引数を受け取りません。
  535: 2つの変数のうち、先に@code{find-file-not-found-hooks}を使います。
  536: これらの変数はノーマルフックではありま@emph{せん}。
  537: これらの名前が@samp{-hook}ではなくて@samp{-hooks}で終っていることで、
  538: その事実を表しています。
  539: @xref{Hooks}。
  541: @c   There are several ways to specify automatically the major mode for
  542: @c editing the file (@pxref{Choosing Modes}), and to specify local
  543: @c variables defined for that file (@pxref{File Variables}).
  544: 編集するファイルに対して自動的にメジャーモード(@pxref{Choosing Modes})を
  545: 設定し、そのファイルに対して特別なローカル変数(@pxref{File Variables})を
  546: 定義する方法がいくつかあります。
  548: @node Saving, Reverting, Visiting, Files
  549: @c @section Saving Files
  550: @section ファイルを保存する
  552: @c   @dfn{Saving} a buffer in Emacs means writing its contents back into the file
  553: @c that was visited in the buffer.
  554: Emacsにおいてバッファを@dfn{保存}するとは、
  555: バッファの内容をそのバッファの訪問先のファイルへ書き戻すことです。
  557: @table @kbd
  558: @item C-x C-s
  559: @c Save the current buffer in its visited file (@code{save-buffer}).
  560: カレントバッファを訪問先のファイルに保存する(@code{save-buffer})。
  561: @item C-x s
  562: @c Save any or all buffers in their visited files (@code{save-some-buffers}).
  563: 任意のバッファかすべてのバッファをそれぞれの訪問先のファイルに保存する
  564: (@code{save-some-buffers})。
  565: @item M-~
  566: @c Forget that the current buffer has been changed (@code{not-modified}).
  567: カレントバッファを変更していないことにする(@code{not-modified})。
  568: @item C-x C-w
  569: @c Save the current buffer in a specified file (@code{write-file}).
  570: カレントバッファを指定したファイルに保存する(@code{write-file})。
  571: @item M-x set-visited-file-name
  572: @c Change file the name under which the current buffer will be saved.
  573: カレントバッファを保存するファイルの名前を変更する。
  574: @end table
  576: @kindex C-x C-s
  577: @findex save-buffer
  578: @c   When you wish to save the file and make your changes permanent, type
  579: @c @kbd{C-x C-s} (@code{save-buffer}).  After saving is finished, @kbd{C-x C-s}
  580: @c displays a message like this:
  581: ファイルを保存して変更を恒久的なものとするには、
  582: @kbd{C-x C-s}(@code{save-buffer})と打ちます。
  583: 保存を完了すると@kbd{C-x C-s}はつぎのようなメッセージを表示します。
  585: @example
  586: Wrote /u/rms/gnu/gnu.tasks
  587: @end example
  589: @noindent
  590: @c If the selected buffer is not modified (no changes have been made in it
  591: @c since the buffer was created or last saved), saving is not really done,
  592: @c because it would have no effect.  Instead, @kbd{C-x C-s} displays a message
  593: @c like this in the echo area:
  594: 選択されているバッファが変更されていなければ
  595: (バッファを作って以降、あるいは、最後に保存して以降に、変更されていない)、
  596: 保存しても何もならないので実際には保存しません。
  597: かわりに、@kbd{C-x C-s}はつぎのようなメッセージをエコー領域に表示します。
  599: @example
  600: (No changes need to be saved)
  601: @end example
  603: @kindex C-x s
  604: @findex save-some-buffers
  605: @c   The command @kbd{C-x s} (@code{save-some-buffers}) offers to save any
  606: @c or all modified buffers.  It asks you what to do with each buffer.  The
  607: @c possible responses are analogous to those of @code{query-replace}:
  608: コマンド@kbd{C-x s}(@code{save-some-buffers})は、
  609: 変更された任意のバッファやすべてのバッファを保存できるようにします。
  610: 各バッファについて、何をするか聞いてきます。
  611: このとき選べる返答は、@code{query-replace}に対するものに似ています。
  613: @table @kbd
  614: @item y
  615: @c Save this buffer and ask about the rest of the buffers.
  616: このバッファを保存し、残りのバッファについても質問する。
  617: @item n
  618: @c Don't save this buffer, but ask about the rest of the buffers.
  619: このバッファを保存しないが、残りのバッファについては質問する。
  620: @item !
  621: @c Save this buffer and all the rest with no more questions.
  622: @c @c following generates acceptable underfull hbox
  623: このバッファを保存し、
  624: 残りのすべてのバッファについても質問せずに保存する。
  625: @item @key{RET}
  626: @c Terminate @code{save-some-buffers} without any more saving.
  627: 何も保存せずに@code{save-some-buffers}を終了する。
  628: @item .
  629: @c Save this buffer, then exit @code{save-some-buffers} without even asking
  630: @c about other buffers.
  631: このバッファを保存し、他のバッファについては何も聞かずに
  632: @code{save-some-buffers}を終える。
  633: @item C-r
  634: @c View the buffer that you are currently being asked about.  When you exit
  635: @c View mode, you get back to @code{save-some-buffers}, which asks the
  636: @c question again.
  637: 質問対象のバッファを閲覧する。
  638: 閲覧(view)モードから抜けると、@code{save-some-buffers}に戻りふたたび質問する。
  639: @item C-h
  640: @c Display a help message about these options.
  641: これらのオプションについてのヘルプメッセージを表示する。
  642: @end table
  644: @c   @kbd{C-x C-c}, the key sequence to exit Emacs, invokes
  645: @c @code{save-some-buffers} and therefore asks the same questions.
  646: Emacsから抜けるキー列@kbd{C-x C-c}は、
  647: @code{save-some-buffers}を起動するので、同じ質問をしてきます。
  649: @kindex M-~
  650: @findex not-modified
  651: @c   If you have changed a buffer but you do not want to save the changes,
  652: @c you should take some action to prevent it.  Otherwise, each time you use
  653: @c @kbd{C-x s} or @kbd{C-x C-c}, you are liable to save this buffer by
  654: @c mistake.  One thing you can do is type @kbd{M-~} (@code{not-modified}),
  655: @c which clears out the indication that the buffer is modified.  If you do
  656: @c this, none of the save commands will believe that the buffer needs to be
  657: @c saved.  (@samp{~} is often used as a mathematical symbol for `not'; thus
  658: @c @kbd{M-~} is `not', metafied.)  You could also use
  659: @c @code{set-visited-file-name} (see below) to mark the buffer as visiting
  660: @c a different file name, one which is not in use for anything important.
  661: @c Alternatively, you can cancel all the changes made since the file was
  662: @c visited or saved, by reading the text from the file again.  This is
  663: @c called @dfn{reverting}.  @xref{Reverting}.  You could also undo all the
  664: @c changes by repeating the undo command @kbd{C-x u} until you have undone
  665: @c all the changes; but reverting is easier.
  666: バッファを変更したけれども変更を保存したくないならば、
  667: それを避けるための処置をすべきでしょう。
  668: そうしないと、@kbd{C-x s}や@kbd{C-x C-c}を使うたびに、
  669: まちがってバッファを保存してしまいがちです。
  670: 1つの方法は、@kbd{M-~}(@code{not-modified})と打つことです。
  671: これは、バッファが変更されていることを示すフラグを消します。
  672: こうしておくと、保存コマンドはバッファを保存する必要がないと結論します。
  673: (@samp{~}は「否定」(not)を意味する数学記号としてしばしば使われる。
  674: よって@kbd{M-~}は、メタ付き「否定」。)
  675: @code{set-visited-file-name}(下記参照)を使って、
  676: 別のファイルを訪問しているバッファである旨の印を付けることもできます。
  677: このときファイル名には、重要でない使っていないものを指定します。
  678: あるいは、ファイルからテキストを再度読み直して、
  679: ファイルを訪問したり保存したりした以降のすべての変更を取り消します。
  680: これを@dfn{復元}(reverting)といいます。
  681: @xref{Reverting}。
  682: すべての変更がもとに戻るまでアンドゥコマンド@kbd{C-x u}を繰り返し使って、
  683: 変更しなかったことにもできます。
  684: しかし、復元のほうが簡単です。
  686: @findex set-visited-file-name
  687: @c   @kbd{M-x set-visited-file-name} alters the name of the file that the
  688: @c current buffer is visiting.  It reads the new file name using the
  689: @c minibuffer.  Then it specifies the visited file name and changes the
  690: @c buffer name correspondingly (as long as the new name is not in use).
  691: @c @code{set-visited-file-name} does not save the buffer in the newly
  692: @c visited file; it just alters the records inside Emacs in case you do
  693: @c save later.  It also marks the buffer as ``modified'' so that @kbd{C-x
  694: @c C-s} in that buffer @emph{will} save.
  695: @kbd{M-x set-visited-file-name}は、
  696: カレントバッファで訪問しているファイルの名前を変更します。
  697: このコマンドは、ミニバッファで新たなファイル名を読み取ります。
  698: そして、訪問先ファイル名を設定し直し、
  699: それに従って(新しい名前が使われていなければ)
  700: バッファ名も変更します。
  701: @code{set-visited-file-name}は、
  702: 新たに指定した訪問先のファイルへはバッファを保存しません。
  703: あとで保存する場合に備えて、Emacs内部の記録を変更するだけです。
  704: また、バッファには『変更された』旨の印を付け、
  705: @kbd{C-x C-s}がそのバッファを保存@emph{しようとする}ようにします。
  707: @kindex C-x C-w
  708: @findex write-file
  709: @c   If you wish to mark the buffer as visiting a different file and save it
  710: @c right away, use @kbd{C-x C-w} (@code{write-file}).  It is precisely
  711: @c equivalent to @code{set-visited-file-name} followed by @kbd{C-x C-s}.
  712: @c @kbd{C-x C-s} used on a buffer that is not visiting a file has the
  713: @c same effect as @kbd{C-x C-w}; that is, it reads a file name, marks the
  714: @c buffer as visiting that file, and saves it there.  The default file name in
  715: @c a buffer that is not visiting a file is made by combining the buffer name
  716: @c with the buffer's default directory.
  717: 別のファイルを訪問しているという旨の印をバッファに付けて、
  718: ただちに保存したい場合には、@kbd{C-x C-w}(@code{write-file})を使います。
  719: このコマンドは、@code{set-visited-file-name}に続けて@kbd{C-x C-s}を
  720: 実行するのと等価です。
  721: ファイルを訪問していないバッファに対して@kbd{C-x C-s}を使うことは、
  722: @kbd{C-x C-w}と同じ効果があります。
  723: つまり、ファイル名を読み取り、
  724: バッファにはそのファイルを訪問しているという印を付け、
  725: バッファをそのファイルに保存します。
  726: ファイルを訪問していないバッファのデフォルトのファイル名は、
  727: バッファのデフォルトディレクトリとバッファ名を組み合わせて作ります。
  729: @c   If the new file name implies a major mode, then @kbd{C-x C-w} switches
  730: @c to that major mode, in most cases.  The command
  731: @c @code{set-visited-file-name} also does this.  @xref{Choosing Modes}.
  732: 新しいファイル名がメジャーモードを示唆するものであれば、
  733: @kbd{C-x C-w}は、多くの場合、そのメジャーモードに切り替えます。
  734: コマンド@code{set-visited-file-name}もそのようにします。
  735: @xref{Choosing Modes}。
  737: @c   If Emacs is about to save a file and sees that the date of the latest
  738: @c version on disk does not match what Emacs last read or wrote, Emacs
  739: @c notifies you of this fact, because it probably indicates a problem caused
  740: @c by simultaneous editing and requires your immediate attention.
  741: @c @xref{Interlocking,, Simultaneous Editing}.
  742: Emacsがファイルを保存しようとするときに、
  743: ディスク上の最新版の日付がEmacsが最後に読み書きしたものと合わなかったら、
  744: Emacsはそのことを通知します。
  745: というのは、同時に編集したために引き起こされた問題である可能性があるので、
  746: ユーザーにただちに知らせる必要があるからです。
  747: @xref{Interlocking}。
  749: @vindex require-final-newline
  750: @c   If the variable @code{require-final-newline} is non-@code{nil}, Emacs
  751: @c puts a newline at the end of any file that doesn't already end in one,
  752: @c every time a file is saved or written.  The default is @code{nil}.
  753: 変数@code{require-final-newline}が@code{nil}以外だと、
  754: Emacsはファイルを保存するたびに、
  755: ファイルの末尾に改行がなければ改行を挿入します。
  756: デフォルトは@code{nil}です。
  758: @menu
  759: * Backup::              How Emacs saves the old version of your file.
  760: * Interlocking::        How Emacs protects against simultaneous editing
  761:                           of one file by two users.
  762: @end menu
  764: @node Backup, Interlocking, , Saving
  765: @c @subsection Backup Files
  766: @c @cindex backup file
  767: @subsection バックアップファイル
  768: @cindex バックアップファイル
  769: @vindex make-backup-files
  770: @vindex vc-make-backup-files
  771: @vindex backup-enable-predicate
  773: @c   On most operating systems, rewriting a file automatically destroys all
  774: @c record of what the file used to contain.  Thus, saving a file from Emacs
  775: @c throws away the old contents of the file---or it would, except that
  776: @c Emacs carefully copies the old contents to another file, called the
  777: @c @dfn{backup} file, before actually saving.
  778: 多くのオペレーティングシステムでは、
  779: ファイルを書き換えるとファイルに入っていたそれまでの記録は
  780: 自動的に破棄されます。
  781: したがって、Emacsでファイルを保存すると、ファイルの古い内容は捨てられます。
  782: しかし、実際に保存するまえに、古い内容を@dfn{バックアップ}ファイル
  783: と呼ばれる別のファイルにEmacsが注意深くコピーすれば、
  784: 古い内容は破棄されません。
  786: @c   For most files, the variable @code{make-backup-files} determines
  787: @c whether to make backup files.  On most operating systems, its default
  788: @c value is @code{t}, so that Emacs does write backup files.
  789: ほとんどのファイルでは、
  790: バックアップファイルを作るかどうかは
  791: 変数@code{make-backup-files}で決まります。
  792: 多くのオペレーティングシステムでは、この変数のデフォルト値は@code{t}であり、
  793: Emacsはバックアップファイルを作ります。 
  795: @c   For files managed by a version control system (@pxref{Version
  796: @c Control}), the variable @code{vc-make-backup-files} determines whether
  797: @c to make backup files.  By default, it is @code{nil}, since backup files
  798: @c are redundant when you store all the previous versions in a version
  799: @c control system.  @xref{VC Workfile Handling}.
  800: 版管理システム(@pxref{Version Control})が管理するファイルに対しては、
  801: バックアップファイルを作るかどうかは
  802: 変数@code{vc-make-backup-files}で決まります。
  803: デフォルトは@code{nil}です。
  804: というのは、すべての古い版を版管理システムに保管してあるので、
  805: バックアップファイルは冗長だからです。
  806: @xref{VC Workfile Handling}。
  808: @c   The default value of the @code{backup-enable-predicate} variable
  809: @c prevents backup files being written for files in @file{/tmp}.
  810: 変数@code{backup-enable-predicate}のデフォルト値は、
  811: @file{/tmp}にあるファイルのバックアップファイルを
  812: 作らないようにします。
  814: @c   At your option, Emacs can keep either a single backup file or a series of
  815: @c numbered backup files for each file that you edit.
  816: Emacsでは、単一のバックアップファイルを保持することも、
  817: 編集した各ファイルごとに一連の番号付きバックアップファイルを
  818: 保持することもできます。
  820: @c   Emacs makes a backup for a file only the first time the file is saved
  821: @c from one buffer.  No matter how many times you save a file, its backup file
  822: @c continues to contain the contents from before the file was visited.
  823: @c Normally this means that the backup file contains the contents from before
  824: @c the current editing session; however, if you kill the buffer and then visit
  825: @c the file again, a new backup file will be made by the next save.
  826: Emacsがファイルのバックアップファイルを作るのは、
  827: バッファからそのファイルへ最初に保存したときだけです。
  828: たとえ何度ファイルを保存したとしても、
  829: そのバックアップファイルは、ファイルを訪問する以前の内容を保持し続けます。
  830: 通常これは、今の編集セッションを始める以前の内容を
  831: バックアップファイルが保持していることを意味します。
  832: しかしながら、バッファを消去してから再度ファイルを訪問すると、
  833: それ以降に保存するときには新たにバックアップファイルを作ります。
  835: @c   You can also explicitly request making another backup file from a
  836: @c buffer even though it has already been saved at least once.  If you save
  837: @c the buffer with @kbd{C-u C-x C-s}, the version thus saved will be made
  838: @c into a backup file if you save the buffer again.  @kbd{C-u C-u C-x C-s}
  839: @c saves the buffer, but first makes the previous file contents into a new
  840: @c backup file.  @kbd{C-u C-u C-u C-x C-s} does both things: it makes a
  841: @c backup from the previous contents, and arranges to make another from the
  842: @c newly saved contents, if you save again.
  843: 少なくとも一度は保存したとしても、
  844: バッファからもう1つバックアップファイルを作るように明示的に
  845: 指示することもできます。
  846: @kbd{C-u C-x C-s}でバッファを保存すると、
  847: このとき保存した版は、バッファを再度保存するときには
  848: バックアップファイルになります。
  849: @kbd{C-u C-u C-x C-s}もバッファを保存しますが、
  850: まずファイルの古い内容をバックアップファイルにします。
  851: @kbd{C-u C-u C-u C-x C-s} はその両方を行います。
  852: ファイルの以前の内容からバックアップファイルを作り、
  853: さらに、バッファを再度保存するとこのとき保存した版から
  854: もう1つバックアップファイルを作るように準備します。
  856: @menu
  857: * Names: Backup Names.		How backup files are named;
  858: 				  choosing single or numbered backup files.
  859: * Deletion: Backup Deletion.	Emacs deletes excess numbered backups.
  860: * Copying: Backup Copying.	Backups can be made by copying or renaming.
  861: @end menu
  863: @node Backup Names, Backup Deletion, , Backup
  864: @c @subsubsection Single or Numbered Backups
  865: @subsubsection 単一バックアップファイルと番号付きバックアップファイル
  867: @c   If you choose to have a single backup file (this is the default),
  868: @c the backup file's name is constructed by appending @samp{~} to the
  869: @c file name being edited; thus, the backup file for @file{eval.c} would
  870: @c be @file{eval.c~}.
  871: 単一バックアップファイルを作ることを選択すると(デフォルト)、
  872: バックアップファイルの名前は、
  873: 編集しているファイルの名前に@samp{~}を付加したものになります。
  874: したがって、@file{eval.c}のバックアップファイルは@file{eval.c~}となります。
  876: @c   If you choose to have a series of numbered backup files, backup file
  877: @c names are made by appending @samp{.~}, the number, and another @samp{~} to
  878: @c the original file name.  Thus, the backup files of @file{eval.c} would be
  879: @c called @file{eval.c.~1~}, @file{eval.c.~2~}, and so on, through names
  880: @c like @file{eval.c.~259~} and beyond.
  881: 番号付きの一連のバックアップファイルを作ることを選択すると、
  882: バックアップファイルの名前は、もとのファイル名に
  883: @samp{.~}と数字ともう1つ@samp{~}を付加したものになります。
  884: したがって、@file{eval.c}のバックアップファイルは、
  885: @file{eval.c.~1~}、@file{eval.c.~2~}、…、@file{eval.c.~259~}というように
  886: どこまでも続きます。
  888: @c   If protection stops you from writing backup files under the usual names,
  889: @c the backup file is written as @file{%backup%~} in your home directory.
  890: @c Only one such file can exist, so only the most recently made such backup is
  891: @c available.
  892: 保護機構のために
  893: 普通の名前でバックアップファイルを書けなくなると、
  894: ユーザーのホームディレクトリの@file{%backup%~}に
  895: バックアップファイルを書きます。
  896: そのファイルはたった1つしか存在できないので、
  897: 最新のバックアップにしか利用できません。
  899: @vindex version-control
  900: @c   The choice of single backup or numbered backups is controlled by the
  901: @c variable @code{version-control}.  Its possible values are
  902: 単一バックアップか番号付きバックアップかの選択は、
  903: 変数@code{version-control}で制御されます。
  904: この変数に設定できる値はつぎのとおりです。
  906: @table @code
  907: @item t
  908: @c Make numbered backups.
  909: 番号付きバックアップを作る。
  910: @item nil
  911: @c Make numbered backups for files that have numbered backups already.
  912: @c Otherwise, make single backups.
  913: ファイルに対して番号付きバックアップファイルがすでにあるならば
  914: 番号付きバックアップを作る。
  915: さもなければ、単一バックアップを作る。
  916: @item never
  917: @c Do not in any case make numbered backups; always make single backups.
  918: どんな場合にも番号付きバックアップを作らない。
  919: つねに単一バックアップを作る。
  920: @end table
  922: @noindent
  923: @c You can set @code{version-control} locally in an individual buffer to
  924: @c control the making of backups for that buffer's file.  For example,
  925: @c Rmail mode locally sets @code{version-control} to @code{never} to make sure
  926: @c that there is only one backup for an Rmail file.  @xref{Locals}.
  927: 各バッファではローカルに@code{version-control}を設定できるので、
  928: そのバッファのファイルに対するバックアップの作成方法を制御できます。
  929: たとえば、rmailモードでは、
  930: rmailファイルのバックアップを1個だけに限定するために、
  931: @code{version-control}にはローカルに@code{never}を設定します。
  932: @xref{Locals}。
  934: @c @cindex @code{VERSION_CONTROL} environment variable
  935: @cindex 環境変数@code{VERSION_CONTROL}
  936: @cindex @code{VERSION_CONTROL}(環境変数)
  937: @c   If you set the environment variable @code{VERSION_CONTROL}, to tell
  938: @c various GNU utilities what to do with backup files, Emacs also obeys the
  939: @c environment variable by setting the Lisp variable @code{version-control}
  940: @c accordingly at startup.  If the environment variable's value is @samp{t}
  941: @c or @samp{numbered}, then @code{version-control} becomes @code{t}; if the
  942: @c value is @samp{nil} or @samp{existing}, then @code{version-control}
  943: @c becomes @code{nil}; if it is @samp{never} or @samp{simple}, then
  944: @c @code{version-control} becomes @code{never}.
  945: 環境変数@code{VERSION_CONTROL}を設定すると、
  946: さまざまなGNUユーティリティに
  947: どのようにバックアップファイルを扱うか指示できます。
  948: Emacsも環境変数に従って動作し、
  949: 開始時にそれに一致するようにLisp変数@code{version-control}を設定します。
  950: 環境変数の値が@samp{t}か@samp{numbered}なら、
  951: @code{version-control}は@code{t}になります。
  952: 環境変数の値が@samp{nil}か@samp{existing}なら、
  953: @code{version-control}は@code{nil}になります。
  954: 環境変数の値が@samp{never}か@samp{simple}なら、
  955: @code{version-control}は@code{never}になります。
  957: @node Backup Deletion, Backup Copying, Backup Names, Backup
  958: @c @subsubsection Automatic Deletion of Backups
  959: @subsubsection バックアップの自動削除
  961: @c   To prevent unlimited consumption of disk space, Emacs can delete numbered
  962: @c backup versions automatically.  Generally Emacs keeps the first few backups
  963: @c and the latest few backups, deleting any in between.  This happens every
  964: @c time a new backup is made.
  965: ディスク容量を無限に浪費することを避けるために、
  966: Emacsは番号付きバックアップの版を自動的に削除できます。
  967: 一般には、Emacsは始めの数個と最新の数個のバックアップを残して、
  968: そのあいだのものをすべて削除します。
  969: これは、新たにバックアップを作るごとに行われます。
  971: @vindex kept-old-versions
  972: @vindex kept-new-versions
  973: @c   The two variables @code{kept-old-versions} and
  974: @c @code{kept-new-versions} control this deletion.  Their values are,
  975: @c respectively the number of oldest (lowest-numbered) backups to keep and
  976: @c the number of newest (highest-numbered) ones to keep, each time a new
  977: @c backup is made.  Recall that these values are used just after a new
  978: @c backup version is made; that newly made backup is included in the count
  979: @c in @code{kept-new-versions}.  By default, both variables are 2.
  980: 2つの変数@code{kept-old-versions}と@code{kept-new-versions}は、
  981: このような削除を制御します。
  982: それらの値は、それぞれ、新たにバックアップを作るときに、
  983: 保持すべき最古(番号が最小)のバックアップの個数、
  984: 保持すべき最新(番号が最大)のバックアップの個数です。
  985: それらの値は、バックアップの新版を作った直後に使われることに
  986: 注意してください。
  987: 新たに作ったバックアップも、@code{kept-new-versions}の数に含まれます。
  988: デフォルトでは、どちらの変数も2です。
  990: @vindex delete-old-versions
  991: @c   If @code{delete-old-versions} is non-@code{nil}, the excess
  992: @c middle versions are deleted without a murmur.  If it is @code{nil}, the
  993: @c default, then you are asked whether the excess middle versions should
  994: @c really be deleted.
  995: @code{delete-old-versions}が@code{nil}以外ならば、
  996: 何もいわずに余分な中間の版を削除します。
  997: デフォルト値である@code{nil}ならば、
  998: 余分な中間の版を削除するかどうかを聞いてきます。
 1000: @c   Dired's @kbd{.} (Period) command can also be used to delete old versions.
 1001: @c @xref{Dired Deletion}.
 1002: diredの@kbd{.}(ピリオド)コマンドも古い版を削除するために使えます。
 1003: @xref{Dired Deletion}。
 1005: @node Backup Copying,  , Backup Deletion, Backup
 1006: @c @subsubsection Copying vs.@: Renaming
 1007: @subsubsection コピーと改名
 1009: @c   Backup files can be made by copying the old file or by renaming it.  This
 1010: @c makes a difference when the old file has multiple names.  If the old file
 1011: @c is renamed into the backup file, then the alternate names become names for
 1012: @c the backup file.  If the old file is copied instead, then the alternate
 1013: @c names remain names for the file that you are editing, and the contents
 1014: @c accessed by those names will be the new contents.
 1015: バックアップファイルは、古いファイルをコピーする、あるいは、
 1016: それを改名することで作ります。
 1017: 古いファイルに複数の名前があると、これには違いが出てきます。
 1018: 古いファイルを改名してバックアップファイルにすると、
 1019: (古いファイルの)別の名前もバックアップファイルを指します。
 1020: 古いファイルをコピーした場合には、
 1021: (古いファイルの)別の名前は編集しているファイルを指し続け、
 1022: その名前で参照される内容も新しい内容になります。
 1024: @c   The method of making a backup file may also affect the file's owner
 1025: @c and group.  If copying is used, these do not change.  If renaming is used,
 1026: @c you become the file's owner, and the file's group becomes the default
 1027: @c (different operating systems have different defaults for the group).
 1028: バックアップファイルを作る方法は、
 1029: 元ファイルの所有者とグループにも影響します。
 1030: コピーするならば、何も変更されません。
 1031: 改名すると、ファイルの所有者はあなたになり、
 1032: ファイルのグループはデフォルトになります
 1033: (オペレーティングシステムごとにグループのデフォルトは異なる)。
 1035: @c   Having the owner change is usually a good idea, because then the owner
 1036: @c always shows who last edited the file.  Also, the owners of the backups
 1037: @c show who produced those versions.  Occasionally there is a file whose
 1038: @c owner should not change; it is a good idea for such files to contain
 1039: @c local variable lists to set @code{backup-by-copying-when-mismatch}
 1040: @c locally (@pxref{File Variables}).
 1041: 所有者を変更することは、多くの場合、よいことです。
 1042: というのは、所有者がつねに最後にファイルを編集した人を表すからです。
 1043: 同様に、バックアップの所有者はその版を作った人を表します。
 1044: ときには、ファイルの所有者を変更すべきでないファイルがあります。
 1045: そのようなファイルについては、
 1046: @code{backup-by-copying-when-mismatch}をローカルに設定する
 1047: ローカル変数リストをファイルに入れておくのがよいです。
 1049: @vindex backup-by-copying
 1050: @vindex backup-by-copying-when-linked
 1051: @vindex backup-by-copying-when-mismatch
 1052: @c   The choice of renaming or copying is controlled by three variables.
 1053: @c Renaming is the default choice.  If the variable
 1054: @c @code{backup-by-copying} is non-@code{nil}, copying is used.  Otherwise,
 1055: @c if the variable @code{backup-by-copying-when-linked} is non-@code{nil},
 1056: @c then copying is used for files that have multiple names, but renaming
 1057: @c may still be used when the file being edited has only one name.  If the
 1058: @c variable @code{backup-by-copying-when-mismatch} is non-@code{nil}, then
 1059: @c copying is used if renaming would cause the file's owner or group to
 1060: @c change.  @code{backup-by-copying-when-mismatch} is @code{t} by default
 1061: @c if you start Emacs as the superuser.
 1062: 改名するかコピーするかは、3つの変数で制御されます。
 1063: デフォルトは、改名です。
 1064: 変数@code{backup-by-copying}が@code{nil}以外ならばコピーします。
 1065: @code{nil}のときには、
 1066: 変数@code{backup-by-copying-when-linked}が@code{nil}以外ならば、
 1067: 複数の名前を持つファイルではコピーし、
 1068: 編集中のファイルには名前が1つだけなら改名します。
 1069: 変数@code{backup-by-copying-when-mismatch}が@code{nil}以外のときには、
 1070: 改名するとファイルの所有者やグループが変更されるときにはコピーします。
 1071: スーパーユーザーでEmacsを起動すると、
 1072: @code{backup-by-copying-when-mismatch}のデフォルトは@code{t}です。
 1074: @c   When a file is managed with a version control system (@pxref{Version
 1075: @c Control}), Emacs does not normally make backups in the usual way for
 1076: @c that file.  But check-in and check-out are similar in some ways to
 1077: @c making backups.  One unfortunate similarity is that these operations
 1078: @c typically break hard links, disconnecting the file name you visited from
 1079: @c any alternate names for the same file.  This has nothing to do with
 1080: @c Emacs---the version control system does it.
 1081: ファイルを版管理システム(@pxref{Version Control})で管理している場合には、
 1082: 通常Emacsはそのファイルのバックアップを通常の方法では作りません。
 1083: チェックインとチェックアウトは、
 1084: ある意味でバックアップを作ることに似ています。
 1085: 残念なことに、
 1086: これらの操作は典型的にはハードリンクを切るという
 1087: 類似性があります。
 1088: つまり、あるファイルの別の名前を使っていたとすると
 1089: そのファイル名がなくなるのです。
 1090: Emacsにできることはありません。
 1091: 版管理システムが処理します。
 1093: @node Interlocking,  , Backup, Saving
 1094: @c @subsection Protection against Simultaneous Editing
 1095: @subsection 同時編集に対する保護
 1097: @c @cindex file dates
 1098: @c @cindex simultaneous editing
 1099: @cindex ファイルの日付
 1100: @cindex 同時編集
 1101: @c   Simultaneous editing occurs when two users visit the same file, both
 1102: @c make changes, and then both save them.  If nobody were informed that
 1103: @c this was happening, whichever user saved first would later find that his
 1104: @c changes were lost.
 1105: 2人のユーザーが同じファイルを訪問し、両者がそれを編集し、
 1106: 両者がそれを保存すると、同時編集が発生します。
 1107: こういったことが起きていることを誰も知らせなければ、
 1108: 最初に保存したユーザーは、あとになって自分の変更が失われていることを知るでしょう。
 1110: @c   On some systems, Emacs notices immediately when the second user starts
 1111: @c to change the file, and issues an immediate warning.  On all systems,
 1112: @c Emacs checks when you save the file, and warns if you are about to
 1113: @c overwrite another user's changes.  You can prevent loss of the other
 1114: @c user's work by taking the proper corrective action instead of saving the
 1115: @c file.
 1116: ある種のシステムでは、2人目のユーザーがファイルを変更し始めたことを
 1117: Emacsがただちに検知して警告を発します。
 1118: すべてのシステムでは、ファイルを保存するときにEmacsが検査して、
 1119: 他人の変更を上書きしようとしているならば警告します。
 1120: ファイルを保存するかわりに適切な修正操作を行えば、
 1121: 他人の作業結果を失うことを避けられます。
 1123: @findex ask-user-about-lock
 1124: @c @cindex locking files
 1125: @cindex ファイルをロックする
 1126: @c   When you make the first modification in an Emacs buffer that is
 1127: @c visiting a file, Emacs records that the file is @dfn{locked} by you.
 1128: @c (It does this by creating a symbolic link in the same directory with a
 1129: @c different name.)  Emacs removes the lock when you save the changes.  The
 1130: @c idea is that the file is locked whenever an Emacs buffer visiting it has
 1131: @c unsaved changes.
 1132: ファイルを訪問しているEmacsバッファで初めて修正を行うと、
 1133: Emacsはそのユーザーがファイルを@dfn{ロック}したと記録します。
 1134: (同じディレクトリ内に異なる名前のシンボリックリンクを作ることで実現する。)
 1135: 変更を保存するとEmacsはロックを消します。
 1136: つまり、ファイルを訪問しているEmacsバッファに未保存の変更があるときには
 1137: ファイルをロックしておくのです。
 1139: @c @cindex collision
 1140: @cindex 衝突
 1141: @c   If you begin to modify the buffer while the visited file is locked by
 1142: @c someone else, this constitutes a @dfn{collision}.  When Emacs detects a
 1143: @c collision, it asks you what to do, by calling the Lisp function
 1144: @c @code{ask-user-about-lock}.  You can redefine this function for the sake
 1145: @c of customization.  The standard definition of this function asks you a
 1146: @c question and accepts three possible answers:
 1147: 他人がロックしているファイルを訪問先とするバッファを
 1148: 修正し始めると@dfn{衝突}が起こります。
 1149: Emacsが衝突を検知すると、Lisp関数@code{ask-user-about-lock}を呼び出して、
 1150: どうするかを聞いてきます。
 1151: この関数をカスタマイズのために再定義することもできます。
 1152: この関数の標準の定義では、ユーザーに質問をし、3つの返答を受理します。
 1154: @table @kbd
 1155: @item s
 1156: @c Steal the lock.  Whoever was already changing the file loses the lock,
 1157: @c and you gain the lock.
 1158: ロックを横取りする。
 1159: ファイルをすでに変更していた人はロックを失い、
 1160: あなたがロックを得る。
 1161: @item p
 1162: @c Proceed.  Go ahead and edit the file despite its being locked by someone else.
 1163: 続行する。
 1164: 誰かがファイルをロックしたままであるにもかかわらず、
 1165: ファイルを編集する。
 1166: @item q
 1167: @c Quit.  This causes an error (@code{file-locked}) and the modification you
 1168: @c were trying to make in the buffer does not actually take place.
 1169: 放棄する。
 1170: これはエラー(@code{file-locked})を引き起こし、
 1171: バッファ内で修正しようとしたことは、実際には行われない。
 1172: @end table
 1174: @c   Note that locking works on the basis of a file name; if a file has
 1175: @c multiple names, Emacs does not realize that the two names are the same file
 1176: @c and cannot prevent two users from editing it simultaneously under different
 1177: @c names.  However, basing locking on names means that Emacs can interlock the
 1178: @c editing of new files that will not really exist until they are saved.
 1179: ロックはファイル名に基づいて動作することに注意してください。
 1180: ファイルに複数の名前があると、Emacsには2つの名前が同じファイルで
 1181: あることはわからないので、
 1182: 2人のユーザーが異なる名前で同じファイルを編集することは防げません。
 1183: しかし、名前に基づいたロックなので、
 1184: 保存しない限り実在しない新規ファイルの編集をEmacsはインターロック
 1185: @footnote{【訳注】進行中の動作が完了するまでは、
 1186: つぎの動作を開始させないようにすること。}
 1187: できます。
 1189: @c   Some systems are not configured to allow Emacs to make locks, and
 1190: @c there are cases where lock files cannot be written.  In these cases,
 1191: @c Emacs cannot detect trouble in advance, but it still can detect the
 1192: @c collision when you try to save a file and overwrite someone else's
 1193: @c changes.
 1194: Emacsがロックを作れる構成になっていないシステムもあります。
 1195: また、ロックファイルを書けない場合もあります。
 1196: こういった状況では、
 1197: Emacsがあらかじめトラブルを検知することはできませんが、
 1198: 他人の変更を上書きしてファイルを保存しようとしたときには、
 1199: 衝突を検知できます。
 1201: @c   If Emacs or the operating system crashes, this may leave behind lock
 1202: @c files which are stale.  So you may occasionally get warnings about
 1203: @c spurious collisions.  When you determine that the collision is spurious,
 1204: @c just use @kbd{p} to tell Emacs to go ahead anyway.
 1205: Emacsやオペレーティングシステムがクラッシュすると、
 1206: 古いロックファイルが残っていることあります。
 1207: そのため、ときどき偽の衝突についての警告を受けとることがあるかもしれません。
 1208: 偽の衝突であると確信できれば、
 1209: Emacsにとにかく続行するように指示する@kbd{p}を使います。
 1211: @c   Every time Emacs saves a buffer, it first checks the last-modification
 1212: @c date of the existing file on disk to verify that it has not changed since the
 1213: @c file was last visited or saved.  If the date does not match, it implies
 1214: @c that changes were made in the file in some other way, and these changes are
 1215: @c about to be lost if Emacs actually does save.  To prevent this, Emacs
 1216: @c prints a warning message and asks for confirmation before saving.
 1217: @c Occasionally you will know why the file was changed and know that it does
 1218: @c not matter; then you can answer @kbd{yes} and proceed.  Otherwise, you should
 1219: @c cancel the save with @kbd{C-g} and investigate the situation.
 1220: Emacsは、バッファを保存するたびに、
 1221: ディスク上のファイルの最終変更日時が最後に訪問/保存したときから
 1222: 更新されていないことをまず検査します。
 1223: 変更日時が不一致ならば、なんらかの方法でそのファイルが変更されたことを示し、
 1224: Emacsが本当に保存するとそれらの変更が失われてしまいます。
 1225: これを避けるために、Emacsは警告のメッセージを表示し、
 1226: 保存するまえに確認を求めます。
 1227: ファイルが変更された理由を承知していて、
 1228: それが問題でないことを知っていることもあるでしょう。
 1229: そうならば、@kbd{yes}と答えて続行できます。
 1230: さもなければ、@kbd{C-g}で保存を中断して、その事態を調査するべきです。
 1232: @c   The first thing you should do when notified that simultaneous editing
 1233: @c has already taken place is to list the directory with @kbd{C-u C-x C-d}
 1234: @c (@pxref{Directories}).  This shows the file's current author.  You
 1235: @c should attempt to contact him to warn him not to continue editing.
 1236: @c Often the next step is to save the contents of your Emacs buffer under a
 1237: @c different name, and use @code{diff} to compare the two files.@refill
 1238: 同時編集が発生したことを知らされたときにまず行うべきことは、
 1239: @kbd{C-u C-x C-d}(@pxref{Directories})でディレクトリ一覧を見ることです。
 1240: このコマンドは、ファイルの現在の所有者を表示します。
 1241: その人に連絡して、編集を続けないように警告しましょう。
 1242: そのつぎの段階は、別の名前でEmacsバッファを保存して、
 1243: @code{diff}で2つのファイルを比較することでしょう。
 1245: @node Reverting, Auto Save, Saving, Files
 1246: @c @section Reverting a Buffer
 1247: @section バッファを復元する
 1248: @findex revert-buffer
 1249: @c @cindex drastic changes
 1250: @cindex 徹底的な変更
 1252: @c   If you have made extensive changes to a file and then change your mind
 1253: @c about them, you can get rid of them by reading in the previous version
 1254: @c of the file.  To do this, use @kbd{M-x revert-buffer}, which operates on
 1255: @c the current buffer.  Since reverting a buffer unintentionally could lose
 1256: @c a lot of work, you must confirm this command with @kbd{yes}.
 1257: 広範囲にファイルを変更したあとで気が変わったときには、
 1258: そのような変更を捨てるためにファイルのまえの版を読み込みます。
 1259: これには、カレントバッファに作用する
 1260: @kbd{M-x revert-buffer}を使います。
 1261: 意図せずにバッファを復元することは、
 1262: たくさんの作業結果を失うことになるので、
 1263: このコマンドには@kbd{yes}で確認を与える必要があります。
 1265: @c   @code{revert-buffer} keeps point at the same distance (measured in
 1266: @c characters) from the beginning of the file.  If the file was edited only
 1267: @c slightly, you will be at approximately the same piece of text after
 1268: @c reverting as before.  If you have made drastic changes, the same value of
 1269: @c point in the old file may address a totally different piece of text.
 1270: @code{revert-buffer}は、ファイルの先頭から同じ距離(文字数)に
 1271: ポイントを保ちます。
 1272: 少し編集しただけなら、復元前後のポイント位置はだいたい同じ部分にあります。
 1273: 徹底的に変更してしまったときには、
 1274: 古いファイルでのポイント位置では
 1275: まったく異なるテキスト部分に位置付けるでしょう。
 1277: @c   Reverting marks the buffer as ``not modified'' until another change is
 1278: @c made.
 1279: 復元すると、改めて変更するまでは、
 1280: そのバッファには『変更なし』の印が付きます。
 1282: @c   Some kinds of buffers whose contents reflect data bases other than files,
 1283: @c such as Dired buffers, can also be reverted.  For them, reverting means
 1284: @c recalculating their contents from the appropriate data base.  Buffers
 1285: @c created explicitly with @kbd{C-x b} cannot be reverted; @code{revert-buffer}
 1286: @c reports an error when asked to do so.
 1287: diredバッファのように、ファイル以外のデータを反映するバッファでも
 1288: 復元できる場合があります。
 1289: その場合、復元とは、適切なデータに基づいて内容を計算し直すことを意味します。
 1290: @kbd{C-x b}で明示的に作ったバッファを復元することはできません。
 1291: そういった指示をすると、@code{revert-buffer}はエラーを報告します。
 1293: @vindex revert-without-query
 1294: @c   When you edit a file that changes automatically and frequently---for
 1295: @c example, a log of output from a process that continues to run---it may be
 1296: @c useful for Emacs to revert the file without querying you, whenever you
 1297: @c visit the file again with @kbd{C-x C-f}.
 1298: 自動的にかつ頻繁に変更されるファイル、
 1299: たとえば、実行中のプロセスから出力されるログ、
 1300: を編集するときには、@kbd{C-x C-f}でファイルを再訪問すると
 1301: 何も聞かずにファイルを復元できると便利です。
 1303: @c   To request this behavior, set the variable @code{revert-without-query}
 1304: @c to a list of regular expressions.  When a file name matches one of these
 1305: @c regular expressions, @code{find-file} and @code{revert-buffer} will
 1306: @c revert it automatically if it has changed---provided the buffer itself
 1307: @c is not modified.  (If you have edited the text, it would be wrong to
 1308: @c discard your changes.)
 1309: こういったふるまいを指示するには、
 1310: 変数@code{revert-without-query}に正規表現のリストを設定します。
 1311: これらの正規表現の1つにファイル名が一致すると、
 1312: @code{find-file}と@code{revert-buffer}は、
 1313: バッファが変更されていない限り、
 1314: そのファイルが変更されていても復元します。
 1315: (テキストを編集してしまったときには、
 1316: 変更を捨てさるのはまちがっている。)
 1318: @node Auto Save, File Aliases, Reverting, Files
 1319: @c @section Auto-Saving: Protection Against Disasters
 1320: @c @cindex Auto Save mode
 1321: @c @cindex mode, Auto Save
 1322: @c @cindex crashes
 1323: @section 自動保存、不慮の事故に対する備え
 1324: @cindex 自動保存(Auto Save mode)
 1325: @cindex モード、Auto Save
 1326: @cindex クラッシュ
 1328: @c   Emacs saves all the visited files from time to time (based on counting
 1329: @c your keystrokes) without being asked.  This is called @dfn{auto-saving}.
 1330: @c It prevents you from losing more than a limited amount of work if the
 1331: @c system crashes.
 1332: Emacsは(打鍵数に基づいて)定期的に、
 1333: 訪問しているすべてのファイルを何も聞かずに保存します。
 1334: これを@dfn{自動保存}(auot-saving)と呼びます。
 1335: これは、システムがクラッシュしたときに
 1336: 失ってしまう作業結果をある程度以下に制限します。
 1338: @c   When Emacs determines that it is time for auto-saving, each buffer is
 1339: @c considered, and is auto-saved if auto-saving is turned on for it and it
 1340: @c has been changed since the last time it was auto-saved.  The message
 1341: @c @samp{Auto-saving...} is displayed in the echo area during auto-saving,
 1342: @c if any files are actually auto-saved.  Errors occurring during
 1343: @c auto-saving are caught so that they do not interfere with the execution
 1344: @c of commands you have been typing.
 1345: 自動保存を実施する時間になるとEmacsは各バッファを調べて、
 1346: そのバッファに自動保存が指定されていて、かつ、
 1347: 最後に自動保存した以後に変更されている場合は、
 1348: そのバッファを自動保存します。
 1349: 実際にファイルを自動保存すると、
 1350: エコー領域にメッセージ@samp{Auto-saving...}を表示します。
 1351: 自動保存の最中に発生したエラーは捕獲されるので、
 1352: 打ち込んだコマンドの実行に干渉することはありません。
 1354: @menu
 1355: * Files: Auto Save Files.       The file where auto-saved changes are
 1356:                                   actually made until you save the file.
 1357: * Control: Auto Save Control.   Controlling when and how often to auto-save.
 1358: * Recover::		        Recovering text from auto-save files.
 1359: @end menu
 1361: @node Auto Save Files, Auto Save Control, , Auto Save
 1362: @c @subsection Auto-Save Files
 1363: @subsection 自動保存ファイル
 1365: @c   Auto-saving does not normally save in the files that you visited, because
 1366: @c it can be very undesirable to save a program that is in an inconsistent
 1367: @c state when you have made half of a planned change.  Instead, auto-saving
 1368: @c is done in a different file called the @dfn{auto-save file}, and the
 1369: @c visited file is changed only when you request saving explicitly (such as
 1370: @c with @kbd{C-x C-s}).
 1371: 自動保存は、通常、訪問先のファイルそのものへは保存しません。
 1372: というのは、予定の半分を変更しただけでプログラムにまだ一貫性がないのに
 1373: 保存してしまうのは望ましくないからです。
 1374: そのかわりに@dfn{自動保存ファイル}と呼ばれる別のファイルに自動保存し、
 1375: (@kbd{C-x C-s}などで)明示的に保存するよう指示されたときだけ、
 1376: 訪問先のファイルに保存します。
 1378: @c   Normally, the auto-save file name is made by appending @samp{#} to the
 1379: @c front and rear of the visited file name.  Thus, a buffer visiting file
 1380: @c @file{foo.c} is auto-saved in a file @file{#foo.c#}.  Most buffers that
 1381: @c are not visiting files are auto-saved only if you request it explicitly;
 1382: @c when they are auto-saved, the auto-save file name is made by appending
 1383: @c @samp{#%} to the front and @samp{#} to the rear of buffer name.  For
 1384: @c example, the @samp{*mail*} buffer in which you compose messages to be
 1385: @c sent is auto-saved in a file named @file{#%*mail*#}.  Auto-save file
 1386: @c names are made this way unless you reprogram parts of Emacs to do
 1387: @c something different (the functions @code{make-auto-save-file-name} and
 1388: @c @code{auto-save-file-name-p}).  The file name to be used for auto-saving
 1389: @c in a buffer is calculated when auto-saving is turned on in that buffer.
 1390: 通常、自動保存ファイルの名前は、訪問先のファイルの名前の前後に
 1391: @samp{#}を付加したものです。
 1392: したがって、ファイル@file{foo.c}を訪問したバッファは、
 1393: ファイル@file{#foo.c#}に自動保存されます。
 1394: ファイルを訪問していないほとんどのバッファは、
 1395: 明示的に指定したときだけ自動保存されます。
 1396: それらのバッファの自動保存ファイルの名前は、
 1397: バッファ名のまえに@samp{#%}、あとに@samp{#}を付けたものになります。
 1398: たとえば、送信するメッセージを作成するバッファ@samp{*mail*}は、
 1399: @file{#%*mail*#}というファイルに自動保存されます。
 1400: 自動保存ファイルの名前は、Emacsの一部(関数@code{make-auto-save-file-name}と
 1401: @code{auto-save-file-name-p})をプログラムし直さない限り、
 1402: この方法で作られます。
 1403: バッファの自動保存に使うファイル名は、
 1404: そのバッファで自動保存をオンにしたときに計算されます。
 1406: @c   When you delete a substantial part of the text in a large buffer, auto
 1407: @c save turns off temporarily in that buffer.  This is because if you
 1408: @c deleted the text unintentionally, you might find the auto-save file more
 1409: @c useful if it contains the deleted text.  To reenable auto-saving after
 1410: @c this happens, save the buffer with @kbd{C-x C-s}, or use @kbd{C-u 1 M-x
 1411: @c auto-save}.
 1412: 大きなバッファで相当量のテキストを削除したときには、
 1413: そのバッファの自動保存を一時的にやめます。
 1414: 意図せずにテキストを削除してしまった場合には、
 1415: 自動保存ファイルに削除してしまったテキストが残っているほうが、
 1416: 自動保存ファイルとしてより役に立つからです。
 1417: こうなったあとで自動保存をふたたびオンにするには、
 1418: @kbd{C-x C-s}でバッファを保存するか、
 1419: @kbd{C-u 1 M-x auto-save}を使います。
 1421: @vindex auto-save-visited-file-name
 1422: @c   If you want auto-saving to be done in the visited file, set the variable
 1423: @c @code{auto-save-visited-file-name} to be non-@code{nil}.  In this mode,
 1424: @c there is really no difference between auto-saving and explicit saving.
 1425: 訪問先のファイルそのものに自動保存を行いたい場合には、
 1426: 変数@code{auto-save-visited-file-name}に@code{nil}以外の値を設定します。
 1427: こうすると、自動保存と明示的な保存には、何の違いもありません。
 1429: @vindex delete-auto-save-files
 1430: @c   A buffer's auto-save file is deleted when you save the buffer in its
 1431: @c visited file.  To inhibit this, set the variable @code{delete-auto-save-files}
 1432: @c to @code{nil}.  Changing the visited file name with @kbd{C-x C-w} or
 1433: @c @code{set-visited-file-name} renames any auto-save file to go with
 1434: @c the new visited name.
 1435: 訪問先のファイルにバッファを保存すると、
 1436: バッファの自動保存ファイルは削除されます。
 1437: これを禁止するには、
 1438: 変数@code{delete-auto-save-files}に@code{nil}を設定します。
 1439: @kbd{C-x C-w}や@code{set-visited-file-name}で
 1440: 訪問先ファイル名を変更すると、
 1441: 新たな訪問先ファイル名に合わせて自動保存ファイルも改名されます。
 1443: @node Auto Save Control, Recover, Auto Save Files, Auto Save
 1444: @c @subsection Controlling Auto-Saving
 1445: @subsection 自動保存の制御
 1447: @vindex auto-save-default
 1448: @findex auto-save-mode
 1449: @c   Each time you visit a file, auto-saving is turned on for that file's
 1450: @c buffer if the variable @code{auto-save-default} is non-@code{nil} (but not
 1451: @c in batch mode; @pxref{Entering Emacs}).  The default for this variable is
 1452: @c @code{t}, so auto-saving is the usual practice for file-visiting buffers.
 1453: @c Auto-saving can be turned on or off for any existing buffer with the
 1454: @c command @kbd{M-x auto-save-mode}.  Like other minor mode commands, @kbd{M-x
 1455: @c auto-save-mode} turns auto-saving on with a positive argument, off with a
 1456: @c zero or negative argument; with no argument, it toggles.
 1457: 変数@code{auto-save-default}が@code{nil}以外ならば、
 1458: ファイルを訪問するたびにそのファイルのバッファの自動保存をオンにします
 1459: (ただしバッチモードを除く。@pxref{Entering Emacs})。
 1460: この変数のデフォルトは@code{t}なので、
 1461: 通常、ファイルを訪問したバッファは自動保存されます。
 1462: コマンド@kbd{M-x auto-save-mode}で、
 1463: 既存バッファの自動保存をオン/オフできます。
 1464: 他のマイナモードのコマンドと同じように、
 1465: 正の引数を指定すると@kbd{M-x auto-save-mode}は自動保存をオンにし、
 1466: 0か負の引数を指定すると自動保存をオフにし、
 1467: 引数を指定しないと自動保存のオン/オフを切り替えます。
 1469: @vindex auto-save-interval
 1470: @c   Emacs does auto-saving periodically based on counting how many characters
 1471: @c you have typed since the last time auto-saving was done.  The variable
 1472: @c @code{auto-save-interval} specifies how many characters there are between
 1473: @c auto-saves.  By default, it is 300.
 1474: Emacsは、最後に自動保存してから何文字打鍵したかに基づいて
 1475: 定期的に自動保存します。
 1476: 変数@code{auto-save-interval}には、自動保存の間隔を表す文字数を指定します。
 1477: デフォルトは300です。
 1479: @vindex auto-save-timeout
 1480: @c   Auto-saving also takes place when you stop typing for a while.  The
 1481: @c variable @code{auto-save-timeout} says how many seconds Emacs should
 1482: @c wait before it does an auto save (and perhaps also a garbage
 1483: @c collection).  (The actual time period is longer if the current buffer is
 1484: @c long; this is a heuristic which aims to keep out of your way when you
 1485: @c are editing long buffers, in which auto-save takes an appreciable amount
 1486: @c of time.)  Auto-saving during idle periods accomplishes two things:
 1487: @c first, it makes sure all your work is saved if you go away from the
 1488: @c terminal for a while; second, it may avoid some auto-saving while you
 1489: @c are actually typing.
 1490: しばらく打鍵しないでいるときにも自動保存は行われます。
 1491: 変数@code{auto-save-timeout}は、自動保存(およびガベッジコレクション)を
 1492: 行うまでにEmacsが待つべき秒数を表します。
 1493: (カレントバッファが大きいと、実際の時間間隔も長くなる。
 1494: これは、大きなバッファの自動保存には時間がかかるので、
 1495: その編集中は邪魔にならないようにするため。)
 1496: アイドルのときには、自動保存はつぎの2つのことを達成します。
 1497: 1つは、端末からしばらく離れているときに、
 1498: すべての作業結果が保存されることを保証すること。
 1499: もう1つは、実際に打鍵しているときの自動保存を
 1500: いくぶんでも避けるようにすることです。
 1502: @c   Emacs also does auto-saving whenever it gets a fatal error.  This
 1503: @c includes killing the Emacs job with a shell command such as @samp{kill
 1504: @c %emacs}, or disconnecting a phone line or network connection.
 1505: 重大なエラーを受け取ったときにも、Emacsは自動保存を行います。
 1506: これには、@samp{kill %emacs}のようなシェルコマンドで
 1507: Emacsジョブを強制終了した場合や、
 1508: 電話回線やネットワーク接続が途切れた場合を含みます。
 1510: @findex do-auto-save
 1511: @c   You can request an auto-save explicitly with the command @kbd{M-x
 1512: @c do-auto-save}.
 1513: コマンド@kbd{M-x do-auto-save}で、自動保存の実施を明示的に指示できます。
 1515: @node Recover,  , Auto Save Control, Auto Save
 1516: @c @subsection Recovering Data from Auto-Saves
 1517: @subsection 自動保存ファイルからのデータ回復
 1519: @findex recover-file
 1520: @c   You can use the contents of an auto-save file to recover from a loss
 1521: @c of data with the command @kbd{M-x recover-file @key{RET} @var{file}
 1522: @c @key{RET}}.  This visits @var{file} and then (after your confirmation)
 1523: @c restores the contents from its auto-save file @file{#@var{file}#}.
 1524: @c You can then save with @kbd{C-x C-s} to put the recovered text into
 1525: @c @var{file} itself.  For example, to recover file @file{foo.c} from its
 1526: @c auto-save file @file{#foo.c#}, do:@refill
 1527: コマンド@kbd{M-x recover-file @key{RET} @var{file} @key{RET}}で、
 1528: 自動保存ファイルの内容から紛失データを復旧できます。
 1529: このコマンドは、@var{file}を訪問してから、
 1530: (確認したあとで)その自動保存ファイル@file{#@var{file}#}
 1531: から内容を回復します。
 1532: そのあとに、@kbd{C-x C-s}で@var{file}そのものに復旧したテキストを保存します。
 1533: たとえば、@file{foo.c}の自動保存のファイル@file{#foo.c#}から
 1534: @file{foo.c}を復旧するにはつぎのようにします。
 1536: @example
 1537: M-x recover-file @key{RET} foo.c @key{RET}
 1538: yes @key{RET}
 1539: C-x C-s
 1540: @end example
 1542: @c   Before asking for confirmation, @kbd{M-x recover-file} displays a
 1543: @c directory listing describing the specified file and the auto-save file,
 1544: @c so you can compare their sizes and dates.  If the auto-save file
 1545: @c is older, @kbd{M-x recover-file} does not offer to read it.
 1546: @kbd{M-x recover-file}は確認するまえに、
 1547: 指定したファイルと自動保存ファイルが置かれたディレクトリの一覧を表示するので、
 1548: それらのサイズや日付を比較できます。
 1549: 自動保存ファイルのほうが古いと、
 1550: @kbd{M-x recover-file}はそのファイルを読み込むようには
 1551: 聞いてきません。
 1553: @findex recover-session
 1554: @c   If Emacs or the computer crashes, you can recover all the files you
 1555: @c were editing from their auto save files with the command @kbd{M-x
 1556: @c recover-session}.  This first shows you a list of recorded interrupted
 1557: @c sessions.  Move point to the one you choose, and type @kbd{C-c C-c}.
 1558: Emacsやコンピュータがクラッシュしても、
 1559: コマンド@kbd{M-x recover-session}を使えば、
 1560: 編集中だったすべてのファイルを自動保存ファイルから復旧できます。
 1561: このコマンドは、まず、記録されている中断されたセッション一覧を表示します。
 1562: 希望する箇所へポイントを移動し、@kbd{C-c C-c}と打ちます。
 1564: @c   Then @code{recover-session} asks about each of the files that were
 1565: @c being edited during that session, asking whether to recover that file.
 1566: @c If you answer @kbd{y}, it calls @code{recover-file}, which works in its
 1567: @c normal fashion.  It shows the dates of the original file and its
 1568: @c auto-save file, and asks once again whether to recover that file.
 1569: つぎに、 @code{recover-session}はそのセッションで編集中だった
 1570: 各ファイルについてそのファイルを復旧するか聞いてきます。
 1571: @kbd{y}を答えると、@code{recover-file}を呼び出し、
 1572: 普通のとおりに動作します。
 1573: もとのファイルとその自動保存ファイルの日付を表示し、
 1574: ファイルを復旧するかどうかをもう一度聞いてきます。
 1576: @c   When @code{recover-session} is done, the files you've chosen to
 1577: @c recover are present in Emacs buffers.  You should then save them.  Only
 1578: @c this---saving them---updates the files themselves.
 1579: @code{recover-session}が終了すると、
 1580: 復旧を選んだファイルはEmacsバッファに入っています。
 1581: これらのバッファを保存してください。
 1582: こうすることで初めてファイルに保存できます。
 1584: @vindex auto-save-list-file-prefix
 1585: @c   Interrupted sessions are recorded for later recovery in files named
 1586: @c @file{~/.saves-@var{pid}-@var{hostname}}.  The @samp{~/.saves} portion of
 1587: @c these names comes from the value of @code{auto-save-list-file-prefix}.
 1588: @c You can arrange to record sessions in a different place by setting that
 1589: @c variable in your @file{.emacs} file, but you'll have to redefine
 1590: @c @code{recover-session} as well to make it look in the new place.  If you
 1591: @c set @code{auto-save-list-file-prefix} to @code{nil} in your
 1592: @c @file{.emacs} file, sessions are not recorded for recovery.
 1593: 中断されたセッションは、あとで復旧するために
 1594: @file{~/.saves-@var{pid}-@var{hostname}}というファイルに記録されています。
 1595: これらの名前の@samp{~/.saves}の部分は、
 1596: @code{auto-save-list-file-prefix}の値です。
 1597: この変数を個人の@file{.emacs}ファイルで設定すれば、
 1598: 別の場所にセッション記録を置くことができます。
 1599: しかし、同様に@code{recover-session}も再定義して、
 1600: 変更した新しい場所を探すようにする必要があります。
 1601: 個人の@file{.emacs}ファイルで@code{auto-save-list-file-prefix}に
 1602: @code{nil}を設定すると、復旧のためのセッションを記録しません。
 1604: @node File Aliases, Version Control, Auto Save, Files
 1605: @c @section File Name Aliases
 1606: @section ファイル名の別名
 1608: @c   Symbolic links and hard links both make it possible for several file
 1609: @c names to refer to the same file.  Hard links are alternate names that
 1610: @c refer directly to the file; all the names are equally valid, and no one
 1611: @c of them is preferred.  By contrast, a symbolic link is a kind of defined
 1612: @c alias: when @file{foo} is a symbolic link to @file{bar}, you can use
 1613: @c either name to refer to the file, but @file{bar} is the real name, while
 1614: @c @file{foo} is just an alias.  More complex cases occur when symbolic
 1615: @c links point to directories.
 1616: シンボリックリンクやハードリンクを使うことで、
 1617: 同じファイルをいくつかの異なるファイル名で指すことができます。
 1618: ハードリンクは、ファイルを直接に指している別の名前です。
 1619: すべての名前は等しく有効で、それらに優劣はありません。
 1620: 対照的に、シンボリックリンクは定義された別名の一種です。
 1621: @file{foo}が@file{bar}へのシンボリックリンクであるとき、
 1622: どちらの名前でもファイルを指せますが、
 1623: @file{bar}が本当の名前であり、@file{foo}は別名にすぎません。
 1624: シンボリックリンクがディレクトリを指しているときには、
 1625: より複雑な状況になります。
 1627: @c   If you visit two names for the same file, normally Emacs makes
 1628: @c two different buffers, but it warns you about the situation.
 1629: 同一のファイルに対して2つの名前で訪問すると、
 1630: Emacsは通常2つの別々のバッファを作成しますが、
 1631: その状況を警告します。
 1633: @vindex find-file-existing-other-name
 1634: @c   If you wish to avoid visiting the same file in two buffers under
 1635: @c different names, set the variable @code{find-file-existing-other-name}
 1636: @c to a non-@code{nil} value.  Then @code{find-file} uses the existing
 1637: @c buffer visiting the file, no matter which of the file's names you
 1638: @c specify.
 1639: 同一のファイルを異なる名前で別々のバッファに訪問することを避けたいならば、
 1640: 変数@code{find-file-existing-other-name}に@code{nil}以外の値を設定します。
 1641: そうすれば、どのファイル名を指定しようとも、
 1642: @code{find-file}はファイルを訪問している既存のバッファを使います。
 1644: @vindex find-file-visit-truename
 1645: @c @cindex truenames of files
 1646: @c @cindex file truenames
 1647: @cindex ファイルの実名
 1648: @c   If the variable @code{find-file-visit-truename} is non-@code{nil},
 1649: @c then the file name recorded for a buffer is the file's @dfn{truename}
 1650: @c (made by replacing all symbolic links with their target names), rather
 1651: @c than the name you specify.  Setting @code{find-file-visit-truename} also
 1652: @c implies the effect of @code{find-file-existing-other-name}.
 1653: 変数@code{find-file-visit-truename}が@code{nil}以外であれば、
 1654: バッファに記録するファイル名は、ユーザーが指定した名前ではなくて、
 1655: ファイルの(すべてのシンボリックリンクをその先の名前に置き換えて得られる)
 1656: @dfn{実名}になります。
 1657: @code{find-file-visit-truename}を設定すると、
 1658: @code{find-file-existing-other-name}も暗に設定されます。
 1660: @node Version Control, Directories, File Aliases, Files
 1661: @c @section Version Control
 1662: @c @cindex version control
 1663: @section VC(版管理、バージョンコントロール)
 1664: @cindex バージョンコントロール
 1665: @cindex 版管理
 1667: @c   @dfn{Version control systems} are packages that can record multiple
 1668: @c versions of a source file, usually storing the unchanged parts of the
 1669: @c file just once.  Version control systems also record history information
 1670: @c such as the creation time of each version, who created it, and a 
 1671: @c description of what was changed in that version.
 1672: @dfn{版管理システム}は、
 1673: ファイルの変更されていない部分を通常は一度だけ格納して、
 1674: ソースファイルの複数の版を記録できるパッケージです。
 1675: 版管理システムは、各版の作成時刻、作成者、
 1676: その版の変更部分に関する記述などの履歴情報も記録します。
 1678: @c   The Emacs version control interface is called VC.  Its commands work
 1679: @c with three version control systems---RCS, CVS and SCCS.  The GNU project
 1680: @c recommends RCS and CVS, which are free software and available from the
 1681: @c Free Software Foundation.
 1682: Emacsの版管理パッケージはVCと呼ばれます。
 1683: このコマンドは、3つの版管理システム、RCS、CVS、SCCSで動作します。
 1684: GNUプロジェクトでは、フリーソフトウェアでありFree Software Foundationから
 1685: 入手できるRCSとCVSを推奨します。
 1687: @menu
 1688: * Introduction to VC::  How version control works in general.
 1689: * VC Mode Line::     How the mode line shows version control status.
 1690: * Basic VC Editing::    How to edit a file under version control.
 1691: * Old Versions::        Examining and comparing old versions.
 1692: * Secondary VC Commands::    The commands used a little less frequently.
 1693: * Branches::            Multiple lines of development.
 1694: * Snapshots::           Sets of file versions treated as a unit.
 1695: * Miscellaneous VC::    Various other commands and features of VC.
 1696: * Customizing VC::      Variables that change VC's behavior.
 1697: @end menu
 1699: @node Introduction to VC, VC Mode Line, , Version Control
 1700: @c @subsection Introduction to Version Control
 1701: @subsection VC入門
 1703: @c   VC allows you to use a version control system from within Emacs,
 1704: @c integrating the version control operations smoothly with editing.  VC
 1705: @c provides a uniform interface to version control, so that regardless of
 1706: @c which version control system is in use, you can use it the same way.
 1707: VCはEmacsから版管理システムを使えるようにして、
 1708: 編集作業を版管理操作に滑らかに統合します。
 1709: VCは統一された版管理インターフェイスを提供するので、
 1710: どの版管理システムを使っているかに関わらず、
 1711: 同じ使い方ができます。
 1713: @c   This section provides a general overview of version control, and
 1714: @c describes the version control systems that VC supports.  You can skip
 1715: @c this section if you are already familiar with the version control system
 1716: @c you want to use.
 1717: 本節では、版管理を概観するとともに、
 1718: VCが扱う版管理システムの概要を説明します。
 1719: 使用する版管理システムにすでに慣れているならば、本節は読み飛ばしてください。
 1721: @menu
 1722: * Version Systems::  Supported version control back-end systems.
 1723: * VC Concepts::      Words and concepts related to version control.
 1724: @end menu
 1726: @node Version Systems, VC Concepts, , Introduction to VC
 1727: @c @subsubsection Supported Version Control Systems
 1728: @subsubsection 利用可能な版管理システム
 1730: @cindex RCS
 1731: @c @cindex back end (version control)
 1732: @cindex バックエンド(版管理)
 1733: @c   VC currently works with three different version control systems or
 1734: @c ``back ends'': RCS, CVS, and SCCS.
 1735: VCでは、現在3つの版管理システム、
 1736: つまり、バックエンドで動作します。
 1737: RCS、CVS、SCCSの3つです。
 1739: @c   RCS is a free version control system that is available from the Free
 1740: @c Software Foundation.  It is perhaps the most mature of the supported
 1741: @c back ends, and the VC commands are conceptually closest to RCS.  Almost
 1742: @c everything you can do with RCS can be done through VC.
 1743: RCSはフリーの版管理システムでFree Software Foundationから入手ができます。
 1744: RCSは、扱えるバックエンドの中では、たぶん、もっとも成熟したものです。
 1745: VCコマンド群は、RCSに概念的にもっとも近いものです。
 1746: RCSでできるほとんどのことはVCからもできます。
 1748: @cindex CVS
 1749: @c   CVS is built on top of RCS, and extends the features of RCS, allowing
 1750: @c for more sophisticated release management, and concurrent multi-user
 1751: @c development.  VC supports basic editing operations under CVS, but for
 1752: @c some less common tasks you still need to call CVS from the command line.
 1753: @c Note also that before using CVS you must set up a repository, which is a
 1754: @c subject too complex to treat here.
 1755: CVSは、RCSの上に作られてRCSの機能を拡張していて、
 1756: より洗練されたリリース管理、複数ユーザーの並行開発を許しています。
 1757: CVSの下では、VCの基本的な編集操作を使えますが、
 1758: あまり一般的でない操作に関しては、
 1759: コマンド行からCVSを呼ぶ必要があります。
 1760: CVSを使うには保管庫(リポジトリ、repository)を設定しなければなりませんが、
 1761: ここで扱うには複雑すぎる話題です。
 1763: @cindex SCCS
 1764: @c   SCCS is a proprietary but widely used version control system.  In
 1765: @c terms of capabilities, it is the weakest of the three that VC
 1766: @c supports.  VC compensates for certain features missing in SCCS
 1767: @c (snapshots, for example) by implementing them itself, but some other VC
 1768: @c features, such as multiple branches, are not available with SCCS.  You
 1769: @c should use SCCS only if for some reason you cannot use RCS.
 1770: SCCSはフリーではありませんが、版管理システムとしては広く使われています。
 1771: 能力の観点からすれば、VCが扱える3つのうちでもっとも弱いです。
 1772: SCCSに欠けている機能(たとえばスナップショット)はVC自身で
 1773: 実現して補っていますが、
 1774: 複数の枝分かれのようなVCの他のいくつかの機能はSCCSでは利用できません。
 1775: RCSを使えない理由があるときに限ってSCCSを使うべきです。
 1777: @node VC Concepts,  , Version Systems, Introduction to VC
 1778: @c @subsubsection Concepts of Version Control
 1779: @subsubsection VCの概念
 1781: @c @cindex master file
 1782: @c @cindex registered file
 1783: @cindex マスタファイル
 1784: @cindex 登録されたファイル
 1785: @c    When a file is under version control, we also say that it is
 1786: @c @dfn{registered} in the version control system.  Each registered file
 1787: @c has a corresponding @dfn{master file} which represents the file's
 1788: @c present state plus its change history---enough to reconstruct the
 1789: @c current version or any earlier version.  Usually the master file also
 1790: @c records a @dfn{log entry} for each version, describing in words what was
 1791: @c changed in that version.
 1792: ファイルが版管理の管理下にあるとき、
 1793: そのファイルは版管理システムに@dfn{登録され}ているといいます。
 1794: 各登録されたファイルには、
 1795: ファイルの現状とその変更履歴を記述した対応する
 1796: @dfn{マスタファイル}が存在します。
 1797: この情報は、現在の版や以前の版を再構成するのに十分です。
 1798: 通常、マスタファイルには、それぞれの版について、
 1799: その版の変更点を言葉で記述した@dfn{記録項目}も記録されています。
 1801: @c @cindex work file
 1802: @c @cindex checking out files
 1803: @cindex 作業ファイル
 1804: @cindex ファイルをチェックアウトする
 1805: @c   The file that is maintained under version control is sometimes called
 1806: @c the @dfn{work file} corresponding to its master file.  You edit the work
 1807: @c file and make changes in it, as you would with an ordinary file.  (With
 1808: @c SCCS and RCS, you must @dfn{lock} the file before you start to edit it.)
 1809: @c After you are done with a set of changes, you @dfn{check the file in},
 1810: @c which records the changes in the master file, along with a log entry for
 1811: @c them.
 1812: 版管理の下で管理されているファイルを、
 1813: そのマスタファイルに対応する@dfn{作業ファイル}と呼ぶこともあります。
 1814: 普通のファイルと同様に、作業ファイルを編集して変更します。
 1815: (SCCSやRCSでは、ファイルを編集するまえにファイルを@dfn{ロック}
 1816: @footnote{【訳注】Emacsが同時編集を防ぐためのロックとは別のロック。}
 1817: する必要がある。)
 1818: 一連の変更を終えたら、ファイルを@dfn{チェックイン}、つまり、
 1819: 記録項目とともに変更をマスタファイルに記録します。
 1821: @c   With CVS, there are usually multiple work files corresponding to a
 1822: @c single master file---often each user has his own copy.  It is also
 1823: @c possible to use RCS in this way, but this is not the usual way to use
 1824: @c RCS.
 1825: CVSでは、1つのマスタファイルに対応する作業ファイルを複数個持てます。
 1826: しばしば、各ユーザーが1個ずつ作業ファイルを持てます。
 1827: RCSでもこのようにできますが、RCSの通常の使い方ではありません。
 1829: @c @cindex locking and version control
 1830: @cindex ロックと版管理
 1831: @c   A version control system typically has some mechanism to coordinate
 1832: @c between users who want to change the same file.  One method is
 1833: @c @dfn{locking} (analogous to the locking that Emacs uses to detect
 1834: @c simultaneous editing of a file, but distinct from it).  The other method
 1835: @c is to merge your changes with other people's changes when you check them
 1836: @c in.
 1837: 典型的な版管理システムには、複数のユーザーが同じファイルを使う際の
 1838: 調停を行うためのなんらかの機構が必要です。
 1839: 1つの方法は(Emacsが同時編集の検出に使うロックに類似だが、それとは別の)
 1840: @dfn{ロック}を使うことです。
 1841: 別の方法は、ファイルをチェックインする時点で、
 1842: 他人の変更分を併合することです。
 1844: @c   With version control locking, work files are normally read-only so
 1845: @c that you cannot change them.  You ask the version control system to make
 1846: @c a work file writable for you by locking it; only one user can do
 1847: @c this at any given time.  When you check in your changes, that unlocks
 1848: @c the file, making the work file read-only again.  This allows other users
 1849: @c to lock the file to make further changes.  SCCS always uses locking, and
 1850: @c RCS normally does.
 1851: ロックを使う版管理の場合、作業ファイルは変更できないように
 1852: 通常は読み出し専用です。
 1853: 版管理システムに対して、
 1854: 書き込み可能な作業ファイルを作り、それをロックするように要求します。
 1855: 一度には1人のユーザーだけがこれをできます。
 1856: 自分の変更分をチェックインすると、
 1857: ファイルのロックを外し、作業ファイルをふたたび読み出し専用にします。
 1858: これにより、他のユーザーがさらに変更するために
 1859: ファイルをロックできるようになります。
 1860: SCCSはつねにロックを使いますし、RCSも通常はロックを使います。
 1862: @c   The other alternative for RCS is to let each user modify the work file
 1863: @c at any time.  In this mode, locking is not required, but it is
 1864: @c permitted; check-in is still the way to record a new version.
 1865: RCSでは別の方法もあって、各ユーザーがいつでも作業ファイルを変更できます。
 1866: このモードではロックは必要ありませんが、使うこともできます。
 1867: 新版を記録する方法は、やはりチェックインです。
 1869: @c   CVS normally allows each user to modify his own copy of the work file
 1870: @c at any time, but requires merging with changes from other users at
 1871: @c check-in time.  However, CVS can also be set up to require locking.
 1872: @c (@pxref{Backend Options}).
 1873: CVSでは、通常、各ユーザーはいつでも各自の作業ファイルを変更できますが、
 1874: チェックイン時に他のユーザーの変更分を併合する必要があります。
 1875: しかし、CVSでもロックを使うようにもできます
 1876: (@pxref{Backend Options})。
 1878: @node VC Mode Line, Basic VC Editing, Introduction to VC, Version Control
 1879: @c @subsection Version Control and the Mode Line
 1880: @subsection VCとモード行
 1882: @c   When you visit a file that is under version control, Emacs indicates
 1883: @c this on the mode line.  For example, @samp{RCS-1.3} says that RCS is
 1884: @c used for that file, and the current version is 1.3.
 1885: 版管理の下にあるファイルを訪問すると、
 1886: Emacsはそのことをモード行に示します。
 1887: たとえば、@samp{RCS-1.3}は、そのファイルにはRCSが使われていて、
 1888: 現在の版が1.3であることを表します。
 1890: @c   The character between the back-end name and the version number
 1891: @c indicates the version control status of the file.  @samp{-} means that
 1892: @c the work file is not locked (if locking is in use), or not modified (if
 1893: @c locking is not in use).  @samp{:} indicates that the file is locked, or
 1894: @c that it is modified.  If the file is locked by some other user (for
 1895: @c instance, @samp{jim}), that is displayed as @samp{RCS:jim:1.3}.
 1896: バックエンドの名前と版番号のあいだの文字は、ファイルの版管理状態を示します。
 1897: @samp{-}は、(ロックを使っているのであれば)
 1898: 作業ファイルがロックされていないこと、あるいは、
 1899: (ロックを使っていないのであれば)ファイルが変更されていないことを表します。
 1900: @samp{:}は他のユーザー(たとえば、@samp{jim})がロックしていることを表し、
 1901: @samp{RCS:jim:1.3}のように表示されます。
 1903: @node Basic VC Editing, Old Versions, VC Mode Line, Version Control
 1904: @c @subsection Basic Editing under Version Control
 1905: @subsection VC下の基本的な編集
 1907: @c   The principal VC command is an all-purpose command that performs
 1908: @c either locking or check-in, depending on the situation.
 1909: 主要なVCコマンドは、状況に応じてロックかチェックインを行う
 1910: 汎用コマンドです。
 1912: @table @kbd
 1913: @item C-x C-q
 1914: @itemx C-x v v
 1915: @c Perform the next logical version control operation on this file.
 1916: このファイルに対して論理的なつぎの版管理操作を実施する。
 1917: @end table
 1919: @findex vc-next-action
 1920: @findex vc-toggle-read-only
 1921: @kindex C-x v v
 1922: @c @kindex C-x C-q @r{(Version Control)}
 1923: @kindex C-x C-q @r{(VC、版管理)}
 1924: @c   Strictly speaking, the command for this job is @code{vc-next-action},
 1925: @c bound to @kbd{C-x v v}.  However, the normal meaning of @kbd{C-x C-q} is
 1926: @c to make a read-only buffer writable, or vice versa; we have extended it
 1927: @c to do the same job properly for files managed by version control, by
 1928: @c performing the appropriate version control operations.  When you type
 1929: @c @kbd{C-x C-q} on a registered file, it acts like @kbd{C-x v v}.
 1930: 正確にいえば、この操作を行うコマンドは@code{vc-next-action}であって、
 1931: @kbd{C-x v v}にバインドしてあります。
 1932: しかし、@kbd{C-x C-q}の通常の意味は、
 1933: 読み出し専用バッファを書き込み可能にするか、あるいは、その逆を行います。
 1934: この操作を、適切な版管理操作を実施することで
 1935: 版管理下で管理されているファイルに対しても同じことを
 1936: 正しく行うように拡張したのです。
 1937: 登録されたファイルに対して@kbd{C-x C-q}を打つと、
 1938: @kbd{C-x v v}のように動作します。
 1940: @c   The precise action of this command depends on the state of the file,
 1941: @c and whether the version control system uses locking or not.  SCCS and
 1942: @c RCS normally use locking; CVS normally does not use locking.
 1943: このコマンドの正確な動作は、ファイルの状態と版管理システム(バックエンド)
 1944: がロックを使うかどうかに依存します。
 1945: SCCSとRCSは通常はロックを使いますが、CVSは通常はロックを使いません。
 1947: @menu
 1948: * VC with Locking::     RCS in its default mode, SCCS, and optionally CVS.
 1949: * Without Locking::     Without locking: default mode for CVS.
 1950: * Log Buffer::          Features available in log entry buffers.
 1951: @end menu
 1953: @node VC with Locking, Without Locking, , Basic VC Editing
 1954: @c @subsubsection Basic Version Control with Locking
 1955: @subsubsection ロック使用時の基本的な編集
 1957: @c   If locking is used for the file (as with SCCS, and RCS in its default
 1958: @c mode), @kbd{C-x C-q} can either lock a file or check it in:
 1959: (SCCSの場合とRCSのデフォルトの場合)ファイルに対してロックを使う場合、
 1960: @kbd{C-x C-q}は、ファイルをロックする、あるいは、
 1961: ファイルをチェックインするのいずれかを行います。
 1963: @itemize @bullet
 1964: @item
 1965: @c If the file is not locked, @kbd{C-x C-q} locks it, and
 1966: @c makes it writable so that you can change it.
 1967: ファイルがロックされていなければ、
 1968: @kbd{C-x C-q}はそれをロックし、
 1969: 変更できるように書き込み可能にする。
 1971: @item
 1972: @c If the file is locked by you, and contains changes, @kbd{C-x C-q} checks
 1973: @c in the changes.  In order to do this, it first reads the log entry
 1974: @c for the new version.  @xref{Log Buffer}.
 1975: 同じユーザーがファイルをロックしていて、かつ、変更されていれば、
 1976: @kbd{C-x C-q}はチェックインを行う。
 1977: このとき、新版に対する記録項目をまず読み取る。
 1978: @pxref{Log Buffer}。
 1980: @item
 1981: @c If the file is locked by you, but you have not changed it since you
 1982: @c locked it, @kbd{C-x C-q} releases the lock and makes the file read-only
 1983: @c again.
 1984: 同じユーザーがファイルをロックしているが、
 1985: ロックしてからまったく変更していないときには、
 1986: @kbd{C-x C-q}はロックを外してファイルをふたたび読み出し専用にする。
 1988: @item
 1989: @c If the file is locked by some other user, @kbd{C-x C-q} asks you whether
 1990: @c you want to ``steal the lock'' from that user.  If you say yes, the file
 1991: @c becomes locked by you, but a message is sent to the person who had
 1992: @c formerly locked the file, to inform him of what has happened.
 1993: 他のユーザーがファイルをロックしている場合、
 1994: @kbd{C-x C-q}はそのユーザーから『ロックを横取りする』かどうか聞いてくる。
 1995: 横取りするように答えると、ファイルをロックし直すが、
 1996: まえにロックしていたユーザーにはロックを横取りされたことを伝える。
 1997: @end itemize
 1999: @c   These rules also apply when you use CVS in locking mode, except
 2000: @c that there is no such thing as stealing a lock.
 2001: 以上の規則は、CVSでロックを使用している場合にも適用できますが、
 2002: 『ロックを横取りする』ことはありません。
 2004: @node Without Locking, Log Buffer, VC with Locking, Basic VC Editing
 2005: @c @subsubsection Basic Version Control without Locking
 2006: @subsubsection ロック非使用時の基本的な編集
 2008: @c   When there is no locking---the default for CVS---work files are always
 2009: @c writable; you do not need to do anything before you begin to edit a
 2010: @c file.  The status indicator on the mode line is @samp{-} if the file is
 2011: @c unmodified; it flips to @samp{:} as soon as you save any changes in the
 2012: @c work file.
 2013: CVSのデフォルトのように、ロックを使わないときには、
 2014: 作業ファイルはいつでも書き込み可能です。
 2015: ファイルを編集するまえにすべきことは何もありません。
 2016: モード行の状態表示は、ファイルが変更されていなければ@samp{-}です。
 2017: 作業ファイルに変更を保存するとただちに@samp{:}に変わります。
 2019: @c   Here is what @kbd{C-x C-q} does when using CVS:
 2020: 以下は、CVSを使っているときの@kbd{C-x C-q}の動作です。
 2022: @itemize @bullet
 2023: @item
 2024: @c If some other user has checked in changes into the master file,
 2025: @c Emacs asks you whether you want to merge those changes into your own
 2026: @c work file (@pxref{Merging}).  You must do this before you can check in
 2027: @c your own changes.
 2028: 他のユーザーが変更分をマスタファイルにチェックインしていると、
 2029: それらを自分用の作業ファイルに併合(@pxref{Merging})するかどうか聞いてくる。
 2030: 自分の変更分をチェックインするまえには、これを行う必要がある。
 2032: @item
 2033: @c If there are no new changes in the master file, but you have made
 2034: @c modifications in your work file, @kbd{C-x C-q} checks in your changes.
 2035: @c In order to do this, it first reads the log entry for the new version.
 2036: @c @xref{Log Buffer}.
 2037: マスタファイルに新たな変更がなくても、
 2038: 自分用の作業ファイルを変更してある場合には、
 2039: @kbd{C-x C-q}はその変更をチェックインする。
 2040: これを行うために、新版に対する記録項目をまず読み取る。
 2041: @pxref{Log Buffer}。
 2043: @item
 2044: @c If the file is not modified, the @kbd{C-x C-q} does nothing.
 2045: ファイルが変更されていなければ、@kbd{C-x C-q}は何もしない。
 2046: @end itemize
 2048: @c   These rules also apply when you use RCS in the mode that does not
 2049: @c require locking, except that automatic merging of changes from the
 2050: @c master file is not implemented.  Unfortunately, this means that nothing
 2051: @c informs you if another user has checked in changes in the same file
 2052: @c since you began editing it, and when this happens, his changes will be
 2053: @c effectively removed when you check in your version (though they will
 2054: @c remain in the master file, so they will not be entirely lost).  You must
 2055: @c therefore verify the current version is unchanged, before you check in your
 2056: @c changes.  We hope to eliminate this risk and provide automatic merging
 2057: @c with RCS in a future Emacs version.
 2058: 以上の規則は、RCSのロックを使わないモードにも適用できますが、
 2059: マスタファイルから自動的に変更を併合する機能は実装してありません。
 2060: 残念なことに、あなたが編集を始めたあとに、他のユーザーが同じファイルに変更を
 2061: チェックインしても何も警告されないのです。
 2062: しかも、このような事態が発生すると、あなたが自分の版をチェックインしたときに、
 2063: そのユーザーの変更は実質的には取り除かれてしまいます
 2064: (とはいえ、マスタファイルの中には残っているので、
 2065: 完全になくなるわけではない)。
 2066: したがって、自分の変更をチェックインするまえには、
 2067: 現在の版が変更されていないことを確認する必要があります。
 2068: Emacsの将来の版では、このような危険性を取り除き、
 2069: RCSでも自動併合を行えるように考えています。
 2071: @c   In addition, locking is possible with RCS even in this mode, although
 2072: @c it is not required; @kbd{C-x C-q} with an unmodified file locks the
 2073: @c file, just as it does with RCS in its normal (locking) mode.
 2074: また、このモードでもRCSのロックを使えますが、必須ではありません。
 2075: ファイルを変更していないときに@kbd{C-x C-q}を使うと、
 2076: RCSの通常の(ロックを使う)モードのように、
 2077: ファイルをロックします。
 2079: @node Log Buffer,  , Without Locking, Basic VC Editing
 2080: @c @subsubsection Features of the Log Entry Buffer
 2081: @subsubsection 記録項目用バッファの機能
 2083: @c   When you check in changes, @kbd{C-x C-q} first reads a log entry.  It
 2084: @c pops up a buffer called @samp{*VC-Log*} for you to enter the log entry.
 2085: @c When you are finished, type @kbd{C-c C-c} in the @samp{*VC-Log*} buffer.
 2086: @c That is when check-in really happens.
 2087: 変更をチェックインすると、@kbd{C-x C-q}は記録項目をまず読みます。
 2088: 記録項目を入力するように、@samp{*VC-Log*}というバッファを立ち上げます。
 2089: 入力し終えたら、@samp{*VC-Log*}で@kbd{C-c C-c}と打ちます。
 2090: 実際にチェックインを行うと、このように行われます。
 2092: @c   To abort check-in, just @strong{don't} type @kbd{C-c C-c} in that
 2093: @c buffer.  You can switch buffers and do other editing.  As long as you
 2094: @c don't try to check in another file, the entry you were editing remains
 2095: @c in the @samp{*VC-Log*} buffer, and you can go back to that buffer at any
 2096: @c time to complete the check-in.
 2097: チェックインをアボートするには、そのバッファでは@kbd{C-c C-c}を
 2098: 打た@strong{ない}でください。
 2099: 別のバッファに切り替えて、別の編集をします。
 2100: 別のファイルをチェックインしようとしない限り、
 2101: 入力していた記録項目は@samp{*VC-Log*}バッファに残っていますから、
 2102: チェックインを完了するため、いつでもそのバッファに戻れます。
 2104: @c   If you change several source files for the same reason, it is often
 2105: @c convenient to specify the same log entry for many of the files.  To do
 2106: @c this, use the history of previous log entries.  The commands @kbd{M-n},
 2107: @c @kbd{M-p}, @kbd{M-s} and @kbd{M-r} for doing this work just like the
 2108: @c minibuffer history commands (except that these versions are used outside
 2109: @c the minibuffer).
 2110: 複数のソースファイルを同じ理由で変更したときには、
 2111: 多くのファイルに同じ記録項目を指定できると便利です。
 2112: こうするには、まえの記録項目の履歴を使います。
 2113: コマンド、@kbd{M-n}、@kbd{M-p}、@kbd{M-s}、@kbd{M-r}は、
 2114: ミニバッファの履歴コマンドのように働きます
 2115: (ただし、これらのコマンドはミニバッファの外部で使う)。
 2117: @vindex vc-log-mode-hook
 2118: @c   Each time you check in a file, the log entry buffer is put into VC Log
 2119: @c mode, which involves running two hooks: @code{text-mode-hook} and
 2120: @c @code{vc-log-mode-hook}.  @xref{Hooks}.
 2121: ファイルにチェックインするたびに、
 2122: 記録項目用バッファはVC記録(vc-log)モードになります。
 2123: このモードは2つのフック、@code{text-mode-hook}と@code{vc-log-mode-hook}を
 2124: 起動します。
 2125: @xref{Hooks}。
 2127: @node Old Versions, Secondary VC Commands, Basic VC Editing, Version Control
 2128: @c @subsection Examining And Comparing Old Versions
 2129: @subsection 旧版の調査と比較
 2131: @c   One of the convenient features of version control is the ability
 2132: @c to examine any version of a file, or compare two versions.
 2133: 版管理の便利な機能の1つは、ファイルの任意の版を調べたり、
 2134: 2つの版を比較できることです。
 2136: @table @kbd
 2137: @item C-x v ~ @var{version} @key{RET}
 2138: @c Examine version @var{version} of the visited file, in a buffer of its
 2139: @c own.
 2140: 訪問しているファイルの版@var{version}を
 2141: それ専用のバッファで調べる。
 2143: @item C-x v =
 2144: @c Compare the current buffer contents with the latest checked-in version
 2145: @c of the file.
 2146: カレントバッファの内容とファイルのチェックインした最新版とを比較する。
 2148: @item C-u C-x v = @var{file} @key{RET} @var{oldvers} @key{RET} @var{newvers} @key{RET}
 2149: @c Compare the specified two versions of @var{file}.
 2150: @var{file}の指定した2つの版を比較する。
 2152: @item C-x v g
 2153: @c Display the result of the CVS annotate command using colors.
 2154: 表示色を変えてCVSの注記コマンドの結果を表示する。
 2155: @end table
 2157: @findex vc-version-other-window
 2158: @kindex C-x v ~
 2159: @c   To examine an old version in toto, visit the file and then type
 2160: @c @kbd{C-x v ~ @var{version} @key{RET}} (@code{vc-version-other-window}).
 2161: @c This puts the text of version @var{version} in a file named
 2162: @c @file{@var{filename}.~@var{version}~}, and visits it in its own buffer
 2163: @c in a separate window.  (In RCS, you can also select an old version
 2164: @c and create a branch from it.  @xref{Branches}.)
 2165: 1つの旧版を調べるには、ファイルを訪問して@kbd{C-x v ~ @var{version} @key{RET}}
 2166: (@code{vc-version-other-window})と打ちます。
 2167: これにより、ファイルの版@var{version}のテキストを
 2168: @file{@var{filename}.~@var{version}~}という名前のファイルに収め、
 2169: 別のウィンドウのそれ専用のバッファでそのファイルを訪問します。
 2170: (RCSでは、旧版を選択して、それから枝分かれを作成できる。
 2171: @pxref{Branches}。)
 2173: @findex vc-diff
 2174: @kindex C-x v =
 2175: @c   But usually it is more convenient to compare two versions of the file,
 2176: @c with the command @kbd{C-x v =} (@code{vc-diff}).  Plain @kbd{C-x v =}
 2177: @c compares the current buffer contents (saving them in the file if
 2178: @c necessary) with the last checked-in version of the file.  @kbd{C-u C-x v
 2179: @c =}, with a numeric argument, reads a file name and two version numbers,
 2180: @c then compares those versions of the specified file.
 2181: しかし通常は、コマンド@kbd{C-x v =}(@code{vc-diff})で
 2182: ファイルの2つの版を比較したほうが、もっと便利です。
 2183: 引数を指定しない@kbd{C-x v =}では、カレントファイルの内容
 2184: (必要があればファイルに保存する)とファイルのチェックインしてある
 2185: 最新版とを比較します。
 2186: 数引数を指定した@kbd{C-u C-x v =}では、
 2187: ファイル名と2つの版番号を読み取ってから、
 2188: 指定したファイルの2つの版を比較します。
 2190: @c   If you supply a directory name instead of the name of a registered
 2191: @c file, this command compares the two specified versions of all registered
 2192: @c files in that directory and its subdirectories.
 2193: 登録したファイルのかわりにディレクトリ名を指定すると、
 2194: このコマンドは、そのディレクトリとその下にあるサブディレクトリに
 2195: 置かれているすべての登録されたファイルの指定した2つの版を比較します。
 2197: @c   You can specify a checked-in version by its number; an empty input
 2198: @c specifies the current contents of the work file (which may be different
 2199: @c from all the checked-in versions).  You can also specify a snapshot name
 2200: @c (@pxref{Snapshots}) instead of one or both version numbers.
 2201: チェックインしてある版は、その番号で指定します。
 2202: 入力が空だと、(チェックインしてある版とは異なるかもしれない)作業ファイルの
 2203: 現在の内容を指定します。
 2204: 版番号のかわりに、スナップショット名(@pxref{Snapshots})を指定することも
 2205: できます。
 2207: @c   This command works by running the @code{diff} utility, getting the
 2208: @c options from the variable @code{diff-switches}.  It displays the output
 2209: @c in a special buffer in another window.  Unlike the @kbd{M-x diff}
 2210: @c command, @kbd{C-x v =} does not try to locate the changes in the old and
 2211: @c new versions.  This is because normally one or both versions do not
 2212: @c exist as files when you compare them; they exist only in the records of
 2213: @c the master file.  @xref{Comparing Files}, for more information about
 2214: @c @kbd{M-x diff}.
 2215: このコマンドは、変数@code{diff-switches}で指定されるオプションを用いて、
 2216: @code{diff}プログラムを実行して動作します。
 2217: その出力は別のウィンドウの特別なバッファに表示されます。
 2218: @kbd{M-x diff}コマンドと違って、@kbd{C-x v =}では新版と旧版の
 2219: 相違箇所には移動できません。
 2220: というのは、通常、一方の版、あるいは、両方の版は、
 2221: 比較するときにはファイルとしては存在していないからです。
 2222: それらは、マスタファイルの記録の中に存在するだけです。
 2223: @kbd{M-x diff}についてより詳しくは、@xref{Comparing Files}。
 2225: @findex vc-annotate
 2226: @kindex C-x v g
 2227: @c   For CVS-controlled files, you can display the result of the CVS
 2228: @c annotate command, using colors to enhance the visual appearance.  Use
 2229: @c the command @kbd{M-x vc-annotate} to do this.  Red means new, blue means
 2230: @c old, and intermediate colors indicate intermediate ages.  A prefix
 2231: @c argument @var{n} specifies a stretch factor for the time scale; it makes
 2232: @c each color cover a period @var{n} times as long.
 2233: CVSで管理しているファイルに関しては、
 2234: 一目でわかるように複数の表示色を使って、CVS注記コマンドの結果を表示できます。
 2235: これには、@kbd{M-x vc-annotate}を使います。
 2236: 赤は新版、青は旧版、それらの中間色は中間の版を表します。
 2237: 数引数@var{n}は、時間尺度を伸ばします。
 2238: つまり、ある表示色で表す期間を@var{n}倍します。
 2240: @node Secondary VC Commands, Branches, Old Versions, Version Control
 2241: @c @subsection The Secondary Commands of VC
 2242: @subsection VCの副次的なコマンド
 2244: @c   This section explains the secondary commands of VC; those that you might
 2245: @c use once a day.
 2246: 本節では、VCの副次的なコマンドを説明します。
 2247: 1日に一度くらい使うようなコマンドです。
 2249: @menu
 2250: * Registering::         Putting a file under version control.
 2251: * VC Status::           Viewing the VC status of files.
 2252: * VC Undo::             Cancelling changes before or after check-in.
 2253: * VC Dired Mode::       Listing files managed by version control. 
 2254: * VC Dired Commands::   Commands to use in a VC Dired buffer.
 2255: @end menu
 2257: @node Registering, VC Status, , Secondary VC Commands
 2258: @c @subsubsection Registering a File for Version Control
 2259: @subsubsection VCへのファイル登録
 2261: @kindex C-x v i
 2262: @findex vc-register
 2263: @c   You can put any file under version control by simply visiting it, and
 2264: @c then typing @w{@kbd{C-x v i}} (@code{vc-register}).
 2265: ファイルを訪問してから@w{@kbd{C-x v i}}(@code{vc-register})と打つだけで、
 2266: ファイルを版管理の管理下に置けます。
 2268: @table @kbd
 2269: @item C-x v i
 2270: @c Register the visited file for version control.
 2271: 訪問したファイルを版管理に登録する。
 2272: @end table
 2274: @vindex vc-default-back-end
 2275: @c   To register the file, Emacs must choose which version control system
 2276: @c to use for it.  You can specify your choice explicitly by setting
 2277: @c @code{vc-default-back-end} to @code{RCS}, @code{CVS} or @code{SCCS}.
 2278: @c Otherwise, if there is a subdirectory named @file{RCS}, @file{SCCS}, or
 2279: @c @file{CVS}, Emacs uses the corresponding version control system.  In the
 2280: @c absence of any specification, the default choice is RCS if RCS is
 2281: @c installed, otherwise SCCS.
 2282: ファイルを登録するには、Emacsはそのファイルに対してどの版管理システムを
 2283: 使うか選ぶ必要があります。
 2284: @code{vc-default-back-end}に、@code{RCS}、@code{CVS}、@code{SCCS}の
 2285: いずれかを設定すれば、明示的に指定できます。
 2286: あるいは、@file{RCS}、@file{SCCS}、@file{CVS}という名前の
 2287: サブディレクトリがあるなら、Emacsは対応する版管理システムを使います。
 2288: 指定がまったくなければ、デフォルトでは、
 2289: RCSがインストールされていればRCS、さもなければSCCSを選びます。
 2291: @c   If locking is in use, @kbd{C-x v i} leaves the file unlocked and
 2292: @c read-only.  Type @kbd{C-x C-q} if you wish to start editing it.  After
 2293: @c registering a file with CVS, you must subsequently commit the initial
 2294: @c version by typing @kbd{C-x C-q}.
 2295: ロックを使用している場合には、@kbd{C-x v i}は、
 2296: ファイルのロックを解除し読み出し専用にします。
 2297: ファイルの編集を始めたい場合には、@kbd{C-x C-q}と打ちます。
 2298: CVSにファイルを登録したあとでは、
 2299: @kbd{C-x C-q}と打って最初の版を記録する必要があります。
 2301: @vindex vc-default-init-version
 2302: @c   The initial version number for a newly registered file is 1.1, by
 2303: @c default.  You can specify a different default by setting the variable
 2304: @c @code{vc-default-init-version}, or you can give @kbd{C-x v i} a numeric
 2305: @c argument; then it reads the initial version number for this particular
 2306: @c file using the minibuffer.
 2307: 新しく登録されたファイルの最初の版番号は、デフォルトでは1.1です。
 2308: 異なるデフォルトを指定するには、
 2309: 変数@code{vc-default-init-version}に設定します。
 2310: あるいは、@kbd{C-x v i}に数引数を指定すると、
 2311: そのファイルだけに使う最初の版番号をミニバッファで読みます。
 2313: @vindex vc-initial-comment
 2314: @c   If @code{vc-initial-comment} is non-@code{nil}, @kbd{C-x v i} reads an
 2315: @c initial comment to describe the purpose of this source file.  Reading
 2316: @c the initial comment works like reading a log entry (@pxref{Log Buffer}).
 2317: @code{vc-initial-comment}が@code{nil}以外ならば、
 2318: @kbd{C-x v i}はこのソースファイルの目的を記した初期コメントを読みます。
 2319: これは記録項目(@pxref{Log Buffer})を読むのと同じように動作します。
 2321: @node VC Status, VC Undo, Registering, Secondary VC Commands
 2322: @c @subsubsection VC Status Commands
 2323: @subsubsection VC状態表示コマンド
 2325: @table @kbd
 2326: @item C-x v l
 2327: @c Display version control state and change history.
 2328: 版管理の状態と変更履歴を表示する。
 2329: @end table
 2331: @kindex C-x v l
 2332: @findex vc-print-log
 2333: @c   To view the detailed version control status and history of a file,
 2334: @c type @kbd{C-x v l} (@code{vc-print-log}).  It displays the history of
 2335: @c changes to the current file, including the text of the log entries.  The
 2336: @c output appears in a separate window.
 2337: ファイルの詳しい版管理状態や履歴を見るには、
 2338: @kbd{C-x v l}(@code{vc-print-log})と打ちます。
 2339: 記録項目を含めてカレントファイルの変更履歴を表示します。
 2340: 出力は別のウィンドウに表示されます。
 2342: @node VC Undo, VC Dired Mode, VC Status, Secondary VC Commands
 2343: @c @subsubsection Undoing Version Control Actions
 2344: @subsubsection 版管理操作のアンドゥ
 2346: @table @kbd
 2347: @item C-x v u
 2348: @c Revert the buffer and the file to the last checked-in version.
 2349: バッファとファイルを最新のチェックインしてある版に復元する。
 2351: @item C-x v c
 2352: @c Remove the last-entered change from the master for the visited file.
 2353: @c This undoes your last check-in.
 2354: 訪問先ファイルのマスタファイルに最後に入れた変更を取り除く。
 2355: つまり、最後のチェックインをアンドゥする。
 2356: @end table
 2358: @kindex C-x v u
 2359: @findex vc-revert-buffer
 2360: @c   If you want to discard your current set of changes and revert to the
 2361: @c last version checked in, use @kbd{C-x v u} (@code{vc-revert-buffer}).
 2362: @c This leaves the file unlocked; if locking is in use, you must first lock
 2363: @c the file again before you change it again.  @kbd{C-x v u} requires
 2364: @c confirmation, unless it sees that you haven't made any changes since the
 2365: @c last checked-in version.
 2366: これまでの一連の変更を破棄してチェックインしてある最新版へ復元したいときは、
 2367: @kbd{C-x v u}(@code{vc-revert-buffer})を使います。
 2368: ロックを使用しているときには、ファイルのロックを解除するので、
 2369: 変更を始めるまえにまずファイルをロックし直す必要があります。
 2370: チェックインした最新版から変更していないと判断できない限り、
 2371: @kbd{C-x v u}は確認を求めてきます。
 2373: @c   @kbd{C-x v u} is also the command to unlock a file if you lock it and
 2374: @c then decide not to change it.
 2375: @kbd{C-x v u}は、
 2376: ファイルをロックしたけれどもやはりファイルを変更しないと決めたときに、
 2377: ロックを解除するコマンドでもあります。
 2379: @kindex C-x v c
 2380: @findex vc-cancel-version
 2381: @c   To cancel a change that you already checked in, use @kbd{C-x v c}
 2382: @c (@code{vc-cancel-version}).  This command discards all record of the
 2383: @c most recent checked-in version.  @kbd{C-x v c} also offers to revert
 2384: @c your work file and buffer to the previous version (the one that precedes
 2385: @c the version that is deleted).
 2386: すでにチェックインしてしまった変更を取り消すには、
 2387: @kbd{C-x v c}(@code{vc-cancel-version})を使います。
 2388: このコマンドは、チェックインした最新版のすべての記録を捨てさります。
 2389: さらに、@kbd{C-x v c}は、作業ファイルとバッファを
 2390: 以前の版(捨てた最新版の1つまえの版)に復元するかどうか
 2391: 聞いてきます。
 2393: @c   If you answer @kbd{no}, VC keeps your changes in the buffer, and locks
 2394: @c the file.  The no-revert option is useful when you have checked in a
 2395: @c change and then discover a trivial error in it; you can cancel the
 2396: @c erroneous check-in, fix the error, and check the file in again.
 2397: @kbd{no}と答えると、VCはバッファでの変更を保持して
 2398: ファイルもロックしたままにします。
 2399: チェックインした変更に明らかなまちがいがあるとわかったときに、
 2400: この「復元しない」という選択肢は便利です。
 2401: 誤りを含んだチェックインを取り消し、誤りを訂正してから、
 2402: 改めてファイルをチェックインできます。
 2404: @c   When @kbd{C-x v c} does not revert the buffer, it unexpands all
 2405: @c version control headers in the buffer instead (@pxref{Version Headers}).
 2406: @c This is because the buffer no longer corresponds to any existing
 2407: @c version.  If you check it in again, the check-in process will expand the
 2408: @c headers properly for the new version number.
 2409: @kbd{C-x v c}がバッファを復元しないときには、
 2410: そのかわりに、バッファ内のすべての版管理ヘッダの展開形をもとの形に戻します
 2411: (@pxref{Version Headers})。
 2412: なぜなら、バッファはもはや既存のどの版にも対応しないからです。
 2413: ふたたびチェックインすると、チェックインの過程で、
 2414: 新たな版番号として正しくヘッダを展開します。
 2416: @c   However, it is impossible to unexpand the RCS @samp{@w{$}Log$} header
 2417: @c automatically.  If you use that header feature, you have to unexpand it
 2418: @c by hand---by deleting the entry for the version that you just canceled.
 2419: しかしながら、RCSの@samp{@w{$}Log$}ヘッダを
 2420: 自動的にもとの形に戻すことは不可能です。
 2421: このヘッダの機能を使うなら、取り消した版に対応する項目を削除することで、
 2422: もとの形に手で戻す必要があります。
 2424: @c   Be careful when invoking @kbd{C-x v c}, as it is easy to lose a lot of
 2425: @c work with it.  To help you be careful, this command always requires
 2426: @c confirmation with @kbd{yes}.  Note also that this command is disabled
 2427: @c under CVS, because canceling versions is very dangerous and discouraged
 2428: @c with CVS.
 2429: 多くの作業結果を簡単に失ってしまうので、
 2430: @kbd{C-x v c}を起動するときには十分注意してください。
 2432: @node VC Dired Mode, VC Dired Commands, VC Undo, Secondary VC Commands
 2433: @c @subsubsection Dired under VC
 2434: @subsubsection VC下のdired
 2436: @kindex C-x v d
 2437: @findex vc-directory
 2438: @c   When you are working on a large program, it is often useful to find
 2439: @c out which files have changed within an entire directory tree, or to view
 2440: @c the status of all files under version control at once, and to perform
 2441: @c version control operations on collections of files.  You can use the
 2442: @c command @kbd{C-x v d} (@code{vc-directory}) to make a directory listing
 2443: @c that includes only files relevant for version control.
 2444: 大きなプログラムを扱っているときは、ディレクトリの木構造全体の中で
 2445: どのファイルが変更されたのかを調べたり、
 2446: 版管理の下に置かれているすべてのファイルの状態を一度に見られると便利です。
 2447: コマンド@kbd{C-x v d}(@code{vc-directory})を使えば、
 2448: 版管理に関連したファイルだけを含んだディレクトリ一覧を作れます。
 2450: @vindex vc-dired-terse-display
 2451: @c   @kbd{C-x v d} creates a buffer which uses VC Dired Mode.  This looks
 2452: @c much like an ordinary Dired buffer (@pxref{Dired}); however, normally it
 2453: @c shows only the noteworthy files (those locked or not up-to-date).  This
 2454: @c is called @dfn{terse display}.  If you set the variable
 2455: @c @code{vc-dired-terse-display} to @code{nil}, then VC Dired shows all
 2456: @c relevant files---those managed under version control, plus all
 2457: @c subdirectories (@dfn{full display}).  The command @kbd{v t} in a VC
 2458: @c Dired buffer toggles between terse display and full display (@pxref{VC
 2459: @c Dired Commands}).
 2460: @kbd{C-x v d}は、VC diredモードを使うバッファを作ります。
 2461: これは、普通のdiredバッファ(@pxref{Dired})にそっくりですが、
 2462: (ロックされていたり、未更新の)注意を払うべきファイルだけを
 2463: 通常は表示します。
 2464: これを@dfn{簡素な表示}と呼びます。
 2465: 変数@code{vc-dired-terse-display}に@code{nil}を設定すると、
 2466: VC diredは、関連するすべてのファイル、つまり、
 2467: 版管理の下に置かれたファイルとすべてのサブディレクトリを表示します
 2468: (@dfn{完全な表示})。
 2469: VC diredバッファのコマンド@kbd{v t}は、
 2470: 簡素な表示と完全な表示を切り替えます。
 2471: (@pxref{VC Dired Commands}。)
 2473: @vindex vc-dired-recurse
 2474: @c   By default, VC Dired produces a recursive listing of noteworthy or
 2475: @c relevant files at or below the given directory.  You can change this by
 2476: @c setting the variable @code{vc-dired-recurse} to @code{nil}; then VC
 2477: @c Dired shows only the files in the given directory.
 2478: デフォルトでは、VC diredは、指定したディレクトリやそれより下に置かれた
 2479: 注意を払うべきファイルや関連するファイルの再帰的な一覧を作ります。
 2480: この動作を変えるには、
 2481: 変数@code{vc-dired-recurse}に@code{nil}を設定します。
 2482: すると、VC diredは、指定したディレクトリにあるファイルだけを表示します。
 2484: @c   The line for an individual file shows the version control state in the
 2485: @c place of the hard link count, owner, group, and size of the file.  If
 2486: @c the file is unmodified, in sync with the master file, the version
 2487: @c control state shown is blank.  Otherwise it consists of text in
 2488: @c parentheses.  Under RCS and SCCS, the name of the user locking the file
 2489: @c is shown; under CVS, an abbreviated version of the @samp{cvs status}
 2490: @c output is used.  Here is an example using RCS:
 2491: 各ファイルを表す行には、ハードリンク数、所有者、グループ、ファイルサイズの
 2492: かわりに版管理状態があります。
 2493: ファイルが変更されていなければ、つまり、
 2494: マスタファイルの内容に同期しているならば、版管理状態は空です。
 2495: そうでなければ、括弧で括ったテキストになります。
 2496: RCSとSCCSでは、ファイルをロックしているユーザーの名前が示されます。
 2497: CVSでは、cvs状態(@samp{cvs status})を簡略化したものが示されます。
 2498: つぎは、RCSを使っている場合の例です。
 2500: @smallexample
 2501: @group
 2502:   /home/jim/project:
 2504:   -rw-r--r-- (jim)      Apr  2 23:39 file1
 2505:   -r--r--r--            Apr  5 20:21 file2
 2506: @end group
 2507: @end smallexample
 2509: @noindent
 2510: @c The files @samp{file1} and @samp{file2} are under version control,
 2511: @c @samp{file1} is locked by user jim, and @samp{file2} is unlocked.
 2512: ファイル、@samp{file1}と@samp{file2}が、版管理の下に置かれていて、
 2513: @samp{file1}はユーザーjimがロックしていて、
 2514: @samp{file2}はロックされていません。
 2516: @c   Here is an example using CVS:
 2517: つぎは、CVSを使っている場合の例です。
 2519: @smallexample
 2520: @group
 2521:   /home/joe/develop:
 2523:   -rw-r--r-- (modified) Aug  2  1997 file1.c
 2524:   -rw-r--r--            Apr  4 20:09 file2.c
 2525:   -rw-r--r-- (merge)    Sep 13  1996 file3.c
 2526: @end group
 2527: @end smallexample
 2529: @c   Here @samp{file1.c} is modified with respect to the repository, and
 2530: @c @samp{file2.c} is not.  @samp{file3.c} is modified, but other changes
 2531: @c have also been checked in to the repository---you need to merge them
 2532: @c with the work file before you can check it in.
 2533: 保管庫のものに比べて、@samp{file1.c}は変更されていますが、
 2534: @samp{file2.c}は変更されていません。
 2535: @samp{file3.c}も変更されていますが、
 2536: 保管庫には他の変更がチェックインされています。
 2537: @samp{file3.c}をチェックインするまえに、
 2538: それらの変更を併合する必要があります。
 2540: @vindex vc-directory-exclusion-list
 2541: @c   When VC Dired displays subdirectories (in the ``full'' display mode),
 2542: @c it omits some that should never contain any files under version control.
 2543: @c By default, this includes Version Control subdirectories such as
 2544: @c @samp{RCS} and @samp{CVS}; you can customize this by setting the
 2545: @c variable @code{vc-directory-exclusion-list}.
 2546: VC diredで(『完全な表示』のときに)サブディレクトリを表示するときには、
 2547: 版管理の下には絶対に置かれないものは省略します。
 2548: デフォルトでは、@samp{RCS}や@samp{CVS}などのVCのサブディレクトリが含まれます。
 2549: これは、変数@code{vc-directory-exclusion-list}を設定して
 2550: カスタマイズできます。
 2552: @c   You can fine-tune VC Dired's format by typing @kbd{C-u C-x v d}---as in
 2553: @c ordinary Dired, that allows you to specify additional switches for the
 2554: @c @samp{ls} command.
 2555: 普通のdiredのように、@kbd{C-u C-x v d}と打てば、
 2556: @samp{ls}プログラムに渡す追加オプションを指定して、
 2557: VC diredの出力書式を微調整できます。
 2559: @node VC Dired Commands, , VC Dired Mode, Secondary VC Commands
 2560: @c @subsubsection VC Dired Commands
 2561: @subsubsection VC diredコマンド
 2563: @c   All the usual Dired commands work normally in VC Dired mode, except
 2564: @c for @kbd{v}, which is redefined as the version control prefix.  You can
 2565: @c invoke VC commands such as @code{vc-diff} and @code{vc-print-log} by
 2566: @c typing @kbd{v =}, or @kbd{v l}, and so on.  Most of these commands apply
 2567: @c to the file name on the current line.
 2568: VC diredモードでも、通常のdiredコマンドはすべて普通に動作しますが、
 2569: @kbd{v}は例外で、版管理プレフィックスとして再定義してあります。
 2570: @code{vc-diff}や@code{vc-print-log}のようなVCコマンドは、
 2571: @kbd{v =}や@kbd{v l}いうように打てば起動できます。
 2572: これらのコマンドの多くは、現在行のファイルに作用します。
 2574: @c   The command @kbd{v v} (@code{vc-next-action}) operates on all the
 2575: @c marked files, so that you can lock or check in several files at once.
 2576: @c If it operates on more than one file, it handles each file according to
 2577: @c its current state; thus, it might lock one file, but check in another
 2578: @c file.  This could be confusing; it is up to you to avoid confusing
 2579: @c behavior by marking a set of files that are in a similar state.
 2580: コマンド@kbd{v v}(@code{vc-next-action})は、
 2581: 印を付けたすべてのファイルに作用するので、
 2582: 複数のファイルを一度にロックしたりチェックインしたりできます。
 2583: 複数のファイルに作用する場合、各ファイルの現状に応じて個別に扱います。
 2584: つまり、あるファイルはロックしたり、別のファイルはチェックインしたりします。
 2585: これは混乱の原因かもしれません。
 2586: 同じ状態の一連のファイルに印を付けて、
 2587: 混乱を防止するのはユーザーの責任です。
 2589: @c   If any files call for check-in, @kbd{v v} reads a single log entry,
 2590: @c then uses it for all the files being checked in.  This is convenient for
 2591: @c registering or checking in several files at once, as part of the same
 2592: @c change.
 2593: ファイルをチェックインするときには、
 2594: @kbd{v v}は1つの記録項目を読んで、それをチェックインするすべての
 2595: ファイルに使います。
 2596: これは、同じ変更に属する一連のファイルを一度にチェックインする場合に
 2597: 便利です。
 2599: @findex vc-dired-toggle-terse-mode
 2600: @findex vc-dired-mark-locked
 2601: @c   You can toggle between terse display (only locked files, or files not
 2602: @c up-to-date) and full display at any time by typing @kbd{v t}
 2603: @c @code{vc-dired-toggle-terse-mode}.  There is also a special command
 2604: @c @kbd{* l} (@code{vc-dired-mark-locked}), which marks all files currently
 2605: @c locked (or, with CVS, all files not up-to-date).  Thus, typing @kbd{* l
 2606: @c t k} is another way to delete from the buffer all files except those
 2607: @c currently locked.
 2608: @kbd{v t}(@code{vc-dired-toggle-terse-mode})と打てばいつでも、
 2609: (ロックされていたり、内容が未更新のものだけを表示する)
 2610: 簡素な表示と完全な表示とを切り替えられます。
 2611: 特別なコマンド@kbd{* l}(@code{vc-dired-mark-locked})もあります。
 2612: これは現在ロックされている(CVSの場合には、内容が未更新である)
 2613: すべてのファイルに印を付けます。
 2614: つまり、現在ロックされいるもの以外のすべてのファイルをバッファから
 2615: 削除する別の方法は、@kbd{* l t k}と打つことです。
 2617: @node Branches, Snapshots, Secondary VC Commands, Version Control
 2618: @c @subsection Multiple Branches of a File
 2619: @c @cindex branch (version control)
 2620: @c @cindex trunk (version control)
 2621: @subsection ファイルの複数の枝分かれ
 2622: @cindex 枝(版管理)
 2623: @cindex 幹(版管理)
 2625: @c   One use of version control is to maintain multiple ``current''
 2626: @c versions of a file.  For example, you might have different versions of a
 2627: @c program in which you are gradually adding various unfinished new
 2628: @c features.  Each such independent line of development is called a
 2629: @c @dfn{branch}.  VC allows you to create branches, switch between
 2630: @c different branches, and merge changes from one branch to another.
 2631: @c Please note, however, that branches are only supported for RCS at the
 2632: @c moment.
 2633: 版管理の用途の1つは、ファイルの複数の『現在』版を維持することです。
 2634: たとえば、さまざまな完了していない新しい機能を徐々に付け加えている
 2635: プログラムの異なる版を持つかもしれません。
 2636: そういった開発の独立した流れを@dfn{枝}(branch)と呼びます。
 2637: VCでは、枝を作ったり、別の枝へ切り替えたり、2つの枝を併合したりできます。
 2638: しかし、今のところ、RCSだけで枝を使えることに注意してください。
 2640: @c   A file's main line of development is usually called the @dfn{trunk}.
 2641: @c The versions on the trunk are normally numbered 1.1, 1.2, 1.3, etc.  At
 2642: @c any such version, you can start an independent branch.  A branch
 2643: @c starting at version 1.2 would have version number, and consecutive
 2644: @c versions on this branch would have numbers,,,
 2645: @c and so on.  If there is a second branch also starting at version 1.2, it
 2646: @c would consist of versions,,, etc.
 2647: ファイルの開発の主要な流れを@dfn{幹}(trunk)と呼びます。
 2648: 幹にある版は、普通、1.1、1.2、1.3、…と番号が付けられます。
 2649: そのような版のどれからでも、独立した枝を始めることができます。
 2650: 版1.2から始まる枝の版番号は1.2.1.1となり、
 2651: 同じ枝の後続の版番号は1.2.1.2、、、…となります。
 2652: 版1.2から始まる別の枝があれば、それらの版番号は、
 2655: @c @cindex head version
 2656: @cindex 先頭版
 2657: @c   If you omit the final component of a version number, that is called a
 2658: @c @dfn{branch number}.  It refers to the highest existing version on that
 2659: @c branch---the @dfn{head version} of that branch.  The branches in the
 2660: @c example above have branch numbers 1.2.1 and 1.2.2.
 2661: 版番号の最後の要素を省略したものを@dfn{枝番号}と呼びます。
 2662: これは、その枝にある版の中でもっとも大きい番号の版、@dfn{先頭版}を指します。
 2663: まえの例の枝は、枝番号1.2.1と1.2.2です。
 2665: @menu
 2666: * Switching Branches::    How to get to another existing branch.
 2667: * Creating Branches::     How to start a new branch.
 2668: * Merging::               Transferring changes between branches.
 2669: * Multi-User Branching::  Multiple users working at multiple branches 
 2670:                             in parallel.
 2671: @end menu
 2673: @node Switching Branches, Creating Branches, , Branches
 2674: @c @subsubsection Switching between Branches
 2675: @subsubsection 枝の切り替え
 2677: @c   To switch between branches, type @kbd{C-u C-x C-q} and specify the
 2678: @c version number you want to select.  This version is then visited
 2679: @c @emph{unlocked} (write-protected), so you can examine it before locking
 2680: @c it.  Switching branches in this way is allowed only when the file is not
 2681: @c locked.
 2682: 枝を切り替えるには、@kbd{C-u C-x C-q}と打ってから、
 2683: 選択したい版番号を指定します。
 2684: その版を@emph{ロックしない}(書き込み不可)で訪問するので、
 2685: ロックするまえに調べることができます。
 2686: このような枝の切り替えが可能なのは、
 2687: ファイルがロックされていない場合に限ります。
 2689: @c   You can omit the minor version number, thus giving only the branch
 2690: @c number; this takes you to the head version on the chosen branch.  If you
 2691: @c only type @key{RET}, Emacs goes to the highest version on the trunk.
 2692: 枝の中での版番号を省略して枝番号だけを指定できます。
 2693: すると、その枝の先頭版を選ぶことになります。
 2694: @key{RET}だけを打つと、Emacsは幹の上のもっとも大きい版を選びます。
 2696: @c   After you have switched to any branch (including the main branch), you
 2697: @c stay on it for subsequent VC commands, until you explicitly select some
 2698: @c other branch.
 2699: (幹を含む)どれかの枝へ切り替えたあとでは、
 2700: 明示的に他の枝を選択するまで、それ以降のVCコマンドはその枝を使います。
 2702: @node Creating Branches, Merging, Switching Branches, Branches
 2703: @c @subsubsection Creating New Branches
 2704: @subsubsection 新しい枝の作成
 2706: @c   To create a new branch from a head version (one that is the latest in
 2707: @c the branch that contains it), first select that version if necessary,
 2708: @c lock it with @kbd{C-x C-q}, and make whatever changes you want.  Then,
 2709: @c when you check in the changes, use @kbd{C-u C-x C-q}.  This lets you
 2710: @c specify the version number for the new version.  You should specify a
 2711: @c suitable branch number for a branch starting at the current version.
 2712: @c For example, if the current version is 2.5, the branch number should be
 2713: @c 2.5.1, 2.5.2, and so on, depending on the number of existing branches at
 2714: @c that point.
 2715: 先頭版(枝の中にある最新版)から新たな枝を作るには、
 2716: 必要ならまずその版を選択してから、@kbd{C-x C-q}でそれをロックし、
 2717: 必要な変更を施します。
 2718: そして、変更をチェックインするときに、@kbd{C-u C-x C-q}を使います。
 2719: このコマンドでは、新版に対する版番号を指定できます。
 2720: 現在の版から始まる枝として適切な番号を指定する必要があります。
 2721: たとえば、現在の版が2.5ならば、その時点で存在する枝の数に依存しますが、
 2722: 枝番号は、2.5.1、2.5.2、…です。
 2724: @c   To create a new branch at an older version (one that is no longer the
 2725: @c head of a branch), first select that version (@pxref{Switching
 2726: @c Branches}), then lock it with @kbd{C-x C-q}.  You'll be asked to
 2727: @c confirm, when you lock the old version, that you really mean to create a
 2728: @c new branch---if you say no, you'll be offered a chance to lock the
 2729: @c latest version instead.
 2730: 旧版(先頭版ではないもの)から新しい枝を作るには、
 2731: その版をまず選択してから(@pxref{Switching Branches})、
 2732: それを@kbd{C-x C-q}でロックします。
 2733: 旧版をロックすると、本当に新しい枝を作るのかどうか確認してきます。
 2734: noで答えると、かわりに、最新版をロックするかどうか聞いてきます。
 2736: @c   Then make your changes and type @kbd{C-x C-q} again to check in a new
 2737: @c version.  This automatically creates a new branch starting from the
 2738: @c selected version.  You need not specially request a new branch, because
 2739: @c that's the only way to add a new version at a point that is not the head
 2740: @c of a branch.
 2741: 変更してから、ふたたび@kbd{C-x C-q}と打って新版にチェックインします。
 2742: こうすると選択した版から始まる新しい枝を自動的に作ります。
 2743: 新しい枝を特に指定する必要はありません。
 2744: なぜなら、枝の先頭版でないところに新版を付け加える唯一の方法だからです。
 2746: @c   After the branch is created, you ``stay'' on it.  That means that
 2747: @c subsequent check-ins create new versions on that branch.  To leave the
 2748: @c branch, you must explicitly select a different version with @kbd{C-u C-x
 2749: @c C-q}.  To transfer changes from one branch to another, use the merge
 2750: @c command, described in the next section.
 2751: 枝を作ったあとでは、その枝に『留まり』ます。
 2752: つまり、それ以降にチェックインすると、その枝に新版が作られます。
 2753: 枝を去るには、@kbd{C-u C-x C-q}で明示的に別の版を選ぶ必要があります。
 2754: ある枝から別の枝へ変更を移すには、次節で説明する併合コマンドを使ってください。
 2756: @node Merging, Multi-User Branching, Creating Branches, Branches
 2757: @c @subsubsection Merging Branches
 2758: @subsubsection 枝の併合
 2760: @c @cindex merging changes
 2761: @cindex 変更の併合
 2762: @c   When you have finished the changes on a certain branch, you will
 2763: @c often want to incorporate them into the file's main line of development
 2764: @c (the trunk).  This is not a trivial operation, because development might
 2765: @c also have proceeded on the trunk, so that you must @dfn{merge} the
 2766: @c changes into a file that has already been changed otherwise.  VC allows
 2767: @c you to do this (and other things) with the @code{vc-merge} command.
 2768: ある枝で変更を完了したときには、それらの変更をファイルの開発の主流(幹)に
 2769: 取り込みたいことがしばしばあるでしょう。
 2770: これは簡単な操作ではありません。
 2771: というのは、幹でも開発は進行しているので、
 2772: 別の向きに変更されているファイルに変更を@dfn{併合}する必要があるからです。
 2773: VCでは、@code{vc-merge}コマンドで併合(とそれ以外のことも)できます。
 2775: @table @kbd
 2776: @item C-x v m (vc-merge)
 2777: @c Merge changes into the work file.
 2778: 作業ファイルに変更を併合する。
 2779: @end table
 2781: @kindex C-x v m
 2782: @findex vc-merge
 2783: @c   @kbd{C-x v m} (@code{vc-merge}) takes a set of changes and merges it
 2784: @c into the current version of the work file.  It first asks you for a
 2785: @c branch number or a pair of version numbers in the minibuffer.  Then it
 2786: @c finds the changes from that branch, or between the two versions you
 2787: @c specified, and merges them into the current version of the current file.
 2788: @kbd{C-x v m}(@code{vc-merge})は、
 2789: 一連の変更を作業ファイルの現在の版に併合します。
 2790: このコマンドはまず、ミニバッファで枝番号か2つの版番号を読み取ります。
 2791: そして、その枝での変更、あるいは、指定した2つの版のあいだの変更を調べ、
 2792: それらをファイルの現在の版に併合します。
 2794: @c   As an example, suppose that you have finished a certain feature on
 2795: @c branch 1.3.1.  In the meantime, development on the trunk has proceeded
 2796: @c to version 1.5.  To merge the changes from the branch to the trunk,
 2797: @c first go to the head version of the trunk, by typing @kbd{C-u C-x C-q
 2798: @c RET}.  Version 1.5 is now current.  If locking is used for the file,
 2799: @c type @kbd{C-x C-q} to lock version 1.5 so that you can change it.  Next,
 2800: @c type @kbd{C-x v m 1.3.1 RET}.  This takes the entire set of changes on
 2801: @c branch 1.3.1 (relative to version 1.3, where the branch started, up to
 2802: @c the last version on the branch) and merges it into the current version
 2803: @c of the work file.  You can now check in the changed file, thus creating
 2804: @c version 1.6 containing the changes from the branch.
 2805: 例として、枝1.3.1である機能を実装し終えたとしましょう。
 2806: この間、幹でも開発が進んでいて版1.5になっています。
 2807: 枝での変更を幹に併合するには、
 2808: まず、@kbd{C-u C-x C-q @key{RET}}と打って、幹の先頭版へ行きます。
 2809: 版1.5が現在の版になります。
 2810: ファイルのロックを使っている場合には、@kbd{C-x C-q}と打って、
 2811: 版1.5をロックして変更できるようにします。
 2812: 続いて@kbd{C-x v m 1.3.1 @key{RET}}と打ちます。
 2813: すると、枝1.3.1での(枝の開始点である版1.3から枝の中にある最新版までの)
 2814: 一連の変更を取り出して、それらを作業ファイルの現在の版に併合します。
 2815: ここで、変更された作業ファイルをチェックインできます。
 2816: つまり、枝での変更を取り込んだ版1.6を作れるのです。
 2818: @c   It is possible to do further editing after merging the branch, before
 2819: @c the next check-in.  But it is usually wiser to check in the merged
 2820: @c version, then lock it and make the further changes.  This will keep
 2821: @c a better record of the history of changes.
 2822: チェックインするまえに、枝から併合したあとにさらに編集することも可能です。
 2823: しかし、併合した版をチェックインしたあとで、
 2824: ロックしてさらに編集するのが、普通は賢いやり方です。
 2825: こうすれば、変更履歴をよりよく記録に残せます。
 2827: @c @cindex conflicts
 2828: @c @cindex resolving conflicts
 2829: @cindex 矛盾
 2830: @cindex 矛盾の解消
 2831: @c   When you merge changes into a file that has itself been modified, the
 2832: @c changes might overlap.  We call this situation a @dfn{conflict}, and
 2833: @c reconciling the conflicting changes is called @dfn{resolving a
 2834: @c conflict}.
 2835: すでに修正されているファイルに変更を併合するときには、
 2836: 変更が重複する場合があります。
 2837: この状況を@dfn{矛盾}と呼びます。
 2838: 矛盾した変更の辻褄を合わせることを@dfn{矛盾の解消}と呼びます。
 2840: @c   Whenever conflicts occur during merging, VC detects them, tells you
 2841: @c about them in the echo area, and asks whether you want help in merging.
 2842: @c If you say yes, it starts an Ediff session (@pxref{Top,
 2843: @c Ediff, Ediff, ediff, The Ediff Manual}).
 2844: 併合中に矛盾が起こると、VCはこれらを検出し、
 2845: それらをエコー領域に表示してユーザーに伝え、
 2846: 併合を補佐してほしいかどうか聞いてきます。
 2847: yesで答えると、ediffセッションを開始します
 2848: (@pxref{Top, Ediff, Ediff, ediff, The Ediff Manual})。
 2850: @c   If you say no, the conflicting changes are both inserted into the
 2851: @c file, surrounded by @dfn{conflict markers}.  The example below shows how
 2852: @c a conflict region looks; the file is called @samp{name} and the current
 2853: @c master file version with user B's changes in it is 1.11.
 2854: noで答えると、矛盾する変更はどちらも@dfn{矛盾印}で囲ってファイルに挿入します。
 2855: 矛盾する部分は、下の例のようになります。
 2856: 作業ファイルの名前は@samp{name}であり、
 2857: ユーザーBの変更を収めたマスタファイルの版は1.11です。
 2859: @c @w here is so CVS won't think this is a conflict.
 2860: @smallexample
 2861: @group
 2862: @w{<}<<<<<< name
 2863:   @var{User A's version}
 2864: =======
 2865:   @var{User B's version}
 2866: @w{>}>>>>>> 1.11
 2867: @end group
 2868: @end smallexample
 2870: @c @cindex vc-resolve-conflicts
 2871: @findex vc-resolve-conflicts
 2872: @c   Then you can resolve the conflicts by editing the file manually.  Or
 2873: @c you can type @code{M-x vc-resolve-conflicts} after visiting the file.
 2874: @c This starts an Ediff session, as described above.
 2875: この矛盾を解消するようにファイルを手で編集できます。
 2876: あるいは、ファイルを訪問してから@code{M-x vc-resolve-conflicts}と打ちます。
 2877: すると上に述べたediffセッションを開始します。
 2879: @node Multi-User Branching, , Merging, Branches
 2880: @c @subsubsection Multi-User Branching
 2881: @subsubsection 複数ユーザーの枝
 2883: @c   It is often useful for multiple developers to work simultaneously on
 2884: @c different branches of a file.  CVS allows this by default; for RCS, it
 2885: @c is possible if you create multiple source directories.  Each source
 2886: @c directory should have a link named @file{RCS} which points to a common
 2887: @c directory of RCS master files.  Then each source directory can have its
 2888: @c own choice of selected versions, but all share the same common RCS
 2889: @c records.
 2890: ファイルの異なる枝上で同時に複数の開発者が作業すると有益なことが
 2891: しばしばあります。
 2892: CVSでは、デフォルトで、これができます。
 2893: RCSでは、複数のソースディレクトリを作れば可能です。
 2894: RCSのマスタファイルを置いた共通のディレクトリを指す@file{RCS}という名前の
 2895: リンクを各ソースディレクトリに置きます。
 2896: こうすれば、各ソースディレクトリでは、それぞれ独自に版を選択できます。
 2897: しかし、同じ共通のRCSレコードをすべてで共有します。
 2899: @c   This technique works reliably and automatically, provided that the
 2900: @c source files contain RCS version headers (@pxref{Version Headers}).  The
 2901: @c headers enable Emacs to be sure, at all times, which version number is
 2902: @c present in the work file.
 2903: ソースファイルにRCSの版管理ヘッダ(@pxref{Version Headers})が入っていれば、
 2904: この技法は信頼性があり自動的に動作します。
 2905: ヘッダにより、Emacsはいつでも作業ファイルに入っている版番号がわかります。
 2907: @c   If the files do not have version headers, you must instead tell Emacs
 2908: @c explicitly in each session which branch you are working on.  To do this,
 2909: @c first find the file, then type @kbd{C-u C-x C-q} and specify the correct
 2910: @c branch number.  This ensures that Emacs knows which branch it is using
 2911: @c during this particular editing session.
 2912: ファイルに版管理ヘッダが入っていないときには、
 2913: 各セッションごとにどの枝で作業しているかをEmacsに明示する必要があります。
 2914: こうするには、ファイルを訪問してから、
 2915: @kbd{C-u C-x C-q}と打ち、正しい枝番号を指定します。
 2916: これにより、編集セッションではどの枝を操作しているかを
 2917: Emacsが知っていることを保証します。
 2919: @node Snapshots, Miscellaneous VC, Branches, Version Control
 2920: @c @subsection Snapshots
 2921: @c @cindex snapshots and version control
 2922: @subsection スナップショット
 2923: @cindex スナップショットと版管理
 2925: @c   A @dfn{snapshot} is a named set of file versions (one for each
 2926: @c registered file) that you can treat as a unit.  One important kind of
 2927: @c snapshot is a @dfn{release}, a (theoretically) stable version of the
 2928: @c system that is ready for distribution to users.
 2929: @dfn{スナップショット}とは、
 2930: ファイルの版(登録されたファイルそれぞれに1つずつ)
 2931: の集合に名前を付けたもので、一塊として扱うことができます。
 2932: スナップショットの重要な種類の1つは、@dfn{リリース}です。
 2933: これは、ユーザーへ配布する準備が整ったシステムの(理論的には)
 2934: 安定した版のことです。
 2936: @menu
 2937: * Making Snapshots::		The snapshot facilities.
 2938: * Snapshot Caveats::		Things to be careful of when using snapshots.
 2939: @end menu
 2941: @node Making Snapshots, Snapshot Caveats, , Snapshots
 2942: @c @subsubsection Making and Using Snapshots
 2943: @subsubsection スナップショットの作成と使用
 2945: @c   There are two basic commands for snapshots; one makes a
 2946: @c snapshot with a given name, the other retrieves a named snapshot.
 2947: スナップショットに対しては、基本的なコマンドが2つあります。
 2948: 1つは名前を指定してスナップショットを作り、
 2949: もう1つは指名したスナップショットを取り出すことです。
 2951: @table @code
 2952: @kindex C-x v s
 2953: @findex vc-create-snapshot
 2954: @item C-x v s @var{name} @key{RET}
 2955: @c Define the last saved versions of every registered file in or under the
 2956: @c current directory as a snapshot named @var{name}
 2957: @c (@code{vc-create-snapshot}).
 2958: カレントディレクトリやその下に置いてある登録されたファイルの
 2959: それぞれの保存された最新版を@var{name}という名前の
 2960: スナップショットとして定義する
 2961: (@code{vc-create-snapshot})。
 2963: @kindex C-x v r
 2964: @findex vc-retrieve-snapshot
 2965: @item C-x v r @var{name} @key{RET}
 2966: @c For all registered files at or below the current directory level, select
 2967: @c whatever versions correspond to the snapshot @var{name}
 2968: @c (@code{vc-retrieve-snapshot}).
 2969: カレントディレクトリやその下に置いてある登録されたファイルすべてについて、
 2970: スナップショット@var{name}に対応する版を選択する。
 2972: @c This command reports an error if any files are locked at or below the
 2973: @c current directory, without changing anything; this is to avoid
 2974: @c overwriting work in progress.
 2975: カレントディレクトリやその下に置いてある登録されたファイルのいずれかが
 2976: ロックされていると、このコマンドは何も変更せずにエラーを報告する。
 2977: これは、進行中の作業結果を上書きしてしまうことを避けるため。
 2978: @end table
 2980: @c   A snapshot uses a very small amount of resources---just enough to record
 2981: @c the list of file names and which version belongs to the snapshot.  Thus,
 2982: @c you need not hesitate to create snapshots whenever they are useful.
 2983: スナップショットはとても少量の資源しか使いません。
 2984: ファイル名一覧とスナップショットに属する版番号を
 2985: 記録するに十分な量だけでいいのです。
 2986: したがって、使いものになるものをスナップショットにすることを
 2987: 躇うことはありません。
 2989: @c   You can give a snapshot name as an argument to @kbd{C-x v =} or
 2990: @c @kbd{C-x v ~} (@pxref{Old Versions}).  Thus, you can use it to compare a
 2991: @c snapshot against the current files, or two snapshots against each other,
 2992: @c or a snapshot against a named version.
 2993: @kbd{C-x v =}や@kbd{C-x v ~}(@pxref{Old Versions})の引数として、
 2994: スナップショットの名前を指定できます。
 2995: したがって、スナップショットと現在のファイル、あるいは、
 2996: 2つのスナップショット同士、あるいは、
 2997: 指定した名前の版とスナップショット同士を比較できます。
 2999: @node Snapshot Caveats,  , Making Snapshots, Snapshots
 3000: @c @subsubsection Snapshot Caveats
 3001: @subsubsection スナップショットの弱点
 3003: @c @cindex named configurations (RCS)
 3004: @cindex 名前付きのコンフィギュレーション(RCS)
 3005: @c   VC's snapshot facilities are modeled on RCS's named-configuration
 3006: @c support.  They use RCS's native facilities for this, so under VC
 3007: @c snapshots made using RCS are visible even when you bypass VC.
 3008: VCのスナップショット機能は、RCSの名前付きコンフィギュレーションサポート
 3009: (named-configuration support)をモデルにしています。
 3010: RCS固有の機能を使っているため、RCSを使って作ったVCのスナップショット
 3011: は、VCを使わなくても見えます。
 3013: @c @c worded verbosely to avoid overfull hbox.
 3014: @c   For SCCS, VC implements snapshots itself.  The files it uses contain
 3015: @c name/file/version-number triples.  These snapshots are visible only
 3016: @c through VC.
 3017: SCCSでは、VC自身でスナップショット機能を実装しています。
 3018: VCが使うファイルには、名前/ファイル/版番号の3つ組みが含まれます。
 3019: これらのスナップショットは、VCを使ったときだけ見えます。
 3021: @c   A snapshot is a set of checked-in versions.  So make sure that all the
 3022: @c files are checked in and not locked when you make a snapshot.
 3023: スナップショットはチェックインした版の集合です。
 3024: ですから、スナップショットを作るときには、
 3025: すべてのファイルをチェックインしてあり、
 3026: しかもロックしていないことを確認してください。
 3028: @c   File renaming and deletion can create some difficulties with snapshots.
 3029: @c This is not a VC-specific problem, but a general design issue in version
 3030: @c control systems that no one has solved very well yet.
 3031: ファイルを改名したり削除すると、スナップショットに問題を生じます。
 3032: これはVCに固有の問題ではなく、版管理システムに一般的な設計上の問題で、
 3033: まだ誰も満足ゆく解決をできていません。
 3035: @c   If you rename a registered file, you need to rename its master along
 3036: @c with it (the command @code{vc-rename-file} does this automatically).  If
 3037: @c you are using SCCS, you must also update the records of the snapshot, to
 3038: @c mention the file by its new name (@code{vc-rename-file} does this,
 3039: @c too).  An old snapshot that refers to a master file that no longer
 3040: @c exists under the recorded name is invalid; VC can no longer retrieve
 3041: @c it.  It would be beyond the scope of this manual to explain enough about
 3042: @c RCS and SCCS to explain how to update the snapshots by hand.
 3043: 登録されたファイルを改名するなら、
 3044: そのマスタファイルも一緒に改名する必要があります
 3045: (コマンド@code{vc-rename-file}は自動的にこれを行う)。
 3046: SCCSを使っているならば、ファイル名を新しい名前にして
 3047: スナップショットの記録も更新する必要があります
 3048: (@code{vc-rename-file}はこれも行う)。
 3049: 記録された名前ではもはや存在しないマスタファイルを参照する
 3050: 古いスナップショットは無効です。
 3051: VCは(古い名前では)取り出せません。
 3052: スナップショットを手で更新する方法を説明するために
 3053: RCSやSCCSを詳しく説明することは、本書の範囲を越えています。
 3055: @c   Using @code{vc-rename-file} makes the snapshot remain valid for
 3056: @c retrieval, but it does not solve all problems.  For example, some of the
 3057: @c files in the program probably refer to others by name.  At the very
 3058: @c least, the makefile probably mentions the file that you renamed.  If you
 3059: @c retrieve an old snapshot, the renamed file is retrieved under its new
 3060: @c name, which is not the name that the makefile expects.  So the program
 3061: @c won't really work as retrieved.
 3062: @code{vc-rename-file}を使えば、
 3063: 取り出し操作に使える程度にはスナップショットを保てますが、
 3064: すべての問題を解決できるわけではありません。
 3065: たとえば、プログラムのいくつかのファイルでは、
 3066: 名前で他のファイルを参照しているでしょう。
 3067: 少なくとも、makefileでは、改名したファイルを指しているでしょう。
 3068: 古いスナップショットを取り出すと、
 3069: 改名したファイルは新しい名前で取り出しますが、
 3070: makefileで使っている名前ではありません。
 3071: ですから、取り出しただけではプログラムは動かないでしょう。
 3073: @node Miscellaneous VC, Customizing VC, Snapshots, Version Control
 3074: @c @subsection Miscellaneous Commands and Features of VC
 3075: @subsection VCのその他のコマンドと機能
 3077: @c   This section explains the less-frequently-used features of VC.
 3078: 本節では、使用頻度の少ないVCの機能を説明します。
 3080: @menu
 3081: * Change Logs and VC::  Generating a change log file from log entries.
 3082: * Renaming and VC::     A command to rename both the source and master 
 3083:                           file correctly.
 3084: * Version Headers::     Inserting version control headers into working files.
 3085: @end menu
 3087: @node Change Logs and VC, Renaming and VC, , Miscellaneous VC
 3088: @c @subsubsection Change Logs and VC
 3089: @subsubsection 変更記録とVC
 3091: @c   If you use RCS or CVS for a program and also maintain a change log
 3092: @c file for it (@pxref{Change Log}), you can generate change log entries
 3093: @c automatically from the version control log entries:
 3094: プログラムに対してRCSやCVSを使い、しかも、それらに変更記録ファイル
 3095: (@pxref{Change Log})を保持しているならば、
 3096: 版管理の記録項目から変更記録項目を自動的に生成できます。
 3098: @table @kbd
 3099: @item C-x v a
 3100: @kindex C-x v a
 3101: @findex vc-update-change-log
 3102: @c Visit the current directory's change log file and, for registered files
 3103: @c in that directory, create new entries for versions checked in since the
 3104: @c most recent entry in the change log file.
 3105: @c (@code{vc-update-change-log}).
 3106: カレントディレクトリにある変更記録ファイルを訪れる。
 3107: そして、そのディレクトリに置いてある登録された各ファイルについて、
 3108: 変更記録ファイルにある最新の項目以降にチェックインされた版に関する
 3109: 新たな項目を作成する。
 3110: (@code{vc-update-change-log})。
 3112: @c This command works with RCS or CVS only, not with SCCS.
 3113: このコマンドはRCSやCVSだけで動作し、SCCSでは動作しない。
 3115: @item C-u C-x v a
 3116: @c As above, but only find entries for the current buffer's file.
 3117: 上と同様であるが、カレントバッファのファイルに関する項目だけを探す。
 3119: @item M-1 C-x v a
 3120: @c As above, but find entries for all the currently visited files that are
 3121: @c maintained with version control.  This works only with RCS, and it puts
 3122: @c all entries in the log for the default directory, which may not be
 3123: @c appropriate.
 3124: 上と同様だが、現在訪問しているファイルのうち版管理の下に置かれているファイル
 3125: すべてに関する項目を探す。
 3126: このコマンドはRCSでのみ動作する。
 3127: しかも、デフォルトディレクトリに関する
 3128: すべての項目を変更記録に追加するが、これは適切でないこともある。
 3129: @end table
 3131: @c   For example, suppose the first line of @file{ChangeLog} is dated
 3132: @c 1999-04-10, and that the only check-in since then was by Nathaniel
 3133: @c Bowditch to @file{rcs2log} on 1999-05-22 with log text @samp{Ignore log
 3134: @c messages that start with `#'.}.  Then @kbd{C-x v a} visits
 3135: @c @file{ChangeLog} and inserts text like this:
 3136: たとえば、@file{ChangeLog}の最初の行の日付が1999年4月10日であり、
 3137: それ以降のチェックインは
 3138: Nathaniel Bowditchが1999年5月22日に
 3139: @samp{Ignore log messages that start with `#'.}という記録で
 3140: @file{rcs2log}にチェックインしたものだけだとしましょう。
 3141: そうすると、@kbd{C-x v a}は@file{ChangeLog}を訪問して、
 3142: つぎのようなテキストを挿入します。
 3144: @iftex
 3145: @medbreak
 3146: @end iftex
 3147: @smallexample
 3148: @group
 3149: 1999-05-22  Nathaniel Bowditch  <>
 3151:         * rcs2log: Ignore log messages that start with `#'.
 3152: @end group
 3153: @end smallexample
 3154: @iftex
 3155: @medbreak
 3156: @end iftex
 3158: @noindent
 3159: @c You can then edit the new change log entry further as you wish.
 3160: このあと、変更記録の新しい項目を好きなように編集できます。
 3162: @c   Unfortunately, timestamps in ChangeLog files are only dates, so some
 3163: @c of the new change log entry may duplicate what's already in ChangeLog.
 3164: @c You will have to remove these duplicates by hand.
 3165: 残念ながら、ChangeLogファイルには日付しか記録していないので、
 3166: 新たな変更記録項目がChangeLogファイルの既存の項目と重複することがあります。
 3167: そのような日付の重複は、手作業で削除する必要があります。
 3169: @c   Normally, the log entry for file @file{foo} is displayed as @samp{*
 3170: @c foo: @var{text of log entry}}.  The @samp{:} after @file{foo} is omitted
 3171: @c if the text of the log entry starts with @w{@samp{(@var{functionname}):
 3172: @c }}.  For example, if the log entry for @file{vc.el} is
 3173: @c @samp{(vc-do-command): Check call-process status.}, then the text in
 3174: @c @file{ChangeLog} looks like this:
 3175: 通常、ファイル@file{foo}に関する記録項目は、
 3176: @samp{* foo: @var{text of log entry}}のように表示されます。
 3177: 記録項目のテキストが@w{@samp{(@var{functionname}):}}で始まると、
 3178: @file{foo}のうしろの@samp{:}は省かれます。
 3179: たとえば、@file{vc.el}に関する記録項目が
 3180: @samp{(vc-do-command): Check call-process status.}であれば、
 3181: @file{ChangeLog}の中のテキストはつぎのようになります。
 3183: @iftex
 3184: @medbreak
 3185: @end iftex
 3186: @smallexample
 3187: @group
 3188: 1999-05-06  Nathaniel Bowditch  <>
 3190:         * vc.el (vc-do-command): Check call-process status.
 3191: @end group
 3192: @end smallexample
 3193: @iftex
 3194: @medbreak
 3195: @end iftex
 3197: @c   When @kbd{C-x v a} adds several change log entries at once, it groups
 3198: @c related log entries together if they all are checked in by the same
 3199: @c author at nearly the same time.  If the log entries for several such
 3200: @c files all have the same text, it coalesces them into a single entry.
 3201: @c For example, suppose the most recent check-ins have the following log
 3202: @c entries:
 3203: @kbd{C-x v a}が複数の変更記録項目を一度に追加するときには、
 3204: 同じ作者がほぼ同じ日時にチェックインしたものならば、
 3205: 関連する記録項目をまとめます。
 3206: そのようないくつかのファイルに対する記録項目がすべて同じテキストならば、
 3207: 1つの項目にまとめます。
 3208: たとえば、最後にチェックインしたものに、以下の記録があったとします。
 3210: @flushleft
 3211: @c @bullet{} For @file{vc.texinfo}: @samp{Fix expansion typos.}
 3212: @c @bullet{} For @file{vc.el}: @samp{Don't call expand-file-name.}
 3213: @c @bullet{} For @file{vc-hooks.el}: @samp{Don't call expand-file-name.}
 3214: @bullet{} @file{vc.texinfo}の記録項目: @samp{Fix expansion typos.}
 3215: @bullet{} @file{vc.el}の記録項目: @samp{Don't call expand-file-name.}
 3216: @bullet{} @file{vc-hooks.el}の記録項目: @samp{Don't call expand-file-name.}
 3217: @end flushleft
 3219: @noindent
 3220: @c They appear like this in @file{ChangeLog}:
 3221: これらは@file{ChangeLog}の中ではつぎのようになります。
 3223: @iftex
 3224: @medbreak
 3225: @end iftex
 3226: @smallexample
 3227: @group
 3228: 1999-04-01  Nathaniel Bowditch  <>
 3230:         * vc.texinfo: Fix expansion typos.
 3232:         * vc.el, vc-hooks.el: Don't call expand-file-name.
 3233: @end group
 3234: @end smallexample
 3235: @iftex
 3236: @medbreak
 3237: @end iftex
 3239: @c   Normally, @kbd{C-x v a} separates log entries by a blank line, but you
 3240: @c can mark several related log entries to be clumped together (without an
 3241: @c intervening blank line) by starting the text of each related log entry
 3242: @c with a label of the form @w{@samp{@{@var{clumpname}@} }}.  The label
 3243: @c itself is not copied to @file{ChangeLog}.  For example, suppose the log
 3244: @c entries are:
 3245: 通常、@kbd{C-x v a}は記録項目を空行で区切りますが、
 3246: 関連する記録項目のテキストを@w{@samp{@{@var{clumpname}@} }}のような
 3247: ラベルで始めれば、関連する複数の記録項目を1つの塊にする
 3248: (区切りの空行を入れない)ように印を付けられます。
 3249: ラベル自体は@file{ChangeLog}にはコピーされません。
 3250: たとえば、記録項目がつぎのようであるとします。
 3252: @flushleft
 3253: @c @bullet{} For @file{vc.texinfo}: @samp{@{expand@} Fix expansion typos.}
 3254: @c @bullet{} For @file{vc.el}: @samp{@{expand@} Don't call expand-file-name.}
 3255: @c @bullet{} For @file{vc-hooks.el}: @samp{@{expand@} Don't call expand-file-name.}
 3256: @bullet{} @file{vc.texinfo}の記録項目: @samp{@{expand@} Fix expansion typos.}
 3257: @bullet{} @file{vc.el}の記録項目: @samp{@{expand@} Don't call expand-file-name.}
 3258: @bullet{} @file{vc-hooks.el}の記録項目: @samp{@{expand@} Don't call expand-file-name.}
 3259: @end flushleft
 3261: @noindent
 3262: @c Then the text in @file{ChangeLog} looks like this:
 3263: すると、@file{ChangeLog}のテキストはつぎのようになります。
 3265: @iftex
 3266: @medbreak
 3267: @end iftex
 3268: @smallexample
 3269: @group
 3270: 1999-04-01  Nathaniel Bowditch  <>
 3272:         * vc.texinfo: Fix expansion typos.
 3273:         * vc.el, vc-hooks.el: Don't call expand-file-name.
 3274: @end group
 3275: @end smallexample
 3276: @iftex
 3277: @medbreak
 3278: @end iftex
 3280: @c   A log entry whose text begins with @samp{#} is not copied to
 3281: @c @file{ChangeLog}.  For example, if you merely fix some misspellings in
 3282: @c comments, you can log the change with an entry beginning with @samp{#}
 3283: @c to avoid putting such trivia into @file{ChangeLog}.
 3284: 記録項目のテキストが@samp{#}で始まると、
 3285: その記録項目は@file{ChangeLog}にはコピーされません。
 3286: たとえば、コメントの綴りまちがいだけを変更したときには、
 3287: 記録項目を@samp{#}で始めれば、このような自明なものを@file{ChangeLog}に
 3288: 入れないですみます。
 3290: @node Renaming and VC, Version Headers, Change Logs and VC, Miscellaneous VC
 3291: @c @subsubsection Renaming VC Work Files and Master Files
 3292: @subsubsection VC作業ファイルとマスタファイルの改名
 3294: @findex vc-rename-file
 3295: @c   When you rename a registered file, you must also rename its master
 3296: @c file correspondingly to get proper results.  Use @code{vc-rename-file}
 3297: @c to rename the source file as you specify, and rename its master file
 3298: @c accordingly.  It also updates any snapshots (@pxref{Snapshots}) that
 3299: @c mention the file, so that they use the new name; despite this, the
 3300: @c snapshot thus modified may not completely work (@pxref{Snapshot
 3301: @c Caveats}).
 3302: 登録したファイルを改名するときには、そのマスタファイルも同様に改名して
 3303: 正しい結果を得られるようにする必要があります。
 3304: 指定どおりにソースファイルを改名し、それに従って
 3305: マスタファイルも改名するには、@code{vc-rename-file}を使います。
 3306: このコマンドは、当該ファイルを指名しているどんなスナップショット
 3307: (@pxref{Snapshots})も更新するので、スナップショットでも
 3308: 新しい名前を使うようになります。
 3309: それにも関わらず、修正したスナップショットは動作しないかもしれません
 3310: (@pxref{Snapshot Caveats})。
 3312: @c   You cannot use @code{vc-rename-file} on a file that is locked by
 3313: @c someone else.
 3314: 誰かがロックしているファイルに対しては、
 3315: @code{vc-rename-file}を使えません。
 3317: @node Version Headers,  , Renaming and VC, Miscellaneous VC
 3318: @c @subsubsection Inserting Version Control Headers
 3319: @subsubsection 版管理ヘッダの挿入
 3321: @c    Sometimes it is convenient to put version identification strings
 3322: @c directly into working files.  Certain special strings called
 3323: @c @dfn{version headers} are replaced in each successive version by the
 3324: @c number of that version.
 3325: 版を識別する文字列を作業ファイルへ直接入れておくと便利なこともあります。
 3326: @dfn{版管理ヘッダ}と呼ばれる特別な文字列は、
 3327: 各版ごとにその版番号で置き換えられます。
 3329: @c   If you are using RCS, and version headers are present in your working
 3330: @c files, Emacs can use them to determine the current version and the
 3331: @c locking state of the files.  This is more reliable than referring to the
 3332: @c master files, which is done when there are no version headers.  Note
 3333: @c that in a multi-branch environment, version headers are necessary to
 3334: @c make VC behave correctly (@pxref{Multi-User Branching}).
 3335: RCSを使っていて、かつ、作業ファイルに版管理ヘッダが入っていれば、
 3336: Emacsは、版管理ヘッダを使って現在の版とファイルのロック状態を決定できます。
 3337: これは、版管理ヘッダがないときにマスタファイルを参照するより、
 3338: 信頼できます。
 3339: 複数の枝を使う環境では、
 3340: VCが正しくふるまうためには版管理ヘッダが必要です
 3341: (@pxref{Multi-User Branching})。
 3343: @c   Searching for version headers is controlled by the variable
 3344: @c @code{vc-consult-headers}.  If it is non-@code{nil}, Emacs searches for
 3345: @c headers to determine the version number you are editing.  Setting it to
 3346: @c @code{nil} disables this feature.
 3347: 版管理ヘッダの探索は、変数@code{vc-consult-headers}で制御されます。
 3348: @code{nil}以外ならば、編集中の版番号を決定するためにEmacsはヘッダを探します。
 3349: @code{nil}を設定すると、この機能はオフになります。
 3351: @kindex C-x v h
 3352: @findex vc-insert-headers
 3353: @c   You can use the @kbd{C-x v h} command (@code{vc-insert-headers}) to
 3354: @c insert a suitable header string.
 3355: 適切なヘッダ文字列を入れるには、コマンド@kbd{C-x v h}
 3356: (@code{vc-insert-headers})を使います。
 3358: @table @kbd
 3359: @item C-x v h
 3360: @c Insert headers in a file for use with your version-control system.
 3361: 版管理システムで使うヘッダをファイルに挿入する。
 3362: @end table
 3364: @vindex vc-header-alist
 3365: @c   The default header string is @samp{@w{$}Id$} for RCS and
 3366: @c @samp{@w{%}W%} for SCCS.  You can specify other headers to insert by
 3367: @c setting the variable @code{vc-header-alist}.  Its value is a list of
 3368: @c elements of the form @code{(@var{program} . @var{string})} where
 3369: @c @var{program} is @code{RCS} or @code{SCCS} and @var{string} is the
 3370: @c string to use.
 3371: デフォルトのヘッダ文字列は、
 3372: RCSでは@samp{@w{$}Id$}、SCCSでは@samp{@w{%}W%}です。
 3373: 変数@code{vc-header-alist}に設定すれば、他のヘッダを指定できます。
 3374: この値は、@code{(@var{program} . @var{string})}の形式の
 3375: 要素から成るリストです。
 3376: ここで、@var{program}は@code{RCS}または@code{SCCS}であり、
 3377: @var{string}は使用する文字列です。
 3379: @c   Instead of a single string, you can specify a list of strings; then
 3380: @c each string in the list is inserted as a separate header on a line of
 3381: @c its own.
 3382: 1つの文字列のかわりに、文字列のリストを指定することもできます。
 3383: そうすると、リストの各文字列は、別々の行に別のヘッダとして挿入されます。
 3385: @c   It is often necessary to use ``superfluous'' backslashes when writing
 3386: @c the strings that you put in this variable.  This is to prevent the
 3387: @c string in the constant from being interpreted as a header itself if the
 3388: @c Emacs Lisp file containing it is maintained with version control.
 3389: この変数に入れる文字列を書くときには、『余分な』バックスラッシュを
 3390: 使う必要がよくあります。
 3391: この文字列を含むEmacs Lispファイルが版管理の下に置かれているときに、
 3392: 定数中の文字列がヘッダと解釈されることを防ぐためです。
 3394: @vindex vc-comment-alist
 3395: @c   Each header is inserted surrounded by tabs, inside comment delimiters,
 3396: @c on a new line at point.  Normally the ordinary comment
 3397: @c start and comment end strings of the current mode are used, but for
 3398: @c certain modes, there are special comment delimiters for this purpose;
 3399: @c the variable @code{vc-comment-alist} specifies them.  Each element of
 3400: @c this list has the form @code{(@var{mode} @var{starter} @var{ender})}.
 3401: 各ヘッダは、ポイント位置の新しい行に、
 3402: コメント区切りの内側にタブで囲んで挿入されます。
 3403: 通常、現在のモードのコメント開始文字列とコメント終了文字列を使いますが、
 3404: 特定のモードでは、この目的のための特別なコメント区切りがあります。
 3405: 変数@code{vc-comment-alist}がそれらを指定します。
 3406: このリストの各要素は
 3407: @code{(@var{mode} @var{starter} @var{ender})}という形式です。
 3409: @vindex vc-static-header-alist
 3410: @c   The variable @code{vc-static-header-alist} specifies further strings
 3411: @c to add based on the name of the buffer.  Its value should be a list of
 3412: @c elements of the form @code{(@var{regexp} . @var{format})}.  Whenever
 3413: @c @var{regexp} matches the buffer name, @var{format} is inserted as part
 3414: @c of the header.  A header line is inserted for each element that matches
 3415: @c the buffer name, and for each string specified by
 3416: @c @code{vc-header-alist}.  The header line is made by processing the
 3417: @c string from @code{vc-header-alist} with the format taken from the
 3418: @c element.  The default value for @code{vc-static-header-alist} is as follows:
 3419: 変数@code{vc-static-header-alist}は、
 3420: バッファ名に基づいた追加の文字列を指定します。
 3421: この値は、@code{(@var{regexp} . @var{format})}の形式の
 3422: 要素から成るリストでなくてはいけません。
 3423: @var{regexp}がバッファ名に一致するたびに、
 3424: @var{format}をヘッダの一部として挿入します。
 3425: バッファ名に一致する各要素と@code{vc-header-alist}に指定された各文字列ごとに
 3426: ヘッダ行を挿入します。
 3427: @code{vc-header-alist}の文字列を要素の書式@var{format}で処理して
 3428: ヘッダ行を作ります。
 3429: @code{vc-static-header-alist}のデフォルト値はつぎのとおりです。
 3431: @example
 3432: @group
 3433: (("\\.c$" .
 3434:   "\n#ifndef lint\nstatic char vcid[] = \"\%s\";\n\
 3435: #endif /* lint */\n"))
 3436: @end group
 3437: @end example
 3439: @noindent
 3440: @c It specifies insertion of text of this form:
 3441: これは、つぎのようなテキストを挿入します。
 3443: @example
 3444: @group
 3446: #ifndef lint
 3447: static char vcid[] = "@var{string}";
 3448: #endif /* lint */
 3449: @end group
 3450: @end example
 3452: @noindent
 3453: @c Note that the text above starts with a blank line.
 3454: 上のテキストは空行で始まっていることに注意してください。
 3456: @c   If you use more than one version header in a file, put them close
 3457: @c together in the file.  The mechanism in @code{revert-buffer} that
 3458: @c preserves markers may not handle markers positioned between two version
 3459: @c headers.
 3460: 複数の版管理ヘッダをファイルに入れる場合には、
 3461: ファイル内ではそれらを一緒にまとめて入れておきます。
 3462: @code{revert-buffer}のマーカを保存する機構は、
 3463: 2つの版管理ヘッダのあいだに置かれたマーカを扱えないこともあります。
 3465: @node Customizing VC,  , Miscellaneous VC, Version Control
 3466: @c @subsection Customizing VC
 3467: @subsection VCのカスタマイズ
 3469: @c   There are many ways of customizing VC.  The options you can set fall
 3470: @c into four categories, described in the following sections.
 3471: VCをカスタマイズする方法はたくさんあります。
 3472: 設定可能なオプションは、次節に述べる4つに分類できます。
 3474: @menu
 3475: * Backend Options::       Customizing the back-end to your needs.
 3476: * VC Workfile Handling::  Various options concerning working files.
 3477: * VC Status Retrieval::   How VC finds the version control status of a file,
 3478:                             and how to customize this.
 3479: * VC Command Execution::  Which commands VC should run, and how.
 3480: @end menu
 3482: @node Backend Options, VC Workfile Handling, , Customizing VC
 3483: @c @subsubsection Options for VC Backends
 3484: @subsubsection VCのバックエンドに対するオプション
 3486: @c @cindex backend options (VC)
 3487: @c @cindex locking under version control
 3488: @cindex バックエンドのオプション(VC)
 3489: @cindex 版管理下のロック
 3490: @c   You can tell RCS and CVS whether to use locking for a file or not
 3491: @c (@pxref{VC Concepts}, for a description of locking).  VC automatically
 3492: @c recognizes what you have chosen, and behaves accordingly.
 3493: RCSとCVSには、ファイルのロックを使うかどうかを指定できます
 3494: (ロックに関しては@pxref{VC Concepts})。
 3495: VCはどちらを選んだかを識別し、そのようにふるまいます。
 3497: @c @cindex non-strict locking (RCS)
 3498: @c @cindex locking, non-strict (RCS)
 3499: @cindex 弱いロック(RCS)
 3500: @cindex ロック、弱い(RCS)
 3501: @c   For RCS, the default is to use locking, but there is a mode called
 3502: @c @dfn{non-strict locking} in which you can check-in changes without
 3503: @c locking the file first.  Use @samp{rcs -U} to switch to non-strict
 3504: @c locking for a particular file, see the @samp{rcs} manpage for details.
 3505: RCSでは、デフォルトはロックを使います。
 3506: しかし、ファイルをロックしていなくても変更をチェックインできる、
 3507: @dfn{弱いロック}と呼ばれるモードがあります。
 3508: 特定のファイルに対して弱いロックを使うように切り替えるには、
 3509: @samp{rcs -U}を使います。
 3510: 詳しくは、@samp{rcs}のマニュアルページを参照してください。
 3512: @c @cindex locking (CVS)
 3513: @cindex ロック(CVS)
 3514: @c   Under CVS, the default is not to use locking; anyone can change a work
 3515: @c file at any time.  However, there are ways to restrict this, resulting
 3516: @c in behavior that resembles locking.
 3517: CVSでは、デフォルトはロックを使いません。
 3518: いつでも誰もが作業ファイルを変更できます。
 3519: しかし、これを制限する方法があり、ロックに似たふるまいをします。
 3521: @c @cindex CVSREAD environment variable (CVS)
 3522: @cindex CVSREAD(環境変数)(CVS)
 3523: @cindex 環境変数CVSREAD(CVS)
 3524: @c   For one thing, you can set the @code{CVSREAD} environment variable to
 3525: @c an arbitrary value.  If this variable is defined, CVS makes your work
 3526: @c files read-only by default.  In Emacs, you must type @kbd{C-x C-q} to
 3527: @c make the file writeable, so that editing works in fact similar as if
 3528: @c locking was used.  Note however, that no actual locking is performed, so
 3529: @c several users can make their files writeable at the same time.  When
 3530: @c setting @code{CVSREAD} for the first time, make sure to check out all
 3531: @c your modules anew, so that the file protections are set correctly.
 3532: 1つの方法は、環境変数@code{CVSREAD}に何か値を設定することです。
 3533: この変数が定義されていると、
 3534: CVSはデフォルトでは作業ファイルを読み出し専用にします。
 3535: Emacs内では、@kbd{C-x C-q}と打ってファイルを書き込み可能にする必要があります。
 3536: そうすると、事実上ロックを使っているかのように編集できます。
 3537: しかしながら、実際にロックされているわけではないので、
 3538: 複数のユーザーが各自のファイルを同時に書き込み可能にできてしまいます。
 3539: @code{CVSREAD}を初めて設定するときには、
 3540: ファイルの保護が正しく設定されるように、
 3541: あなたのモジュールすべてを新たにチェックアウトしたことを確認してください。
 3543: @c @cindex cvs watch feature
 3544: @c @cindex watching files (CVS)
 3545: @cindex cvs監視機能
 3546: @cindex ファイルの監視(CVS)
 3547: @c   Another way to achieve something similar to locking is to use the
 3548: @c @dfn{watch} feature of CVS.  If a file is being watched, CVS makes it
 3549: @c read-only by default, and you must also use @kbd{C-x C-q} in Emacs to
 3550: @c make it writable.  VC calls @code{cvs edit} to make the file writeable,
 3551: @c and CVS takes care to notify other developers of the fact that you
 3552: @c intend to change the file.  See the CVS documentation for details on
 3553: @c using the watch feature.
 3554: ロックに似たふるまいを達成する別の方法は、CVSの@dfn{監視}機能を使うことです。
 3555: ファイルを監視するようにしておくと、
 3556: CVSはデフォルトでそのファイルを読み出し専用にします。
 3557: そのため、Emacs内では@kbd{C-x C-q}を使って書き込み可能にする必要があります。
 3558: VCは、@code{cvs edit}を実行してファイルを書き込み可能にします。
 3559: すると、CVSは、あなたがファイルを変更しようとしていることを
 3560: 他の開発者に通知します。
 3561: 監視機能の詳しい使い方については、CVSの解説を参照してください。
 3563: @vindex vc-handle-cvs
 3564: @c   You can turn off use of VC for CVS-managed files by setting the
 3565: @c variable @code{vc-handle-cvs} to @code{nil}.  If you do this, Emacs
 3566: @c treats these files as if they were not registered, and the VC commands
 3567: @c are not available for them.  You must do all CVS operations manually.
 3568: 変数@code{vc-handle-cvs}に@code{nil}を設定すれば、
 3569: CVSの管理下に置いたファイルに対してVCを使わないようにできます。
 3570: こうすると、Emacsは、これらのファイルを
 3571: あたかも登録されていないかのように扱い、
 3572: それらに対してVCコマンドは使えません。
 3573: すべてのCVS操作を手動で行う必要があります。
 3575: @node VC Workfile Handling, VC Status Retrieval, Backend Options, Customizing VC
 3576: @c @subsubsection VC Workfile Handling
 3577: @subsubsection VC作業ファイルの扱い方
 3579: @vindex vc-make-backup-files
 3580: @c   Emacs normally does not save backup files for source files that are
 3581: @c maintained with version control.  If you want to make backup files even
 3582: @c for files that use version control, set the variable
 3583: @c @code{vc-make-backup-files} to a non-@code{nil} value.
 3584: Emacsは、版管理の下に置かれたソースファイルに対しては、
 3585: 通常バックアップファイルを作りません。
 3586: 版管理を使っているファイルに対してもバックアップファイルを作りたいなら、
 3587: 変数@code{vc-make-backup-files}に@code{nil}以外の値を設定します。
 3589: @vindex vc-keep-workfiles
 3590: @c   Normally the work file exists all the time, whether it is locked or
 3591: @c not.  If you set @code{vc-keep-workfiles} to @code{nil}, then checking
 3592: @c in a new version with @kbd{C-x C-q} deletes the work file; but any
 3593: @c attempt to visit the file with Emacs creates it again.  (With CVS, work
 3594: @c files are always kept.)
 3595: ロックの状態に関わらず、
 3596: 普通、作業ファイルはつねに存在します。
 3597: @code{vc-keep-workfiles}に@code{nil}を設定すると、
 3598: @kbd{C-x C-q}で新版をチェックインすると、作業ファイルを削除します。
 3599: しかし、Emacsでファイルを訪問しようとすると、作業ファイルをふたたび作ります。
 3600: (CVSでは、作業ファイルはつねに存在する。)
 3602: @vindex vc-follow-symlinks
 3603: @c   Editing a version-controlled file through a symbolic link can be
 3604: @c dangerous.  It bypasses the version control system---you can edit the
 3605: @c file without locking it, and fail to check your changes in.  Also,
 3606: @c your changes might overwrite those of another user.  To protect against
 3607: @c this, VC checks each symbolic link that you visit, to see if it points
 3608: @c to a file under version control.
 3609: 版管理されているファイルをシンボリックリンクを介して編集することは、
 3610: 危険なことになりえます。
 3611: 版管理システムを迂回してしまいます。
 3612: つまり、ロックせずにファイルを編集できてしまい、
 3613: 変更のチェックインには失敗します。
 3614: また、他のユーザーがあなたの変更を上書きしてしまうかもしれません。
 3615: こういったことを防ぐために、
 3616: VCは、訪問する各シンボリックリンクを検査して、
 3617: それが版管理の下に置かれたファイルを指しているかどうか調べます。
 3619: @c   The variable @code{vc-follow-symlinks} controls what to do when a
 3620: @c symbolic link points to a version-controlled file.  If it is @code{nil},
 3621: @c VC only displays a warning message.  If it is @code{t}, VC automatically
 3622: @c follows the link, and visits the real file instead, telling you about
 3623: @c this in the echo area.  If the value is @code{ask} (the default), VC
 3624: @c asks you each time whether to follow the link.
 3625: 変数@code{vc-follow-symlinks}は、
 3626: シンボリックリンクが版管理されているファイルを指しているときに
 3627: どうするかを制御します。
 3628: その値が@code{nil}ならば、VCは警告メッセージを表示するだけです。
 3629: @code{t}ならば、VCは自動的にリンクを辿って、かわりに本当のファイルを訪問し、
 3630: エコー領域にこのことを表示します。
 3631: 値が@code{ask}(デフォルト)ならば、
 3632: VCはリンクを辿るかどうかを毎回聞いてきます。
 3634: @node VC Status Retrieval, VC Command Execution, VC Workfile Handling, Customizing VC
 3635: @c @subsubsection VC Status Retrieval
 3636: @subsubsection VC状態検索
 3637: @c There is no need to tell users about vc-master-templates.
 3639: @c   When deducing the locked/unlocked state of a file, VC first looks for
 3640: @c an RCS version header string in the file (@pxref{Version Headers}).  If
 3641: @c there is no header string, or if you are using SCCS, VC normally looks
 3642: @c at the file permissions of the work file; this is fast.  But there might
 3643: @c be situations when the file permissions cannot be trusted.  In this case
 3644: @c the master file has to be consulted, which is rather expensive.  Also
 3645: @c the master file can only tell you @emph{if} there's any lock on the
 3646: @c file, but not whether your work file really contains that locked
 3647: @c version.
 3648: ファイルのロック状態を推測するとき、
 3649: VCはまずファイルのRCSの版管理ヘッダ文字列を探します
 3650: (@pxref{Version Headers})。
 3651: ヘッダ文字列がなかったり、SCCSを使っているときは、
 3652: VCは通常、作業ファイルのパーミッションを調べます。
 3653: ここまでは、すぐにできます。
 3654: しかし、ファイルのパーミッションを信頼できない場合もあります。
 3655: この場合、やや手間がかかりますが、マスタファイルを調べる必要があります。
 3656: さらに、マスタファイルは、ファイルがロックされているかどうかは
 3657: 教えてくれますが、
 3658: 作業ファイルがロックされた版を本当に含んでいるかどうかは教えてくれません。
 3660: @vindex vc-consult-headers
 3661: @c   You can tell VC not to use version headers to determine lock status by
 3662: @c setting @code{vc-consult-headers} to @code{nil}.  VC then always uses
 3663: @c the file permissions (if it can trust them), or else checks the master
 3664: @c file.
 3665: ロック状態を調べるために版管理ヘッダを使わないようにVCに指示するには、
 3666: 変数@code{vc-consult-headers}に@code{nil}を設定します。
 3667: すると、VCは(信頼できるなら)ファイルパーミッションを使うか、
 3668: マスタファイルを調べます。
 3670: @vindex vc-mistrust-permissions
 3671: @c   You can specify the criterion for whether to trust the file
 3672: @c permissions by setting the variable @code{vc-mistrust-permissions}.  Its
 3673: @c value can be @code{t} (always mistrust the file permissions and check
 3674: @c the master file), @code{nil} (always trust the file permissions), or a
 3675: @c function of one argument which makes the decision.  The argument is the
 3676: @c directory name of the @file{RCS}, @file{CVS} or @file{SCCS}
 3677: @c subdirectory.  A non-@code{nil} value from the function says to mistrust
 3678: @c the file permissions.  If you find that the file permissions of work
 3679: @c files are changed erroneously, set @code{vc-mistrust-permissions} to
 3680: @c @code{t}.  Then VC always checks the master file to determine the file's
 3681: @c status.
 3682: 変数@code{vc-mistrust-permissions}を設定することで、
 3683: ファイルパーミッションを信頼するかどうかの基準を指定できます。
 3684: その値は、@code{t}(つねにファイルパーミッションを疑い、
 3685: マスタファイルを調べる)、
 3686: @code{nil}(つねにファイルパーミッションを信頼する)、あるいは、
 3687: 可否を決定する1引数の関数です。
 3688: その引数は、サブディレクトリ、@file{RCS}、@file{CVS}、@file{SCCS}の
 3689: いずれかの名前です。
 3690: 関数の戻り値が@code{nil}以外ならば、ファイルパーミッションを疑います。
 3691: 作業ファイルのパーミッションがまちがって変更されていると思うなら、 
 3692: @code{vc-mistrust-permissions}に@code{t}を設定します。
 3693: すると、VCはつねにファイルの状態を決定するためにマスタファイルを調べます。
 3695: @node VC Command Execution,  , VC Status Retrieval, Customizing VC
 3696: @c @subsubsection VC Command Execution
 3697: @subsubsection VCコマンドの実行
 3699: @vindex vc-suppress-confirm
 3700: @c   If @code{vc-suppress-confirm} is non-@code{nil}, then @kbd{C-x C-q}
 3701: @c and @kbd{C-x v i} can save the current buffer without asking, and
 3702: @c @kbd{C-x v u} also operates without asking for confirmation.  (This
 3703: @c variable does not affect @kbd{C-x v c}; that operation is so drastic
 3704: @c that it should always ask for confirmation.)
 3705: @code{vc-suppress-confirm}が@code{nil}以外ならば、
 3706: @kbd{C-x C-q}と@kbd{C-x v i}は確認せずにカレントバッファを保存し、
 3707: @kbd{C-x v u}も確認せずに作用します。
 3708: (この変数は@kbd{C-x v c}には影響しない。
 3709: その操作は思い切ったものなので、つねに確認するべき。)
 3711: @vindex vc-command-messages
 3712: @c   VC mode does much of its work by running the shell commands for RCS,
 3713: @c CVS and SCCS.  If @code{vc-command-messages} is non-@code{nil}, VC
 3714: @c displays messages to indicate which shell commands it runs, and
 3715: @c additional messages when the commands finish.
 3716: VCモードは、RCS、CVS、SCCSのシェルコマンドを実行することで、
 3717: その作業の多くを行います。
 3718: @code{vc-command-messages}が@code{nil}以外ならば、
 3719: VCはどのシェルコマンドを実行しているか表示し、
 3720: コマンドが終了したときに追加メッセージを表示します。
 3722: @vindex vc-path
 3723: @c   You can specify additional directories to search for version control
 3724: @c programs by setting the variable @code{vc-path}.  These directories are
 3725: @c searched before the usual search path.  But the proper files are usually
 3726: @c found automatically.
 3727: 変数@code{vc-path}を設定すれば、
 3728: 版管理プログラムを探すための追加のディレクトリを指定できます。
 3729: これらのディレクトリは、通常の探索パスを探すまえに探されます。
 3730: しかし、通常は適切なファイルを自動的にみつけられます。
 3732: @node Directories, Comparing Files, Version Control, Files
 3733: @c @section File Directories
 3734: @section ファイルディレクトリ
 3736: @c @cindex file directory
 3737: @c @cindex directory listing
 3738: @cindex ファイルディレクトリ
 3739: @cindex ディレクトリ一覧
 3740: @c   The file system groups files into @dfn{directories}.  A @dfn{directory
 3741: @c listing} is a list of all the files in a directory.  Emacs provides
 3742: @c commands to create and delete directories, and to make directory
 3743: @c listings in brief format (file names only) and verbose format (sizes,
 3744: @c dates, and authors included).  There is also a directory browser called
 3745: @c Dired; see @ref{Dired}.
 3746: ファイルシステムは、ファイル群を@dfn{ディレクトリ}にまとめます。
 3747: @dfn{ディレクトリ一覧}は、ディレクトリの中にある、
 3748: すべてのファイルの一覧表です。
 3749: Emacsには、ディレクトリを作成したり削除したりするコマンド、
 3750: 短形式(ファイル名のみ)や長形式(サイズ、日付、作者を含む)の
 3751: ディレクトリ一覧を作成するコマンドがあります。
 3752: diredと呼ばれるディレクトリブラウザもあります。
 3753: @xref{Dired}。
 3755: @table @kbd
 3756: @item C-x C-d @var{dir-or-pattern} @key{RET}
 3757: @c Display a brief directory listing (@code{list-directory}).
 3758: 短形式でディレクトリ一覧を表示する(@code{list-directory})。
 3759: @item C-u C-x C-d @var{dir-or-pattern} @key{RET}
 3760: @c Display a verbose directory listing.
 3761: 長形式でディレクトリ一覧を表示する。
 3762: @item M-x make-directory @key{RET} @var{dirname} @key{RET}
 3763: @c Create a new directory named @var{dirname}.
 3764: @var{dirname}という名前の新しいディレクトリを作る。
 3765: @item M-x delete-directory @key{RET} @var{dirname} @key{RET}
 3766: @c Delete the directory named @var{dirname}.  It must be empty,
 3767: @c or you get an error.
 3768: @var{dirname}という名前のディレクトリを削除する。
 3769: ディレクトリは空である必要があり、さもないとエラー。
 3770: @end table
 3772: @findex list-directory
 3773: @kindex C-x C-d
 3774: @c   The command to display a directory listing is @kbd{C-x C-d}
 3775: @c (@code{list-directory}).  It reads using the minibuffer a file name
 3776: @c which is either a directory to be listed or a wildcard-containing
 3777: @c pattern for the files to be listed.  For example,
 3778: ディレクトリ一覧を表示するコマンドは
 3779: @kbd{C-x C-d}(@code{list-directory})です。
 3780: 表示するディレクトリや一覧に含めるファイルを指定するワイルドカードを含む
 3781: パターンをミニバッファから読み取ります。
 3782: たとえば、
 3784: @example
 3785: C-x C-d /u2/emacs/etc @key{RET}
 3786: @end example
 3788: @noindent
 3789: @c lists all the files in directory @file{/u2/emacs/etc}.  Here is an
 3790: @c example of specifying a file name pattern:
 3791: とすると、
 3792: ディレクトリ@file{/u2/emacs/etc}の中のすべてのファイルを表示します。
 3793: ファイル名のパターンを指定した例はつぎのとおりです。
 3795: @example
 3796: C-x C-d /u2/emacs/src/*.c @key{RET}
 3797: @end example
 3799: @c   Normally, @kbd{C-x C-d} prints a brief directory listing containing
 3800: @c just file names.  A numeric argument (regardless of value) tells it to
 3801: @c make a verbose listing including sizes, dates, and authors (like
 3802: @c @samp{ls -l}).
 3803: 通常、@kbd{C-x C-d}はファイル名だけを含んだ短形式のディレクトリ一覧を
 3804: 表示します。
 3805: (値は無関係な)数引数を指定すると、
 3806: (@samp{ls -l}のように)サイズ、日付、作者を含む長形式の一覧を作ります。
 3808: @vindex list-directory-brief-switches
 3809: @vindex list-directory-verbose-switches
 3810: @c   The text of a directory listing is obtained by running @code{ls} in an
 3811: @c inferior process.  Two Emacs variables control the switches passed to
 3812: @c @code{ls}: @code{list-directory-brief-switches} is a string giving the
 3813: @c switches to use in brief listings (@code{"-CF"} by default), and
 3814: @c @code{list-directory-verbose-switches} is a string giving the switches to
 3815: @c use in a verbose listing (@code{"-l"} by default).
 3816: ディレクトリ一覧のテキストは、下位プロセスで@code{ls}を実行して取得します。
 3817: Emacsの2つの変数で、@code{ls}へ渡すオプションを制御します。
 3818: @code{list-directory-brief-switches}は、短形式一覧のときに使う
 3819: オプションを与える文字列です(デフォルトは@code{"-CF"})。
 3820: @code{list-directory-verbose-switches}は、長形式一覧のときに使う
 3821: オプションを与える文字列です(デフォルトは@code{"-l"})。
 3823: @node Comparing Files, Misc File Ops, Directories, Files
 3824: @c @section Comparing Files
 3825: @c @cindex comparing files
 3826: @section ファイルの比較
 3827: @cindex ファイルの比較
 3829: @findex diff
 3830: @vindex diff-switches
 3831: @c   The command @kbd{M-x diff} compares two files, displaying the
 3832: @c differences in an Emacs buffer named @samp{*Diff*}.  It works by running
 3833: @c the @code{diff} program, using options taken from the variable
 3834: @c @code{diff-switches}, whose value should be a string.
 3835: コマンド@kbd{M-x diff}は、2つのファイルを比較し、
 3836: @samp{*Diff*}という名前のEmacsバッファにその違いを表示します。
 3837: このコマンドは、値が文字列である変数@code{diff-switches}で指定された
 3838: オプションを使って@code{diff}プログラムを実行します。
 3840: @c   The buffer @samp{*Diff*} has Compilation mode as its major mode, so
 3841: @c you can use @kbd{C-x `} to visit successive changed locations in the two
 3842: @c source files.  You can also move to a particular hunk of changes and
 3843: @c type @key{RET} or @kbd{C-c C-c}, or click @kbd{Mouse-2} on it, to move
 3844: @c to the corresponding source location.  You can also use the other
 3845: @c special commands of Compilation mode: @key{SPC} and @key{DEL} for
 3846: @c scrolling, and @kbd{M-p} and @kbd{M-n} for cursor motion.
 3847: @c @xref{Compilation}.
 3848: バッファ@samp{*Diff*}のメジャーモードはコンパイル(compilation)モードです。
 3849: ですから、@kbd{C-x `}を使って、
 3850: 2つのソースファイルで変更されている箇所を次々に訪れることができます。
 3851: 特定の変更箇所にポイントを移動してから、
 3852: @key{RET}や@kbd{C-c C-c}を打つか、そこで@kbd{Mouse-2}をクリックすると、
 3853: そこに対応するソースの場所へ移動できます。
 3854: コンパイル(compilation)モードの他の特別なコマンドを使うこともできます。
 3855: @key{SPC}と@key{DEL}でスクロール、
 3856: @kbd{M-p}と@kbd{M-n}でカーソル移動できます。
 3857: @xref{Compilation}。
 3859: @findex diff-backup
 3860: @c   The command @kbd{M-x diff-backup} compares a specified file with its most
 3861: @c recent backup.  If you specify the name of a backup file,
 3862: @c @code{diff-backup} compares it with the source file that it is a backup
 3863: @c of.
 3864: コマンド@kbd{M-x diff-backup}は、
 3865: 指定されたファイルとその最新のバックアップとを比較します。
 3866: バックアップファイルの名前を指定すると、
 3867: @code{diff-backup}はそのもとのファイルとバックアップファイルとを比較します。
 3869: @findex compare-windows
 3870: @c   The command @kbd{M-x compare-windows} compares the text in the current
 3871: @c window with that in the next window.  Comparison starts at point in each
 3872: @c window, and each starting position is pushed on the mark ring in its
 3873: @c respective buffer.  Then point moves forward in each window, a character
 3874: @c at a time, until a mismatch between the two windows is reached.  Then
 3875: @c the command is finished.  For more information about windows in Emacs,
 3876: @c @ref{Windows}.
 3877: コマンド@kbd{M-x compare-windows}は、
 3878: カレントウィンドウの中のテキストと、
 3879: つぎのウィンドウの中のテキストを比較します。
 3880: それぞれのウィンドウのポイント位置から比較を始めます。
 3881: それぞれの開始位置は、各バッファのマークリングに積まれます。
 3882: そして、各ウィンドウでそれぞれのポイントを1文字ずつ進めることを、
 3883: 両者のウィンドウで一致しないものに出会うまで行います。
 3884: そして、コマンドは終了します。
 3885: Emacsのウィンドウについてより詳しくは、@xref{Windows}。
 3887: @vindex compare-ignore-case
 3888: @c   With a numeric argument, @code{compare-windows} ignores changes in
 3889: @c whitespace.  If the variable @code{compare-ignore-case} is
 3890: @c non-@code{nil}, it ignores differences in case as well.
 3891: 数引数を指定すると、@code{compare-windows}は
 3892: 白文字の違いを無視します。
 3893: 変数@code{compare-ignore-case}が@code{nil}以外ならば、
 3894: 大文字小文字の違いも同様に無視します。
 3896: @c   See also @ref{Emerge}, for convenient facilities for merging two
 3897: @c similar files.
 3898: 2つの似たファイルの併合に便利な機能に関しては、@xref{Emerge}。
 3900: @node Misc File Ops, Compressed Files, Comparing Files, Files
 3901: @c @section Miscellaneous File Operations
 3902: @section その他のファイル操作
 3904: @c   Emacs has commands for performing many other operations on files.
 3905: @c All operate on one file; they do not accept wildcard file names.
 3906: Emacsには、ファイルをさまざまに操作するコマンドがあります。
 3907: それらすべては1つのファイルを操作します。
 3908: これらのコマンドは、ワイルドカードを含むファイル名を受け付けません。
 3910: @findex view-file
 3911: @c @cindex viewing
 3912: @c @cindex View mode
 3913: @c @cindex mode, View
 3914: @cindex 閲覧
 3915: @cindex 閲覧モード(View mode)
 3916: @cindex モード、View
 3917: @c   @kbd{M-x view-file} allows you to scan or read a file by sequential
 3918: @c screenfuls.  It reads a file name argument using the minibuffer.  After
 3919: @c reading the file into an Emacs buffer, @code{view-file} displays the
 3920: @c beginning.  You can then type @key{SPC} to scroll forward one windowful,
 3921: @c or @key{DEL} to scroll backward.  Various other commands are provided
 3922: @c for moving around in the file, but none for changing it; type @kbd{?}
 3923: @c while viewing for a list of them.  They are mostly the same as normal
 3924: @c Emacs cursor motion commands.  To exit from viewing, type @kbd{q}.
 3925: @c The commands for viewing are defined by a special major mode called View
 3926: @c mode.
 3927: @kbd{M-x view-file}では、ファイルを1画面分ずつ順番に眺めることができます。
 3928: このコマンドは、ミニバッファでファイル名を読み取ります。
 3929: Emacsバッファにファイルを読み込んだあと、@code{view-file}は先頭を表示します。
 3930: そうしたら、1ウィンドウ分先へスクロールするには@key{SPC}、
 3931: 逆向きにスクロールするには@key{DEL}を打ちます。
 3932: ファイル内を動き廻るための他のいろいろなコマンドもありますが、
 3933: 変更するためのコマンドはありません。
 3934: コマンド一覧を見るには、このモードで@kbd{?}と打ちます。
 3935: コマンド群は、Emacsの普通のカーソル移動コマンドとほとんど同じです。
 3936: ファイル閲覧を終了するには、@kbd{q}を打ちます。
 3937: 閲覧用のコマンドは、閲覧(view)モードと呼ばれる
 3938: 特別なメジャーモードで定義されています。
 3940: @c   A related command, @kbd{M-x view-buffer}, views a buffer already present
 3941: @c in Emacs.  @xref{Misc Buffer}.
 3942: 関連したコマンド、@kbd{M-x view-buffer}は、
 3943: Emacsの既存のバッファを閲覧します。
 3944: @xref{Misc Buffer}。
 3946: @findex insert-file
 3947: @c   @kbd{M-x insert-file} inserts a copy of the contents of the specified
 3948: @c file into the current buffer at point, leaving point unchanged before the
 3949: @c contents and the mark after them.
 3950: @kbd{M-x insert-file}は、指定したファイルの内容を
 3951: カレントバッファのポイント位置に挿入します。
 3952: ポイントの位置はそのままですが、挿入された部分の直後にマークを設定します。
 3954: @findex write-region
 3955: @c   @kbd{M-x write-region} is the inverse of @kbd{M-x insert-file}; it
 3956: @c copies the contents of the region into the specified file.  @kbd{M-x
 3957: @c append-to-file} adds the text of the region to the end of the specified
 3958: @c file.  @xref{Accumulating Text}.
 3959: @kbd{M-x write-region}は、@kbd{M-x insert-file}の逆です。
 3960: 指定したファイルにリージョンの内容をコピーします。
 3961: @kbd{M-x  append-to-file}は、
 3962: 指定したファイルの末尾にリージョンのテキストを付け加えます。
 3963: @xref{Accumulating Text}。
 3965: @findex delete-file
 3966: @c @cindex deletion (of files)
 3967: @cindex 削除(ファイル)
 3968: @cindex ファイルの削除
 3969: @c   @kbd{M-x delete-file} deletes the specified file, like the @code{rm}
 3970: @c command in the shell.  If you are deleting many files in one directory, it
 3971: @c may be more convenient to use Dired (@pxref{Dired}).
 3972: @kbd{M-x delete-file}は、シェルの@code{rm}コマンドのように、
 3973: 指定したファイルを削除します。
 3974: 1つのディレクトリ内のたくさんのファイルを削除するのなら、
 3975: diredを使うほうが便利です(@pxref{Dired})。
 3977: @findex rename-file
 3978: @c   @kbd{M-x rename-file} reads two file names @var{old} and @var{new} using
 3979: @c the minibuffer, then renames file @var{old} as @var{new}.  If a file named
 3980: @c @var{new} already exists, you must confirm with @kbd{yes} or renaming is not
 3981: @c done; this is because renaming causes the old meaning of the name @var{new}
 3982: @c to be lost.  If @var{old} and @var{new} are on different file systems, the
 3983: @c file @var{old} is copied and deleted.
 3984: @kbd{M-x rename-file}は、ミニバッファで2つのファイル名、
 3985: @var{old}と@var{new}を読み取り、ファイル@var{old}を@var{new}に改名します。
 3986: @var{new}という名前のファイルが既存のときには、
 3987: 確認に@kbd{yes}で応答する必要があります。
 3988: そうしないと、改名しません。
 3989: これは、改名により名前@var{new}の古い意味が失われるからです。
 3990: @var{old}と@var{new}が異なるファイルシステムの上にあるときには、
 3991: ファイル@var{old}を(@var{new}に)コピーしてから削除します。
 3993: @findex add-name-to-file
 3994: @c   The similar command @kbd{M-x add-name-to-file} is used to add an
 3995: @c additional name to an existing file without removing its old name.
 3996: @c The new name must belong on the same file system that the file is on.
 3997: 似たコマンド@kbd{M-x add-name-to-file}は、
 3998: 既存ファイルの名前を消さずに別の名前を追加するために使います。
 3999: 新しい名前は、既存ファイルが置かれている同じファイルシステムに
 4000: 属している必要があります。
 4002: @findex copy-file
 4003: @c @cindex copying files
 4004: @cindex ファイルのコピー
 4005: @c   @kbd{M-x copy-file} reads the file @var{old} and writes a new file named
 4006: @c @var{new} with the same contents.  Confirmation is required if a file named
 4007: @c @var{new} already exists, because copying has the consequence of overwriting
 4008: @c the old contents of the file @var{new}.
 4009: @kbd{M-x copy-file}は、ファイル@var{old}を読んで、
 4010: 新しいファイル@var{new}に同じ内容を書き出します。
 4011: @var{new}という名前のファイルが既存なら、確認を求めてきます。
 4012: というのは、コピーするとファイル@var{new}の古い内容を上書きしてしまうからです。
 4014: @findex make-symbolic-link
 4015: @c   @kbd{M-x make-symbolic-link} reads two file names @var{target} and
 4016: @c @var{linkname}, then creates a symbolic link named @var{linkname} and
 4017: @c pointing at @var{target}.  The effect is that future attempts to open file
 4018: @c @var{linkname} will refer to whatever file is named @var{target} at the
 4019: @c time the opening is done, or will get an error if the name @var{target} is
 4020: @c not in use at that time.  This command does not expand the argument
 4021: @c @var{target}, so that it allows you to specify a relative name
 4022: @c as the target of the link.
 4023: @kbd{M-x make-symbolic-link}は、2つのファイル名、
 4024: @var{target}と@var{linkname}を読み取って、
 4025: @var{target}を指す@var{linkname}という名前のシンボリックリンクを作ります。
 4026: この結果、将来@var{linkname}をオープンしようとすると、
 4027: その時点で@var{target}という名前のファイルを参照します。
 4028: その時点で名前@var{target}が使われていなければ、エラーになります。
 4029: このコマンドは引数@var{target}を展開しないので、
 4030: リンク先に相対名を書くことができます。
 4032: @c   Confirmation is required when creating the link if @var{linkname} is
 4033: @c in use.  Note that not all systems support symbolic links.
 4034: @var{linkname}が使われていると、
 4035: リンクを作るときに確認を求めます。
 4036: すべてのシステムでシンボリックリンクを使えるわけではないことに
 4037: 注意してください。
 4039: @node Compressed Files, Remote Files, Misc File Ops, Files
 4040: @c @section Accessing Compressed Files
 4041: @section 圧縮されたファイルの参照
 4042: @c @cindex compression
 4043: @c @cindex uncompression
 4044: @c @cindex Auto Compression mode
 4045: @c @cindex mode, Auto Compression
 4046: @cindex 圧縮
 4047: @cindex 展開
 4048: @cindex 自動圧縮モード(Auto Compression mode)
 4049: @cindex モード、Auto Compression
 4050: @pindex gzip
 4052: @findex auto-compression-mode
 4053: @c   Emacs comes with a library that can automatically uncompress
 4054: @c compressed files when you visit them, and automatically recompress them
 4055: @c if you alter them and save them.  To enable this feature, type the
 4056: @c command @kbd{M-x auto-compression-mode}.
 4057: Emacsには、
 4058: 圧縮されたファイルを訪問すると自動的に展開し、
 4059: それを変更して保存すると自動的に再度圧縮するライブラリがあります。
 4060: この機能を利用するには、コマンド@kbd{M-x auto-compression-mode}を打ちます。
 4062: @c   When automatic compression (which implies automatic uncompression as
 4063: @c well) is enabled, Emacs recognizes compressed files by their file names.
 4064: @c File names ending in @samp{.gz} indicate a file compressed with
 4065: @c @code{gzip}.  Other endings indicate other compression programs.
 4066: (自動展開を含む)自動圧縮がオンのときには、
 4067: Emacsはファイル名で圧縮されたファイルを認識します。
 4068: ファイル名の語尾が@samp{.gz}のものは、
 4069: @code{gzip}で圧縮されたファイルであることを表します。
 4070: 他の語尾の場合には、他の圧縮プログラムであることを表します。
 4072: @c   Automatic uncompression and compression apply to all the operations in
 4073: @c which Emacs uses the contents of a file.  This includes visiting it,
 4074: @c saving it, inserting its contents into a buffer, loading it, and byte
 4075: @c compiling it.
 4076: 自動展開と自動圧縮は、Emacsがファイルの内容を使うすべての操作に適用されます。
 4077: ファイルを訪問する、ファイルに保存する、ファイルの内容をバッファに挿入する、
 4078: ファイルをロードする、ファイルをバイトコンパイルすることを含みます。
 4080: @node Remote Files, Quoted File Names, Compressed Files, Files
 4081: @c @section Remote Files
 4082: @section リモートファイル
 4084: @cindex FTP
 4085: @c @cindex remote file access
 4086: @cindex リモートファイルの参照
 4087: @c   You can refer to files on other machines using a special file name syntax:
 4088: 特別なファイル名の構文を使って、他のマシン上のファイルを参照できます。
 4090: @example
 4091: @group
 4092: /@var{host}:@var{filename}
 4093: /@var{user}@@@var{host}:@var{filename}
 4094: @end group
 4095: @end example
 4097: @noindent
 4098: @c When you do this, Emacs uses the FTP program to read and write files on
 4099: @c the specified host.  It logs in through FTP using your user name or the
 4100: @c name @var{user}.  It may ask you for a password from time to time; this
 4101: @c is used for logging in on @var{host}.
 4102: このようにすると、Emacsは、
 4103: 指定したホスト上のファイルを読み書きするためにFTPプログラムを使います。
 4104: あなたのユーザー名か@var{user}を使ってFTPでログインします。
 4105: 毎回パスワードを聞かれることもありますが、
 4106: これは@var{host}へのログインに使われます。
 4108: @cindex ange-ftp
 4109: @vindex ange-ftp-default-user
 4110: @c   Normally, if you do not specify a user name in a remote file name,
 4111: @c that means to use your own user name.  But if you set the variable
 4112: @c @code{ange-ftp-default-user} to a string, that string is used instead.
 4113: @c (The Emacs package that implements FTP file access is called
 4114: @c @code{ange-ftp}.)
 4115: 普通、リモートファイル名にユーザー名を指定しないと、
 4116: あなたのユーザー名を使うことを意味します。
 4117: しかし、変数@code{ange-ftp-default-user}に文字列を設定しておけば、
 4118: その文字列をかわりに使います。
 4119: (FTPによるファイル参照を実装するEmacsのパッケージは、
 4120: @code{ange-ftp}と呼ばれる。)
 4122: @vindex file-name-handler-alist
 4123: @c   You can entirely turn off the FTP file name feature by setting the
 4124: @c variable @code{file-name-handler-alist} to @code{nil}.
 4125: 変数@code{file-name-handler-alist}に@code{nil}を設定すると、
 4126: FTPファイル名機能を完全にオフにできます
 4127: @footnote{ファイル名をクォートする@samp{/:}の機能もオフになる。}。
 4129: @node Quoted File Names,  , Remote Files, Files
 4130: @c @section Quoted File Names
 4131: @section クォートしたファイル名
 4133: @c @cindex quoting file names
 4134: @cindex ファイル名をクォートする
 4135: @c   You can @dfn{quote} an absolute file name to prevent special
 4136: @c characters and syntax in it from having their special effects.
 4137: @c The way to do this is to add @samp{/:} at the beginning.
 4138: 特殊文字や特別な構文の特別な効果を抑えるために、
 4139: 絶対ファイル名を@dfn{クォート}できます。
 4140: そうするには、先頭に@samp{/:}を加えます。
 4142: @c   For example, you can quote a local file name which appears remote, to
 4143: @c prevent it from being treated as a remote file name.  Thus, if you have
 4144: @c a directory named @file{/foo:} and a file named @file{bar} in it, you
 4145: @c can refer to that file in Emacs as @samp{/:/foo:/bar}.
 4146: たとえば、リモートにあるように見えるローカルなファイル名をクォートして、
 4147: リモートファイル名として扱われるのを防ぎます。
 4148: したがって、ディレクトリが@file{/foo:}という名前であり、
 4149: その中に@file{bar}という名前のファイルがあるとき、
 4150: Emacsでは、そのファイルを@samp{/:/foo:/bar}で参照できます。
 4152: @c   @samp{/:} can also prevent @samp{~} from being treated as a special
 4153: @c character for a user's home directory.  For example, @file{/:/tmp/~hack}
 4154: @c refers to a file whose name is @file{~hack} in directory @file{/tmp}.
 4155: @samp{/:}は、@samp{~}をユーザーのホームディレクトリを表す
 4156: 特殊文字として扱わないようにもします。
 4157: たとえば、@file{/:/tmp/~hack}は、
 4158: ディレクトリ@file{/tmp}の中にある@file{~hack}というファイル名を指します。
 4160: @c   Likewise, quoting with @samp{/:} is one way to enter in the minibuffer
 4161: @c a file name that contains @samp{$}.  However, the @samp{/:} must be at
 4162: @c the beginning of the buffer in order to quote @samp{$}.
 4163: 同様に、@samp{/:}は@samp{$}を含むファイル名を
 4164: ミニバッファで入力する方法の1つです。
 4165: しかし、@samp{$}をクォートするには、
 4166: @samp{/:}は(ミニ)バッファの先頭に置く必要があります。
 4168: @c   You can also quote wildcard characters with @samp{/:}, for visiting.
 4169: @c For example, @file{/:/tmp/foo*bar} visits the file @file{/tmp/foo*bar}.
 4170: @c However, in most cases you can simply type the wildcard characters for
 4171: @c themselves.  For example, if the only file name in @file{/tmp} that
 4172: @c starts with @samp{foo} and ends with @samp{bar} is @file{foo*bar}, then
 4173: @c specifying @file{/tmp/foo*bar} will visit just @file{/tmp/foo*bar}.
 4174: ワイルドカード文字を@samp{/:}でクォートすることもできます。
 4175: たとえば、@file{/:/tmp/foo*bar}でファイル@file{/tmp/foo*bar}を訪問します。
 4176: しかしながら、多くの場合、単にワイルドカード文字そのものを入力できます。
 4177: たとえば、@file{/tmp}にある@samp{foo}で始まり@samp{bar}で終る名前の
 4178: ファイルが@file{foo*bar}であるときには、
 4179: @file{/tmp/foo*bar}と指定すると、単に@file{/tmp/foo*bar}を訪問します。

FreeBSD-CVSweb <>