File:  [Local Repository] / gnujdoc / emacs-20.6 / programs-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 Programs, Building, Text, Top
   10: @c @chapter Editing Programs
   11: @chapter プログラムの編集
   12: @c @cindex Lisp editing
   13: @c @cindex C editing
   14: @c @cindex program editing
   15: @cindex Lispの編集
   16: @cindex Cの編集
   17: @cindex プログラムの編集
   19: @c   Emacs has many commands designed to understand the syntax of programming
   20: @c languages such as Lisp and C.  These commands can
   21: Emacsには、LispやCといったプログラム言語の構文を
   22: 理解するように設計されたコマンドが数多くあります。
   23: 以下のことを行えます。
   25: @itemize @bullet
   26: @item
   27: @c Move over or kill balanced expressions or @dfn{sexps} (@pxref{Lists}).
   28: 釣り合った式や@dfn{S式}(@pxref{Lists})を横断したりそれらをキルする。
   29: @item
   30: @c Move over or mark top-level expressions---@dfn{defuns}, in Lisp;
   31: @c functions, in C (@pxref{Defuns}).
   32: トップレベルの式、つまり、Lispの@dfn{defun}やCの関数(@pxref{Defuns})を
   33: 横断したりそれらにマークを設定する。
   34: @item
   35: @c Show how parentheses balance (@pxref{Matching}).
   36: 括弧の対応具合を表示する(@pxref{Matching})。
   37: @item
   38: @c Insert, kill or align comments (@pxref{Comments}).
   39: コメントの挿入/キル/整列(@pxref{Comments})。
   40: @item
   41: @c Follow the usual indentation conventions of the language
   42: @c (@pxref{Program Indent}).
   43: 使用言語の慣用的な字下げを踏襲する(@pxref{Program Indent})。
   44: @end itemize
   46: @c   The commands for words, sentences and paragraphs are very useful in
   47: @c editing code even though their canonical application is for editing
   48: @c human language text.  Most symbols contain words (@pxref{Words});
   49: @c sentences can be found in strings and comments (@pxref{Sentences}).
   50: @c Paragraphs per se don't exist in code, but the paragraph commands are
   51: @c useful anyway, because programming language major modes define
   52: @c paragraphs to begin and end at blank lines (@pxref{Paragraphs}).
   53: @c Judicious use of blank lines to make the program clearer will also
   54: @c provide useful chunks of text for the paragraph commands to work
   55: @c on.
   56: 単語/文/段落を扱うコマンドは、
   57: 自然言語のテキストを編集するのが本来の目的ですが、
   58: コードを編集する場合にもおおいに役立ちます。
   59: なぜなら、たいていのシンボルは単語ですし(@pxref{Words})、
   60: 文は文字列やコメントの中にも含まれるからです(@pxref{Sentences})。
   61: 段落は本質的にはコードの中には存在しませんが、
   62: プログラム言語向けのメジャーモードでは、
   63: 段落は空行で始まり空行で終わると定義するので、
   64: 段落コマンドも役立ちます(@pxref{Paragraphs})。
   65: 空行をうまく使ってプログラムが整然と見えるようにすると、
   66: 段落コマンドもうまく働きます。
   68: @c   The selective display feature is useful for looking at the overall
   69: @c structure of a function (@pxref{Selective Display}).  This feature causes
   70: @c only the lines that are indented less than a specified amount to appear
   71: @c on the screen.
   72: 選択的表示機能は、関数の全体構成を眺めるのに便利です
   73: (@pxref{Selective Display})。
   74: この機能は、指定幅以内の字下げ幅の行だけを表示します。
   76: @menu
   77: * Program Modes::       Major modes for editing programs.
   78: * Lists::	        Expressions with balanced parentheses.
   79: * List Commands::       The commands for working with list and sexps.
   80: * Defuns::	        Each program is made up of separate functions.
   81: 			  There are editing commands to operate on them.
   82: * Program Indent::      Adjusting indentation to show the nesting.
   83: * Matching::	        Insertion of a close-delimiter flashes matching open.
   84: * Comments::	        Inserting, killing, and aligning comments.
   85: * Balanced Editing::    Inserting two matching parentheses at once, etc.
   86: * Symbol Completion::   Completion on symbol names of your program or language.
   87: * Which Function::      Which Function mode shows which function you are in.
   88: * Documentation::       Getting documentation of functions you plan to call.
   89: * Change Log::	        Maintaining a change history for your program.
   90: * Tags::	        Go direct to any function in your program in one
   91: 			  command.  Tags remembers which file it is in.
   92: * Emerge::	        A convenient way of merging two versions of a program.
   93: * C Modes::             Special commands of C, C++, Objective-C, 
   94:                           Java, and Pike modes.
   95: * Fortran::	        Fortran mode and its special features.
   96: * Asm Mode::	        Asm mode and its special features.
   97: @end menu
   99: @node Program Modes, Lists, , Programs
  100: @c @section Major Modes for Programming Languages
  101: @section プログラム言語向けメジャーモード
  103: @c @cindex modes for programming languages
  104: @cindex プログラム言語向けモード
  105: @c @cindex Perl mode
  106: @c @cindex Icon mode
  107: @c @cindex Awk mode
  108: @c @cindex Makefile mode
  109: @c @cindex Tcl mode
  110: @c @cindex CPerl mode
  111: @cindex Perlモード
  112: @cindex Iconモード
  113: @cindex Awkモード
  114: @cindex Makefileモード
  115: @cindex Tclモード
  116: @cindex CPerlモード
  117: @c   Emacs also has major modes for the programming languages Lisp, Scheme
  118: @c (a variant of Lisp), Awk, C, C++, Fortran, Icon, Java, Objective-C,
  119: @c Pascal, Perl, Pike, CORBA IDL, and Tcl.  There is also a major mode for
  120: @c makefiles, called Makefile mode.  An second alternative mode for Perl is
  121: @c called CPerl mode.
  122: Emacsには、Lisp、Scheme(Lispの方言の1つ)、Awk、C、C++、Fortran、
  123: Icon、Java、Objective-C、Pascal、Perl、Pike、CORBA IDL、
  124: Tclといった各種プログラム言語向けのメジャーモードがあります。
  125: makefile用のメジャーモード、makefileモードもあります。
  126: Perl向けの別のモードとして、cperlモードもあります。
  128: @c   Ideally, a major mode should be implemented for each programming
  129: @c language that you might want to edit with Emacs; but often the mode for
  130: @c one language can serve for other syntactically similar languages.  The
  131: @c language modes that exist are those that someone decided to take the
  132: @c trouble to write.
  133: 理想的には、Emacsで編集する可能性のあるすべてのプログラム言語に対して、
  134: それぞれのメジャーモードを実装すべきです。
  135: しかし、ある言語向けのモードが、構文的に類似した他の言語にも
  136: 使えることがよくあります。
  137: 既存の言語モード群は、誰かがわざわざ書こうと決心したものです。
  139: @c   There are several forms of Lisp mode, which differ in the way they
  140: @c interface to Lisp execution.  @xref{Executing Lisp}.
  141: Lispモードにはいくつか変種がありますが、
  142: Lispを実行する際のインターフェイス方法が異なります。
  143: @xref{Executing Lisp}。
  145: @c   Each of the programming language major modes defines the @key{TAB} key
  146: @c to run an indentation function that knows the indentation conventions of
  147: @c that language and updates the current line's indentation accordingly.
  148: @c For example, in C mode @key{TAB} is bound to @code{c-indent-line}.
  149: @c @kbd{C-j} is normally defined to do @key{RET} followed by @key{TAB};
  150: @c thus, it too indents in a mode-specific fashion.
  151: 各プログラム言語向けメジャーモードでは、
  152: その言語の慣用的な字下げ方法を理解し
  153: 現在行をそのように字下げする関数を実行するように
  154: @key{TAB}キーを定義します。
  155: たとえば、Cモードでは、@key{TAB}は@code{c-indent-line}にバインドされています。
  156: また、@kbd{C-j}は、@key{RET}に続けて@key{TAB}を実行するように
  157: 定義されています。
  158: つまり、モードに固有の字下げも行います。
  160: @c @kindex DEL @r{(programming modes)}
  161: @kindex DEL @r{(プログラミングモード)}
  162: @findex backward-delete-char-untabify
  163: @c   In most programming languages, indentation is likely to vary from line to
  164: @c line.  So the major modes for those languages rebind @key{DEL} to treat a
  165: @c tab as if it were the equivalent number of spaces (using the command
  166: @c @code{backward-delete-char-untabify}).  This makes it possible to rub out
  167: @c indentation one column at a time without worrying whether it is made up of
  168: @c spaces or tabs.  Use @kbd{C-b C-d} to delete a tab character before point,
  169: @c in these modes.
  170: 多くのプログラム言語では、行ごとに字下げ量が異なります。
  171: そのため、そのような言語向けのメジャーモードでは、
  172: (コマンド@code{backward-delete-char-untabify}を使って)
  173: タブ文字を等価な個数の空白と同じに扱うように@key{DEL}を再定義しています。
  174: その結果、字下げが空白かタブのどちらで構成されているのか気にせずに、
  175: 1度に1桁ずつ消去することが可能となります。
  176: そのようなモードでは、ポイントの直前にあるタブ文字を削除するには
  177: @kbd{C-b C-d}を使います。
  179: @c   Programming language modes define paragraphs to be separated only by
  180: @c blank lines, so that the paragraph commands remain useful.  Auto Fill mode,
  181: @c if enabled in a programming language major mode, indents the new lines
  182: @c which it creates.
  183: プログラム言語向けモードでは、段落は空行で分割されると定義するので、
  184: 段落コマンドも便利に使えます。
  185: プログラム言語向けメジャーモードで
  186: 自動詰め込み(auto-fill)モードがオンのときには、
  187: 新たに行を作ると自動的に字下げも行われます。
  189: @c @cindex mode hook
  190: @cindex モードフック
  191: @vindex c-mode-hook
  192: @vindex lisp-mode-hook
  193: @vindex emacs-lisp-mode-hook
  194: @vindex lisp-interaction-mode-hook
  195: @vindex scheme-mode-hook
  196: @vindex muddle-mode-hook
  197: @c   Turning on a major mode runs a normal hook called the @dfn{mode hook},
  198: @c which is the value of a Lisp variable.  Each major mode has a mode hook,
  199: @c and the hook's name is always made from the mode command's name by
  200: @c adding @samp{-hook}.  For example, turning on C mode runs the hook
  201: @c @code{c-mode-hook}, while turning on Lisp mode runs the hook
  202: @c @code{lisp-mode-hook}.  @xref{Hooks}.
  203: メジャーモードに入ると、@dfn{モードフック}(mode hook)と
  204: 呼ばれるノーマルフックが実行されます。
  205: モードフックは、Lisp変数の値です。
  206: 各メジャーモードにはモードフックがあり、
  207: フック名はつねにモードに入るためのコマンド名に@samp{-hook}を付加したものです。
  208: たとえば、Cモードに入るとフック@code{c-mode-hook}が実行され、
  209: Lispモードではフック@code{lisp-mode-hook}が実行されます。
  210: @xref{Hooks}。
  212: @node Lists, List Commands, Program Modes, Programs
  213: @c @section Lists and Sexps
  214: @section リストとS式
  216: @c @cindex Control-Meta
  217: @cindex コントロール・メタ
  218: @c   By convention, Emacs keys for dealing with balanced expressions are
  219: @c usually Control-Meta characters.  They tend to be analogous in
  220: @c function to their Control and Meta equivalents.  These commands are
  221: @c usually thought of as pertaining to expressions in programming
  222: @c languages, but can be useful with any language in which some sort of
  223: @c parentheses exist (including human languages).
  224: 慣習として、釣り合った式を扱うEmacsのキーは、普通、コントロール・メタ文字です。
  225: これらは、コントロールやメタだけの対応したキーの機能に似せてあります。
  226: これらは、プログラム言語の式だけに関係したコマンドだと考えられがちですが、
  227: ある種の括弧が存在する(自然言語も含めた)任意の言語に対しても有益なものです。
  229: @c @cindex list
  230: @c @cindex sexp
  231: @c @cindex expression
  232: @cindex リスト
  233: @cindex S式
  234: @cindex 式
  235: @c   These commands fall into two classes.  Some deal only with @dfn{lists}
  236: @c (parenthetical groupings).  They see nothing except parentheses, brackets,
  237: @c braces (whichever ones must balance in the language you are working with),
  238: @c and escape characters that might be used to quote those.
  239: これらのコマンドは、2つのグループに分けられます。
  240: 一方は(括弧でまとめた)@dfn{リスト}(list)@footnote{【訳注】
  241: ここでは、Lispの「リスト」ではなく、
  242: 単に括弧で括った一塊のこと。}だけを扱うもので、
  243: 丸括弧、角括弧、中括弧(使用言語において対応が取れている必要がある括弧)と、
  244: それらをクォートするエスケープ文字だけに注目するコマンド群です。
  246: @c   The other commands deal with expressions or @dfn{sexps}.  The word `sexp'
  247: @c is derived from @dfn{s-expression}, the ancient term for an expression in
  248: @c Lisp.  But in Emacs, the notion of `sexp' is not limited to Lisp.  It
  249: @c refers to an expression in whatever language your program is written in.
  250: @c Each programming language has its own major mode, which customizes the
  251: @c syntax tables so that expressions in that language count as sexps.
  252: もう一方は、式あるいは@dfn{S式}(sexp)を扱うコマンド群です。
  253: 「sexp」という用語は、
  254: Lispの式を意味する古くからの用語@dfn{s-expression}に由来します。
  255: Emacsでは「S式」の概念をLispに限定しません。
  256: プログラムを記述した言語が何であっても、その式をS式と呼びます。
  257: 各プログラム言語には独自のメジャーモードがあり、
  258: そこでは、その言語の式をS式とみなすように構文テーブルを調整してあります。
  260: @c   Sexps typically include symbols, numbers, and string constants, as well
  261: @c as anything contained in parentheses, brackets or braces.
  262: 一般にS式には、丸括弧、角括弧、中括弧に囲まれた部分だけでなく、
  263: シンボル、数値、文字列定数も含まれます。
  265: @c   In languages that use prefix and infix operators, such as C, it is not
  266: @c possible for all expressions to be sexps.  For example, C mode does not
  267: @c recognize @samp{foo + bar} as a sexp, even though it @emph{is} a C expression;
  268: @c it recognizes @samp{foo} as one sexp and @samp{bar} as another, with the
  269: @c @samp{+} as punctuation between them.  This is a fundamental ambiguity:
  270: @c both @samp{foo + bar} and @samp{foo} are legitimate choices for the sexp to
  271: @c move over if point is at the @samp{f}.  Note that @samp{(foo + bar)} is a
  272: @c single sexp in C mode.
  273: Cのように前置演算子と中置演算子を使う言語では、
  274: すべての式をS式として扱うことは不可能です。
  275: たとえば、Cモードでは、@samp{foo + bar}はCの式@emph{です}が、
  276: S式としては認識しません。
  277: かわりに、@samp{foo}と@samp{bar}をそれぞれ1つのS式として認識し、
  278: @samp{+}はあいだにある句読点として認識します。
  279: これは根本的に曖昧なのです。
  280: たとえば、ポイントが@samp{f}にあるとき、横断すべきS式としては、
  281: @samp{foo + bar}でも@samp{foo}でも正当な選択肢です。
  282: @samp{(foo + bar)}は、Cモードにおいて単一のS式であることに注意してください。
  284: @c   Some languages have obscure forms of expression syntax that nobody
  285: @c has bothered to make Emacs understand properly.
  286: 式の構文が曖昧なために、
  287: Emacsが正しく解釈できるようにしようなどとは誰も思わない言語もあります。
  289: @node List Commands, Defuns, Lists, Programs
  290: @c @section List And Sexp Commands
  291: @section リストとS式に対するコマンド
  293: @c doublewidecommands
  294: @table @kbd
  295: @item C-M-f
  296: @c Move forward over a sexp (@code{forward-sexp}).
  297: S式を横断して前向きに移動する(@code{forward-sexp})。
  298: @item C-M-b
  299: @c Move backward over a sexp (@code{backward-sexp}).
  300: S式を横断して後向きに移動する(@code{backward-sexp})。
  301: @item C-M-k
  302: @c Kill sexp forward (@code{kill-sexp}).
  303: 前向きにS式をキルする(@code{kill-sexp})。
  304: @item C-M-@key{DEL}
  305: @c Kill sexp backward (@code{backward-kill-sexp}).
  306: 後向きにS式をキルする(@code{backward-kill-sexp})。
  307: @item C-M-u
  308: @c Move up and backward in list structure (@code{backward-up-list}).
  309: リスト構造を1レベル上がって後向きに移動する(@code{backward-up-list})。
  310: @item C-M-d
  311: @c Move down and forward in list structure (@code{down-list}).
  312: リスト構造を1レベル下がって前向きに移動する(@code{down-list})。
  313: @item C-M-n
  314: @c Move forward over a list (@code{forward-list}).
  315: リストを横断して前向きに移動する(@code{forward-list})。
  316: @item C-M-p
  317: @c Move backward over a list (@code{backward-list}).
  318: リストを横断して後向きに移動する(@code{backward-list})。
  319: @item C-M-t
  320: @c Transpose expressions (@code{transpose-sexps}).
  321: 式を入れ替える(@code{transpose-sexps})。
  322: @item C-M-@@
  323: @c Put mark after following expression (@code{mark-sexp}).
  324: つぎの式の直後にマークを設定する(@code{mark-sexp})。
  325: @end table
  327: @kindex C-M-f
  328: @kindex C-M-b
  329: @findex forward-sexp
  330: @findex backward-sexp
  331: @c   To move forward over a sexp, use @kbd{C-M-f} (@code{forward-sexp}).  If
  332: @c the first significant character after point is an opening delimiter
  333: @c (@samp{(} in Lisp; @samp{(}, @samp{[} or @samp{@{} in C), @kbd{C-M-f}
  334: @c moves past the matching closing delimiter.  If the character begins a
  335: @c symbol, string, or number, @kbd{C-M-f} moves over that.
  336: S式を横断して前向きに移動するには、
  337: @kbd{C-M-f}(@code{forward-sexp})を使います。
  338: ポイントに続く最初の意味ある文字が開き区切り
  339: (Lisp では@samp{(}、Cでは@samp{(}や@samp{[}や@samp{@{})であれば、
  340: 対応する閉じ区切りのうしろに移動します。
  341: シンボル、文字列、数値を始める文字の場合には、
  342: それらを横断してその末尾に移動します。
  344: @c   The command @kbd{C-M-b} (@code{backward-sexp}) moves backward over a
  345: @c sexp.  The detailed rules are like those above for @kbd{C-M-f}, but with
  346: @c directions reversed.  If there are any prefix characters (single-quote,
  347: @c backquote and comma, in Lisp) preceding the sexp, @kbd{C-M-b} moves back
  348: @c over them as well.  The sexp commands move across comments as if they
  349: @c were whitespace in most modes.
  350: コマンド@kbd{C-M-b}(@code{backward-sexp})は、
  351: S式を横断して後向きに移動します。
  352: 移動の詳しい規則は上記の@kbd{C-M-f}と同様ですが、方向は逆です。
  353: S式のまえに接頭辞文字(Lispではシングルクォート、バッククォート、コンマ)が
  354: ある場合には、それらも横断します。
  355: ほとんどのモードでは、S式コマンドはコメントを空白であるかのように
  356: 飛び越えます。
  358: @c   @kbd{C-M-f} or @kbd{C-M-b} with an argument repeats that operation the
  359: @c specified number of times; with a negative argument, it moves in the
  360: @c opposite direction.
  361: @kbd{C-M-f}や@kbd{C-M-b}に引数を指定すると、
  362: 指定された回数だけ動作を繰り返します。
  363: 負の引数では、逆向きに移動します。
  365: @kindex C-M-k
  366: @findex kill-sexp
  367: @kindex C-M-DEL
  368: @findex backward-kill-sexp
  369: @c   Killing a whole sexp can be done with @kbd{C-M-k} (@code{kill-sexp})
  370: @c or @kbd{C-M-@key{DEL}} (@code{backward-kill-sexp}).  @kbd{C-M-k} kills
  371: @c the characters that @kbd{C-M-f} would move over, and @kbd{C-M-@key{DEL}}
  372: @c kills the characters that @kbd{C-M-b} would move over.
  373: 1つのS式全体をキルするには、@kbd{C-M-k}(@code{kill-sexp})や
  374: @kbd{C-M-@key{DEL}}(@code{backward-kill-sexp})で行います。
  375: @kbd{C-M-k}は@kbd{C-M-f}で横断するだけの文字をキルし、
  376: @kbd{C-M-@key{DEL}}は@kbd{C-M-b}で横断するだけの文字をキルします。
  378: @kindex C-M-n
  379: @kindex C-M-p
  380: @findex forward-list
  381: @findex backward-list
  382: @c   The @dfn{list commands} move over lists, as the sexp commands do, but skip
  383: @c blithely over any number of other kinds of sexps (symbols, strings, etc.).
  384: @c They are @kbd{C-M-n} (@code{forward-list}) and @kbd{C-M-p}
  385: @c (@code{backward-list}).  The main reason they are useful is that they
  386: @c usually ignore comments (since the comments usually do not contain any
  387: @c lists).@refill
  388: S式コマンドと同様に、@dfn{リストコマンド}はリストを横断しますが、
  389: リスト以外のS式(シンボルや文字列など)は飛び越します。
  390: これらのコマンドは、@kbd{C-M-n}(@code{forward-list})と
  391: @kbd{C-M-p}(@code{backward-list})です。
  392: これらのコマンドが便利である主な理由は、
  393: (コメントにはリストが何も含まれないのが普通なので)
  394: コメントを無視するからです。
  396: @kindex C-M-u
  397: @kindex C-M-d
  398: @findex backward-up-list
  399: @findex down-list
  400: @c   @kbd{C-M-n} and @kbd{C-M-p} stay at the same level in parentheses, when
  401: @c that's possible.  To move @emph{up} one (or @var{n}) levels, use @kbd{C-M-u}
  402: @c (@code{backward-up-list}).
  403: @c @kbd{C-M-u} moves backward up past one unmatched opening delimiter.  A
  404: @c positive argument serves as a repeat count; a negative argument reverses
  405: @c direction of motion and also requests repetition, so it moves forward and
  406: @c up one or more levels.@refill
  407: @kbd{C-M-n}と@kbd{C-M-p}は、可能な限り同じレベルの括弧にとどまります。
  408: 1つ(あるいは@var{n}だけ)@emph{上の}レベルに移動するには、
  409: @kbd{C-M-u}(@code{backward-up-list})を使います。
  410: @kbd{C-M-u}は、対応の取れていない開き区切りのまえへ後向きに移動して、
  411: 1つレベルを上げます。
  412: 正の引数は反復回数になります。
  413: 負の引数は、移動を逆向きにしますが、やはり反復回数です。
  414: つまり、前向きに移動して、1つ以上レベルを上げます。
  416: @c   To move @emph{down} in list structure, use @kbd{C-M-d}
  417: @c (@code{down-list}).  In Lisp mode, where @samp{(} is the only opening
  418: @c delimiter, this is nearly the same as searching for a @samp{(}.  An
  419: @c argument specifies the number of levels of parentheses to go down.
  420: リスト構造中で@emph{下}のレベルに移動するには、
  421: @kbd{C-M-d}(@code{down-list})を使います。
  422: Lispモードでは、@samp{(}が唯一の開き区切りなので、
  423: このコマンドは@samp{(}を探索するのとほとんど同じです。
  424: 引数は下がるべき括弧のレベルを指定します。
  426: @c @cindex transposition
  427: @cindex 入れ替え
  428: @kindex C-M-t
  429: @findex transpose-sexps
  430: @c   A somewhat random-sounding command which is nevertheless handy is
  431: @c @kbd{C-M-t} (@code{transpose-sexps}), which drags the previous sexp
  432: @c across the next one.  An argument serves as a repeat count, and a
  433: @c negative argument drags backwards (thus canceling out the effect of
  434: @c @kbd{C-M-t} with a positive argument).  An argument of zero, rather than
  435: @c doing nothing, transposes the sexps ending after point and the mark.
  436: 本当は役に立つのに、何の役に立つのだろうと思われるコマンドが
  437: @kbd{C-M-t}(@code{transpose-sexps})です。
  438: これはポイントのまえにあるS式を、つぎにあるS式を越えて移動するコマンドです。
  439: 引数は反復回数となり、負の引数では後向きにS式を移動します
  440: (つまり正の引数を指定した@kbd{C-M-t}の効果を打ち消せる)。
  441: 引数が0の場合は、何もしないのではなくて、
  442: ポイントのあとにあるS式とマークのあとにあるS式を入れ替えます。
  444: @kindex C-M-@@
  445: @findex mark-sexp
  446: @c   To set the region around the next sexp in the buffer, use @kbd{C-M-@@}
  447: @c (@code{mark-sexp}), which sets mark at the same place that @kbd{C-M-f}
  448: @c would move to.  @kbd{C-M-@@} takes arguments like @kbd{C-M-f}.  In
  449: @c particular, a negative argument is useful for putting the mark at the
  450: @c beginning of the previous sexp.
  451: バッファ内でつぎにあるS式の周りにリージョンを設定するには、
  452: @kbd{C-M-@@}(@code{mark-sexp})を使います。
  453: このコマンドは、@kbd{C-M-f}による移動先にマークを設定します。
  454: @kbd{C-M-@@}は、@kbd{C-M-f}と同様に引数を取ります。
  455: とりわけ、負の引数は、直前のS式の先頭にマークを設定するのに便利です。
  457: @c   The list and sexp commands' understanding of syntax is completely
  458: @c controlled by the syntax table.  Any character can, for example, be
  459: @c declared to be an opening delimiter and act like an open parenthesis.
  460: @c @xref{Syntax}.
  461: リストおよびS式コマンドが行う構文の解釈は、
  462: 構文テーブルに完全に支配されます。
  463: たとえば、任意の文字を開き区切りとして宣言できて、
  464: そうすると開き括弧のようにふるまうようになります。
  465: @xref{Syntax}。
  467: @node Defuns, Program Indent, List Commands, Programs
  468: @c @section Defuns
  469: @section 関数定義(defun)
  470: @c @cindex defuns
  471: @cindex 関数定義(defun)
  472: @cindex defun(関数定義)
  474: @c   In Emacs, a parenthetical grouping at the top level in the buffer is
  475: @c called a @dfn{defun}.  The name derives from the fact that most top-level
  476: @c lists in a Lisp file are instances of the special form @code{defun}, but
  477: @c any top-level parenthetical grouping counts as a defun in Emacs parlance
  478: @c regardless of what its contents are, and regardless of the programming
  479: @c language in use.  For example, in C, the body of a function definition is a
  480: @c defun.
  481: Emacsでは、トップレベルの括弧でグループ化したものは
  482: @dfn{関数定義}(defun)と呼ばれます。
  483: この名前は、Lispファイルではトップレベルにあるリストの大半が
  484: スペシャルフォーム@code{defun}であるという事実に由来します。
  485: しかし、その中身が何であろうとも、また、使用プログラム言語が何であろうとも、
  486: Emacs流には、トップレベルの括弧でグループ化されたものは
  487: すべて関数定義(defun)です。
  488: たとえば、Cの関数定義の本体は関数定義(defun)です。
  490: @c doublewidecommands
  491: @table @kbd
  492: @item C-M-a
  493: @c Move to beginning of current or preceding defun
  494: @c (@code{beginning-of-defun}).
  495: 現在の関数定義、あるいは、直前の関数定義の先頭に移動する
  496: (@code{beginning-of-defun})。
  497: @item C-M-e
  498: @c Move to end of current or following defun (@code{end-of-defun}).
  499: 現在の関数定義、あるいは、つぎの関数定義の末尾に移動する
  500: (@code{end-of-defun})。
  501: @item C-M-h
  502: @c Put region around whole current or following defun (@code{mark-defun}).
  503: 現在の関数定義、あるいは、つぎの関数定義を囲むリージョンを設定する
  504: (@code{mark-defun})。
  505: @end table
  507: @kindex C-M-a
  508: @kindex C-M-e
  509: @kindex C-M-h
  510: @findex beginning-of-defun
  511: @findex end-of-defun
  512: @findex mark-defun
  513: @c   The commands to move to the beginning and end of the current defun are
  514: @c @kbd{C-M-a} (@code{beginning-of-defun}) and @kbd{C-M-e} (@code{end-of-defun}).
  515: 現在の関数定義の先頭や末尾に移動するコマンドは、
  516: @kbd{C-M-a}(@code{beginning-of-defun})と
  517: @kbd{C-M-e}(@code{end-of-defun})です。
  519: @findex c-mark-function
  520: @c   If you wish to operate on the current defun, use @kbd{C-M-h}
  521: @c (@code{mark-defun}) which puts point at the beginning and mark at the end
  522: @c of the current or next defun.  For example, this is the easiest way to get
  523: @c ready to move the defun to a different place in the text.  In C mode,
  524: @c @kbd{C-M-h} runs the function @code{c-mark-function}, which is almost the
  525: @c same as @code{mark-defun}; the difference is that it backs up over the
  526: @c argument declarations, function name and returned data type so that the
  527: @c entire C function is inside the region.  @xref{Marking Objects}.
  528: 現在の関数定義を操作したいのであれば、
  529: @kbd{C-M-h}(@code{mark-defun})を使って、
  530: 現在の関数定義かつぎの関数定義の先頭にポイントを置き、
  531: その末尾にマークを設定します。
  532: たとえば、関数定義をテキストの別の位置に移動する準備をするには、
  533: このコマンドを使うのがもっとも簡単な方法です。
  534: Cモードでは、@kbd{C-M-h}は@code{c-mark-function}を実行しますが、
  535: @code{mark-defun}とほとんど同じです。
  536: 違いは、引数宣言、関数名、戻り値の型名と遡って、
  537: Cの関数全体をリージョンに含めることです。
  538: @xref{Marking Objects}。
  540: @c   Emacs assumes that any open-parenthesis found in the leftmost column
  541: @c is the start of a defun.  Therefore, @strong{never put an
  542: @c open-parenthesis at the left margin in a Lisp file unless it is the
  543: @c start of a top-level list.  Never put an open-brace or other opening
  544: @c delimiter at the beginning of a line of C code unless it starts the body
  545: @c of a function.}  The most likely problem case is when you want an
  546: @c opening delimiter at the start of a line inside a string.  To avoid
  547: @c trouble, put an escape character (@samp{\}, in C and Emacs Lisp,
  548: @c @samp{/} in some other Lisp dialects) before the opening delimiter.  It
  549: @c will not affect the contents of the string.
  550: Emacsは、もっとも左の桁でみつけた任意の開き括弧を
  551: 関数定義の始まりであると仮定します。
  552: したがって、@strong{トップレベルのリストの始まりでない限り、
  553: Lispファイルの中では左端に開き括弧を置いてはいけません。
  554: また、関数本体の始まりを表すのでない限り、
  555: Cのコードの行頭に開き中括弧や開き区切りを置いてはいけません。}
  556: もっとも起こりやすい場面は、
  557: 文字列の途中で、行頭に開き区切りを入れたい場合です。
  558: トラブルを避けるために、開き区切りのまえに
  559: エスケープ文字(CやEmacs Lispでは @samp{\}、
  560: その他のLisp方言のいくつかでは@samp{/})を入れてください。
  561: これで文字列の内容が影響を受けることはありません。
  563: @c   In the remotest past, the original Emacs found defuns by moving upward a
  564: @c level of parentheses until there were no more levels to go up.  This always
  565: @c required scanning all the way back to the beginning of the buffer, even for
  566: @c a small function.  To speed up the operation, Emacs was changed to assume
  567: @c that any @samp{(} (or other character assigned the syntactic class of
  568: @c opening-delimiter) at the left margin is the start of a defun.  This
  569: @c heuristic is nearly always right and avoids the costly scan; however,
  570: @c it mandates the convention described above.
  571: 大昔のもともとのEmacsでは、関数定義を探すために、
  572: より上位レベルの括弧がなくなるまで遡っていました。
  573: この方法では、たとえ小さな関数であっても、
  574: バッファの先頭まで遡って走査することがつねに必要でした。
  575: これを高速化するために、左端内の任意の@samp{(}
  576: (あるいは、開き区切りと宣言された任意の文字)が
  577: 関数定義の始まりであると仮定するように、Emacsを変更しました。
  578: この発見的手法で、ほとんど正しく処理できて、時間のかかる走査を回避できます。
  579: しかし、上述の約束事は必要です。
  581: @node Program Indent, Matching, Defuns, Programs
  582: @c @section Indentation for Programs
  583: @section プログラムの字下げ
  584: @c @cindex indentation for programs
  585: @cindex プログラムの字下げ
  587: @c   The best way to keep a program properly indented is to use Emacs to
  588: @c reindent it as you change it.  Emacs has commands to indent properly
  589: @c either a single line, a specified number of lines, or all of the lines
  590: @c inside a single parenthetical grouping.
  591: 正しく字下げされた状態にプログラムを保つ最良の方法は、
  592: 変更したらEmacsに字下げをやり直させることです。
  593: Emacsには、1行の字下げ、指定された行数の字下げ、あるいは、
  594: 括弧でグループ化した内部のすべての行の字下げを行うコマンドがあります。
  596: @menu
  597: * Basic Indent::	Indenting a single line.
  598: * Multi-line Indent::   Commands to reindent many lines at once.
  599: * Lisp Indent::		Specifying how each Lisp function should be indented.
  600: * C Indent::		Extra features for indenting C and related modes.
  601: * Custom C Indent::	Controlling indentation style for C and related modes.
  602: @end menu
  604: @c   Emacs also provides a Lisp pretty-printer in the library @code{pp}.
  605: @c This program reformats a Lisp object with indentation chosen to look nice.
  606: Emacsでは、ライブラリ@code{pp}にLispのプリティプリンタ@footnote{【訳注】
  607: プログラムのソースコードを美しく清書するプログラムを
  608: 一般にプリティプリンタ(pretty-printer)と呼ぶ。}
  609: もあります。
  610: このプログラムは、美しく見えるように字下げを施してLispオブジェクトを
  611: 清書するプログラムです。
  613: @node Basic Indent, Multi-line Indent, , Program Indent
  614: @c @subsection Basic Program Indentation Commands
  615: @subsection プログラムの字下げ基本コマンド
  617: @c WideCommands
  618: @table @kbd
  619: @item @key{TAB}
  620: @c Adjust indentation of current line.
  621: 現在行の字下げを調整する。
  622: @item C-j
  623: @c Equivalent to @key{RET} followed by @key{TAB} (@code{newline-and-indent}).
  624: @key{RET}に続けて@key{TAB}と打鍵するのと同じ
  625: (@code{newline-and-indent})。
  626: @end table
  628: @c @kindex TAB @r{(programming modes)}
  629: @kindex TAB @r{(プログラミングモード)}
  630: @findex c-indent-line
  631: @findex lisp-indent-line
  632: @c   The basic indentation command is @key{TAB}, which gives the current line
  633: @c the correct indentation as determined from the previous lines.  The
  634: @c function that @key{TAB} runs depends on the major mode; it is @code{lisp-indent-line}
  635: @c in Lisp mode, @code{c-indent-line} in C mode, etc.  These functions
  636: @c understand different syntaxes for different languages, but they all do
  637: @c about the same thing.  @key{TAB} in any programming-language major mode
  638: @c inserts or deletes whitespace at the beginning of the current line,
  639: @c independent of where point is in the line.  If point is inside the
  640: @c whitespace at the beginning of the line, @key{TAB} leaves it at the end of
  641: @c that whitespace; otherwise, @key{TAB} leaves point fixed with respect to
  642: @c the characters around it.
  643: 基本的な字下げコマンドは@key{TAB}です。
  644: 直前の数行から判断した正しい字下げを現在行に施します。
  645: @key{TAB}が実行する関数は、メジャーモードに依存します。
  646: たとえば、Lispモードでは@code{lisp-indent-line}、
  647: Cモードでは@code{c-indent-line}が実行されます。
  648: これらの関数はそれぞれの言語の構文を解釈しますが、
  649: どれも同じことを行うためのものです。
  650: プログラム言語向けメジャーモードにおいては、
  651: @key{TAB}は、現在行のどこにポイントがあっても、
  652: 現在行の先頭に白文字を挿入したり削除したりします。
  653: ポイントが行頭の白文字の中にあったときは、
  654: @key{TAB}は最後の白文字のうしろにポイントを置きます。
  655: そうでなければ、@key{TAB}を打ったときの文字のところに留まります。
  657: @c   Use @kbd{C-q @key{TAB}} to insert a tab at point.
  658: ポイント位置にタブを挿入するには、@kbd{C-q @key{TAB}}を使います。
  660: @kindex C-j
  661: @findex newline-and-indent
  662: @c   When entering lines of new code, use @kbd{C-j} (@code{newline-and-indent}),
  663: @c which is equivalent to a @key{RET} followed by a @key{TAB}.  @kbd{C-j} creates
  664: @c a blank line and then gives it the appropriate indentation.
  665: 新たにソースコード行を入力するときには、
  666: @kbd{C-j}(@code{newline-and-indent})を使ってください。
  667: これは、@key{RET}に続けて@key{TAB}を打鍵することと等価です。
  668: @kbd{C-j}は、空行を作ってから、その行で適切な字下げを行います。
  670: @c   @key{TAB} indents the second and following lines of the body of a
  671: @c parenthetical grouping each under the preceding one; therefore, if you
  672: @c alter one line's indentation to be nonstandard, the lines below will
  673: @c tend to follow it.  This behavior is convenient in cases where you have
  674: @c overridden the standard result of @key{TAB} because you find it
  675: @c unaesthetic for a particular line.
  676: 括弧でグループにまとめたところでは、
  677: @key{TAB}は、2行目以降の行をそれぞれ直前の行の真下にくるように字下げします。
  678: したがって、ある行を非標準的な字下げにすると、
  679: 以降の行もその字下げに従うことになります。
  680: @key{TAB}による標準的な字下げが、
  681: 特定の行では美しくないので無視したい場合には、
  682: 字下げのこのようなふるまいが便利です。
  684: @c   Remember that an open-parenthesis, open-brace or other opening delimiter
  685: @c at the left margin is assumed by Emacs (including the indentation routines)
  686: @c to be the start of a function.  Therefore, you must never have an opening
  687: @c delimiter in column zero that is not the beginning of a function, not even
  688: @c inside a string.  This restriction is vital for making the indentation
  689: @c commands fast; you must simply accept it.  @xref{Defuns}, for more
  690: @c information on this.
  691: (字下げ処理を含めて)Emacsは、左端にある、開き丸括弧、開き中括弧、
  692: および、その他の開き区切りを関数の始まりと仮定することを
  693: 覚えておきましょう。
  694: たとえ文字列の中であっても、
  695: 関数の始まりでない開き区切りをけっして0桁目に置いてはいけません。
  696: この制約は字下げコマンドを高速にするためにきわめて重要です。
  697: 無条件で受け入れてください。
  698: これに関してより詳しくは、@xref{Defuns}。
  700: @node Multi-line Indent, Lisp Indent, Basic Indent, Program Indent
  701: @c @subsection Indenting Several Lines
  702: @subsection 複数行の字下げ
  704: @c   When you wish to reindent several lines of code which have been altered
  705: @c or moved to a different level in the list structure, you have several
  706: @c commands available.
  707: 変更した複数行や、リスト構造中の異なるレベル箇所へ移した複数の行を
  708: 字下げし直すには、いくつかのコマンドを利用できます。
  710: @table @kbd
  711: @item C-M-q
  712: @c Reindent all the lines within one list (@code{indent-sexp}).
  713: リスト内のすべての行を字下げし直す(@code{indent-sexp})。
  714: @item C-u @key{TAB}
  715: @c Shift an entire list rigidly sideways so that its first line
  716: @c is properly indented.
  717: リストの最初の行が正しい字下げ位置にくるように、
  718: リストのすべての行を横にそのまま動かす。
  719: @item C-M-\
  720: @c Reindent all lines in the region (@code{indent-region}).
  721: リージョン内のすべての行を字下げし直す(@code{indent-region})。
  722: @end table
  724: @kindex C-M-q
  725: @findex indent-sexp
  726: @c   You can reindent the contents of a single list by positioning point
  727: @c before the beginning of it and typing @kbd{C-M-q} (@code{indent-sexp} in
  728: @c Lisp mode, @code{c-indent-exp} in C mode; also bound to other suitable
  729: @c commands in other modes).  The indentation of the line the sexp starts on
  730: @c is not changed; therefore, only the relative indentation within the list,
  731: @c and not its position, is changed.  To correct the position as well, type a
  732: @c @key{TAB} before the @kbd{C-M-q}.
  733: 1つのリストの中身を字下げし直すには、
  734: リストの始まり位置にポイントを置いて
  735: @kbd{C-M-q}(Lispモードでは@code{indent-sexp}、
  736: Cモードでは@code{c-indent-exp}、
  737: 他のモードでは適切なコマンドにバインドされている)と打ちます。
  738: S式が始まる行の字下げは変化しません。
  739: つまり、リスト内の相対的な字下げが変化するだけで、
  740: リストの位置は変わりません。
  741: リストの開始位置も直すには、@kbd{C-M-q}のまえに@key{TAB}を打ってください。
  743: @kindex C-u TAB
  744: @c   If the relative indentation within a list is correct but the
  745: @c indentation of its first line is not, go to that line and type @kbd{C-u
  746: @c @key{TAB}}.  @key{TAB} with a numeric argument reindents the current
  747: @c line as usual, then reindents by the same amount all the lines in the
  748: @c grouping starting on the current line.  In other words, it reindents the
  749: @c whole grouping rigidly as a unit.  It is clever, though, and does not
  750: @c alter lines that start inside strings, or C preprocessor lines when in C
  751: @c mode.
  752: リスト内の相対的な字下げは正しいけれども、
  753: リストの開始行の字下げが正しくない場合には、
  754: その行に移動して@kbd{C-u @key{TAB}}と打ちます。
  755: @key{TAB}に数引数を指定すると、通常どおり現在行を字下げしてから、
  756: その行から始まるリスト内のすべての行にも同じ量の字下げを加えます。
  757: いいかえれば、グループ全体をひとまとめに字下げし直します。
  758: ただし、このコマンドは賢くて、文字列の中の行は移動しませんし、
  759: Cモードではプリプロセッサ行を移動しません。
  761: @c   Another way to specify the range to be reindented is with the region.
  762: @c The command @kbd{C-M-\} (@code{indent-region}) applies @key{TAB} to
  763: @c every line whose first character is between point and mark.
  764: 字下げし直す範囲を指定するには、リージョンを使うこともできます。
  765: コマンド@kbd{C-M-\}(@code{indent-region})は、
  766: ポイントとマークのあいだに
  767: 行の先頭文字が含まれるすべての行について@key{TAB}を実行します。
  769: @node Lisp Indent, C Indent, Multi-line Indent, Program Indent
  770: @c @subsection Customizing Lisp Indentation
  771: @subsection Lispの字下げのカスタマイズ
  772: @c @cindex customizing Lisp indentation
  773: @cindex Lispの字下げのカスタマイズ
  775: @c   The indentation pattern for a Lisp expression can depend on the function
  776: @c called by the expression.  For each Lisp function, you can choose among
  777: @c several predefined patterns of indentation, or define an arbitrary one with
  778: @c a Lisp program.
  779: Lisp式に対する字下げの仕方を、
  780: その式から呼ばれる関数と関係付けることができます。
  781: 各Lisp関数に対して、あらかじめ定義された字下げパターンの中から選んだり、
  782: Lispプログラムで任意のものを定義したりできます。
  784: @c   The standard pattern of indentation is as follows: the second line of the
  785: @c expression is indented under the first argument, if that is on the same
  786: @c line as the beginning of the expression; otherwise, the second line is
  787: @c indented underneath the function name.  Each following line is indented
  788: @c under the previous line whose nesting depth is the same.
  789: 字下げの標準パターンは、つぎのとおりです。
  790: 式の開始行に関数呼び出しの引数がある場合は、
  791: 最初の引数の直下に2行目がくるように字下げします。
  792: それ以外の場合は、関数名の直下に2行目がくるように字下げします。
  793: 続く各行は、入れ子の深さが同じである行の字下げと同じになります。
  795: @vindex lisp-indent-offset
  796: @c   If the variable @code{lisp-indent-offset} is non-@code{nil}, it overrides
  797: @c the usual indentation pattern for the second line of an expression, so that
  798: @c such lines are always indented @code{lisp-indent-offset} more columns than
  799: @c the containing list.
  800: 変数@code{lisp-indent-offset}が@code{nil}以外ならば、
  801: 式の2行目に対する通常の字下げパターンを無効にして、
  802: 式の開始桁からつねに@code{lisp-indent-offset}だけ字下げします。
  804: @vindex lisp-body-indent
  805: @c   The standard pattern is overridden for certain functions.  Functions
  806: @c whose names start with @code{def} always indent the second line by
  807: @c @code{lisp-body-indent} extra columns beyond the open-parenthesis
  808: @c starting the expression.
  809: 標準パターンが使用されない関数もいくつかあります。
  810: 名前が@code{def}で始まる関数に対しては、
  811: 式を開始する開き括弧の桁位置に@code{lisp-body-indent}を加えた桁位置へ
  812: 2行目がくるように字下げします。
  814: @c   The standard pattern can be overridden in various ways for individual
  815: @c functions, according to the @code{lisp-indent-function} property of the
  816: @c function name.  There are four possibilities for this property:
  817: 関数名の属性@code{lisp-indent-function}を変更すれば、
  818: 各関数ごとに標準パターン以外の字下げを施せます。
  819: この属性が取りえる値にはつぎの4つがあります。
  821: @table @asis
  822: @item @code{nil}
  823: @c This is the same as no property; the standard indentation pattern is used.
  824: 属性がないのと同じ。標準の字下げパターンを使用する。 
  825: @item @code{defun}
  826: @c The pattern used for function names that start with @code{def} is used for
  827: @c this function also.
  828: 名前が@code{def}で始まる関数に用いる字下げパターンを使用する。
  829: @c @item a number, @var{number}
  830: @item 数値 @var{number}
  831: @c The first @var{number} arguments of the function are
  832: @c @dfn{distinguished} arguments; the rest are considered the @dfn{body}
  833: @c of the expression.  A line in the expression is indented according to
  834: @c whether the first argument on it is distinguished or not.  If the
  835: @c argument is part of the body, the line is indented @code{lisp-body-indent}
  836: @c more columns than the open-parenthesis starting the containing
  837: @c expression.  If the argument is distinguished and is either the first
  838: @c or second argument, it is indented @emph{twice} that many extra columns.
  839: @c If the argument is distinguished and not the first or second argument,
  840: @c the standard pattern is followed for that line.
  841: 関数の最初の@var{number}個の引数を@dfn{区別された}引数と呼び、
  842: 残りを式の@dfn{本体}と呼ぶ。
  843: 行の最初の引数が区別された引数かどうかによって、各行の字下げが異なる。
  844: 引数が本体の一部ならば、それを含んだ式を開始する開き括弧の桁位置に
  845: @code{lisp-body-indent}を加えた桁位置へ字下げする。
  846: 引数が区別された引数で最初か2番目ならば、
  847: @code{lisp-body-indent}の@emph{2倍}を加えた桁位置へ字下げする。
  848: 引数が区別された引数であっても3番目以降ならば、標準パターンを適用する。
  849: @c @item a symbol, @var{symbol}
  850: @item シンボル@var{symbol}
  851: @c @var{symbol} should be a function name; that function is called to
  852: @c calculate the indentation of a line within this expression.  The
  853: @c function receives two arguments:
  854: @var{symbol}は関数名であること。
  855: この関数は、当該式の字下げ幅を計算する。
  856: この関数はつぎの2つの引数を受け取る。
  857: @table @asis
  858: @item @var{state}
  859: @c The value returned by @code{parse-partial-sexp} (a Lisp primitive for
  860: @c indentation and nesting computation) when it parses up to the
  861: @c beginning of this line.
  862: 当該行の先頭までを解析したときの@code{parse-partial-sexp}
  863: (字下げと入れ子の計算を行うLispの基本的な関数)の戻り値。
  864: @item @var{pos}
  865: @c The position at which the line being indented begins.
  866: 字下げ対象の行の開始位置。
  867: @end table
  868: @noindent
  869: @c It should return either a number, which is the number of columns of
  870: @c indentation for that line, or a list whose car is such a number.  The
  871: @c difference between returning a number and returning a list is that a
  872: @c number says that all following lines at the same nesting level should
  873: @c be indented just like this one; a list says that following lines might
  874: @c call for different indentations.  This makes a difference when the
  875: @c indentation is being computed by @kbd{C-M-q}; if the value is a
  876: @c number, @kbd{C-M-q} need not recalculate indentation for the following
  877: @c lines until the end of the list.
  878: この関数は、当該行に対する字下げ幅の桁数、あるいは、
  879: リストのcarがそのような数値であるリストを返す必要がある。
  880: 数値を返した場合は、括弧の入れ子レベルが同じ行に対しては
  881: 同じ字下げ幅を意味する。
  882: リストを返した場合は、後続の行に対しては字下げ幅が異なる可能性を意味する。
  883: このような差異は、@kbd{C-M-q}で字下げを計算するときに現れる。
  884: 数値が返された場合、@kbd{C-M-q}は、リストの末尾に達するまでは、
  885: 字下げの再計算を行う必要がない。
  886: @end table
  888: @node C Indent, Custom C Indent, Lisp Indent, Program Indent
  889: @c @subsection Commands for C Indentation
  890: @subsection Cの字下げコマンド
  892: @c   Here are the commands for indentation in C mode and related modes:
  893: ここでは、Cモードとその関連モードにおける字下げコマンドを紹介します。
  895: @table @code
  896: @item C-c C-q
  897: @c @kindex C-c C-q @r{(C mode)}
  898: @kindex C-c C-q @r{(Cモード)}
  899: @findex c-indent-defun
  900: @c Reindent the current top-level function definition or aggregate type
  901: @c declaration (@code{c-indent-defun}).
  902: 現在のトップレベルの関数定義、あるいは、型宣言の集まりを字下げし直す
  903: (@code{c-indent-defun})。
  905: @item C-M-q
  906: @c @kindex C-M-q @r{(C mode)}
  907: @kindex C-M-q @r{(Cモード)}
  908: @findex c-indent-exp
  909: @c Reindent each line in the balanced expression that follows point
  910: @c (@code{c-indent-exp}).  A prefix argument inhibits error checking and
  911: @c warning messages about invalid syntax.
  912: ポイントのうしろにある釣り合った式の中の各行を字下げし直す
  913: (@code{c-indent-exp})。
  914: 前置引数を指定すると、
  915: 不正な構文に対する検査をせずに、警告メッセージも発しない。
  917: @item @key{TAB}
  918: @findex c-indent-command
  919: @c Reindent the current line, and/or in some cases insert a tab character
  920: @c (@code{c-indent-command}).
  921: 現在行を字下げし直すか、タブ文字を挿入する
  922: (@code{c-indent-command})。
  924: @c If @code{c-tab-always-indent} is @code{t}, this command always reindents
  925: @c the current line and does nothing else.  This is the default.
  926: @code{c-tab-always-indent}が@code{t}ならば、
  927: 現在行を字下げし直すだけで、他には何もしない。
  928: これがデフォルト。
  930: @c If that variable is @code{nil}, this command reindents the current line
  931: @c only if point is at the left margin or in the line's indentation;
  932: @c otherwise, it inserts a tab (or the equivalent number of spaces,
  933: @c if @code{indent-tabs-mode} is @code{nil}).
  934: この変数が@code{nil}ならば、
  935: ポイントが左端か字下げの余白部分にある場合に限り、字下げし直す。
  936: さもなければ、タブ
  937: (あるいは、@code{indent-tabs-mode}が@code{nil}ならば、
  938: 等価な個数の空白)を挿入する。
  940: @c Any other value (not @code{nil} or @code{t}) means always reindent the
  941: @c line, and also insert a tab if within a comment, a string, or a
  942: @c preprocessor directive.
  943: 上記の(@code{nil}や@code{t})以外の値であれば、通常どおり字下げし直す。
  944: ただし、コメント、文字列、プリプロセッサ指令の内側では、タブを挿入する。
  946: @item C-u @key{TAB}
  947: @c Reindent the current line according to its syntax; also rigidly reindent
  948: @c any other lines of the expression that starts on the current line.
  949: @c @xref{Multi-line Indent}.
  950: 現在行の構文に従って現在行を字下げし直す。
  951: なお、現在行から始まる式を構成する行も同じ幅だけ字下げし直す。
  952: @pxref{Multi-line Indent}。
  953: @end table
  955: @c   To reindent the whole current buffer, type @kbd{C-x h C-M-\}.  This
  956: @c first selects the whole buffer as the region, then reindents that
  957: @c region.
  958: カレントバッファ全体を字下げし直すには、
  959: @kbd{C-x h C-M-\}と打ちます。
  960: これは、まず、バッファ全体をリージョンとしてから、
  961: そのリージョンを字下げし直します。
  963: @c   To reindent the current block, use @kbd{C-M-u C-M-q}.  This moves
  964: @c to the front of the block and then reindents it all.
  965: カレントブロックを字下げし直すには、@kbd{C-M-u C-M-q}と打ちます。
  966: これは、まず、ブロックの先頭に移動してから、
  967: ブロック全体を字下げし直します。
  969: @node Custom C Indent,  , C Indent, Program Indent
  970: @c @subsection Customizing C Indentation
  971: @subsection Cの字下げのカスタマイズ
  973: @c   C mode and related modes use a simple yet flexible mechanism for
  974: @c customizing indentation.  The mechanism works in two steps: first it
  975: @c classifies the line syntactically according to its contents and context;
  976: @c second, it associates each kind of syntactic construct with an
  977: @c indentation offset which you can customize.
  978: Cモードとその関連モードでは、字下げのカスタマイズには、
  979: 単純ですが柔軟性のある機構を用いています。
  980: この機構は2段階で動作します。
  981: まず、行をその内容と文脈から構文的に分類します。
  982: つぎに、構文構成要素の各種類に、
  983: カスタマイズ可能な字下げのオフセットを対応させます。
  985: @menu
  986: * Syntactic Analysis::
  987: * Indentation Calculation::
  988: * Changing Indent Style::
  989: * Syntactic Symbols::
  990: * Variables for C Indent::
  991: * C Indent Styles::
  992: @end menu
  994: @node Syntactic Analysis, Indentation Calculation, , Custom C Indent
  995: @c @subsubsection Step 1---Syntactic Analysis
  996: @subsubsection 第1段階−−構文解析
  997: @c @cindex syntactic analysis
  998: @cindex 構文解析
 1000: @c   In the first step, the C indentation mechanism looks at the line
 1001: @c before the one you are currently indenting and determines the syntactic
 1002: @c components of the construct on that line.  It builds a list of these
 1003: @c syntactic components, each of which contains a @dfn{syntactic symbol}
 1004: @c and sometimes also a buffer position.  Some syntactic symbols describe
 1005: @c grammatical elements, for example @code{statement} and
 1006: @c @code{substatement}; others describe locations amidst grammatical
 1007: @c elements, for example @code{class-open} and @code{knr-argdecl}.
 1008: 第1段階では、Cの字下げ機構は、字下げしようとしているまえの行を調べて、
 1009: その行を構成する構文上の構成要素を決定します。
 1010: つまり、@dfn{構文シンボル}とバッファ内の相対位置を要素とする
 1011: 構文構成要素のリストを組み立てます。
 1012: 構文シンボルには、@code{statement}(文)や
 1013: @code{substatement}(部分文)のように
 1014: 文法要素を記述するものと、
 1015: @code{class-open}(クラス開始)や
 1016: @code{knr-argdecl}(K&R版引数宣言)のように文法要素のあいだの位置を
 1017: 記述するものがあります。
 1019: @c   Conceptually, a line of C code is always indented relative to the
 1020: @c indentation of some line higher up in the buffer.  This is represented
 1021: @c by the buffer positions in the syntactic component list.
 1022: 概念的には、Cのコード行は、バッファ中でそれよりまえに
 1023: あるいずれかの行に対して必ず相対的に字下げされます。
 1024: これは構文構成要素リストの中にあるバッファ内位置として表現されます。
 1026: @c   Here is an example.  Suppose we have the following code in a C++ mode
 1027: @c buffer (the line numbers don't actually appear in the buffer):
 1028: 以下に例を示します。
 1029: つぎのコードが、C++モードのバッファに入っているとしましょう
 1030: (実際にバッファに行番号が表示されるわけではない)。
 1032: @example
 1033: 1: void swap (int& a, int& b)
 1034: 2: @{
 1035: 3:   int tmp = a;
 1036: 4:   a = b;
 1037: 5:   b = tmp;
 1038: 6: @}
 1039: @end example
 1041: @c   If you type @kbd{C-c C-s} (which runs the command
 1042: @c @code{c-show-syntactic-information}) on line 4, it shows the result of
 1043: @c the indentation mechanism for that line:
 1044: 4行目で(@code{c-show-syntactic-information}を実行する)
 1045: @kbd{C-c C-s}を打つと、
 1046: その行に対する字下げ機構の結果が表示されます。
 1048: @example
 1049: ((statement . 32))
 1050: @end example
 1052: @c   This indicates that the line is a statement and it is indented
 1053: @c relative to buffer position 32, which happens to be the @samp{i} in
 1054: @c @code{int} on line 3.  If you move the cursor to line 3 and type
 1055: @c @kbd{C-c C-s}, it displays this:
 1056: これは、その行が文であり、
 1057: バッファ内位置32に対して相対的に字下げされていることを示します。
 1058: バッファ内位置32は、3行目の@code{int}の@samp{i}にあたります。
 1059: カーソルを3行目に動かして@kbd{C-c C-s}と打つと、
 1060: 今度はつぎのように表示されます。
 1062: @example
 1063: ((defun-block-intro . 28))
 1064: @end example
 1066: @c   This indicates that the @code{int} line is the first statement in a
 1067: @c block, and is indented relative to buffer position 28, which is the
 1068: @c brace just after the function header.
 1069: この結果は、@code{int}行がブロックの最初の文であり、
 1070: バッファ内位置28に対して相対的に字下げされていることを示しています。
 1071: バッファ内位置28は、関数ヘッダの直後の中括弧にあたります。
 1073: @noindent
 1074: @c Here is another example:
 1075: 別の例を見てみましょう。
 1077: @example
 1078: 1: int add (int val, int incr, int doit)
 1079: 2: @{
 1080: 3:   if (doit)
 1081: 4:     @{
 1082: 5:       return (val + incr);
 1083: 6:     @}
 1084: 7:   return (val);
 1085: 8: @}
 1086: @end example
 1088: @noindent
 1089: @c Typing @kbd{C-c C-s} on line 4 displays this:
 1090: 4行目で@kbd{C-c C-s}と打つと、つぎのように表示されます。
 1092: @example
 1093: ((substatement-open . 43))
 1094: @end example
 1096: @c   This says that the brace @emph{opens} a substatement block.  By the
 1097: @c way, a @dfn{substatement} indicates the line after an @code{if},
 1098: @c @code{else}, @code{while}, @code{do}, @code{switch}, @code{for},
 1099: @c @code{try}, @code{catch}, @code{finally}, or @code{synchronized}
 1100: @c statement.
 1101: これは、中括弧が部分文のブロックを@emph{始めて}いることを示しています。
 1102: ところで、@dfn{部分文}とは、@code{if}、@code{else}、@code{while}、
 1103: @code{do}、@code{switch}、@code{for}、@code{try}、@code{catch}、
 1104: @code{finally}、@code{synchronized}のあとの行を表します。
 1106: @c @cindex syntactic component
 1107: @c @cindex syntactic symbol
 1108: @cindex 構文構成要素
 1109: @cindex 構文シンボル
 1110: @vindex c-syntactic-context
 1111: @c   Within the C indentation commands, after a line has been analyzed
 1112: @c syntactically for indentation, the variable @code{c-syntactic-context}
 1113: @c contains a list that describes the results.  Each element in this list
 1114: @c is a @dfn{syntactic component}: a cons cell containing a syntactic
 1115: @c symbol and (optionally) its corresponding buffer position.  There may be
 1116: @c several elements in a component list; typically only one element has a
 1117: @c buffer position.
 1118: Cの字下げコマンドにおいては、
 1119: 字下げのために行を構文解析し終えると、
 1120: 変数@code{c-syntactic-context}には解析結果を表すリストが入ります。
 1121: このリストの各要素は@dfn{構文構成要素}であり、
 1122: 構文シンボルと(省かれるかもしれない)対応するバッファ内位置の
 1123: コンスセルです。
 1124: 構文構成要素リストには、複数の要素が含まれることもあります。
 1125: また、典型的には、バッファ内位置を持つ要素は1つだけです。
 1127: @node Indentation Calculation, Changing Indent Style, Syntactic Analysis, Custom C Indent
 1128: @c @subsubsection  Step 2---Indentation Calculation
 1129: @subsubsection  第2段階−−字下げ計算
 1130: @c @cindex Indentation Calculation
 1131: @cindex 字下げ計算
 1133: @c   The C indentation mechanism calculates the indentation for the current
 1134: @c line using the list of syntactic components, @code{c-syntactic-context},
 1135: @c derived from syntactic analysis.  Each component is a cons cell that
 1136: @c contains a syntactic symbol and may also contain a buffer position.
 1137: Cの字下げ機構は、構文解析で得られた構文構成要素リスト
 1138: @code{c-syntactic-context}を使って、現在行の字下げ幅を計算します。
 1139: このリストの各要素は、構文シンボルを含むコンスセルですが、
 1140: バッファ内位置を含んでいる場合もあります。
 1142: @c   Each component contributes to the final total indentation of the line
 1143: @c in two ways.  First, the syntactic symbol identifies an element of
 1144: @c @code{c-offsets-alist}, which is an association list mapping syntactic
 1145: @c symbols into indentation offsets.  Each syntactic symbol's offset adds
 1146: @c to the total indentation.  Second, if the component includes a buffer
 1147: @c position, the column number of that position adds to the indentation.
 1148: @c All these offsets and column numbers, added together, give the total
 1149: @c indentation.
 1150: リストの各要素は、最終的な総字下げ量に2つの方法で寄与します。
 1151: まず、各構文シンボルに字下げオフセットを対応付ける連想リスト
 1152: @code{c-offsets-alist}から要素を探すために構文シンボルが使われます。
 1153: 各構文構成シンボルのオフセットを総字下げ量に加えます。
 1154: つぎに、リストの要素にバッファ内位置が含まれていれば、
 1155: その箇所の桁位置を字下げ量に加えます。
 1156: これらのオフセットと桁数をすべて加えることで、総字下げ量が求まります。
 1158: @c   The following examples demonstrate the workings of the C indentation
 1159: @c mechanism:
 1160: 以下の例でCの字下げ機構の動作を説明しましょう。
 1162: @example
 1163: 1: void swap (int& a, int& b)
 1164: 2: @{
 1165: 3:   int tmp = a;
 1166: 4:   a = b;
 1167: 5:   b = tmp;
 1168: 6: @}
 1169: @end example
 1171: @c   Suppose that point is on line 3 and you type @key{TAB} to reindent the
 1172: @c line.  As explained above (@pxref{Syntactic Analysis}), the syntactic
 1173: @c component list for that line is:
 1174: 3行目にポイントがあって、そこで@key{TAB}と打って字下げし直すとしましょう。
 1175: 上(@pxref{Syntactic Analysis})でも説明しましたが、
 1176: その行に対する構文構成要素リストはつぎのようになります。
 1178: @example
 1179: ((defun-block-intro . 28))
 1180: @end example
 1182: @c   In this case, the indentation calculation first looks up
 1183: @c @code{defun-block-intro} in the @code{c-offsets-alist} alist.  Suppose
 1184: @c that it finds the integer 2; it adds this to the running total
 1185: @c (initialized to zero), yielding a updated total indentation of 2 spaces.
 1186: ここでは、まず、連想リスト@code{c-offsets-alist}から
 1187: @code{defun-block-intro}を探すことから始めます。
 1188: その結果が整数値2であったとしましょう。
 1189: この値を計算中の合計(0で初期化されている)に加えて、
 1190: 総字下げ量は空白2文字と更新されます。
 1192: @c   The next step is to find the column number of buffer position 28.
 1193: @c Since the brace at buffer position 28 is in column zero, this adds 0 to
 1194: @c the running total.  Since this line has only one syntactic component,
 1195: @c the total indentation for the line is 2 spaces.
 1196: つぎの段階は、バッファ内位置28の桁位置を求めることです。
 1197: バッファ内位置28の中括弧は0桁目にあるので、
 1198: 0を計算中の合計に加えます。
 1199: 3行目には構文要素が1つしかないので、総字下げ量は空白2文字となります。
 1201: @example
 1202: 1: int add (int val, int incr, int doit)
 1203: 2: @{
 1204: 3:   if (doit)
 1205: 4:     @{
 1206: 5:       return(val + incr);
 1207: 6:     @}
 1208: 7:   return(val);
 1209: 8: @}
 1210: @end example
 1212: @c   If you type @key{TAB} on line 4, the same process is performed, but
 1213: @c with different data.  The syntactic component list for this line is:
 1214: 4行目で@key{TAB}と打つと、同じ過程を繰り返しますが、
 1215: 異なる値を使って計算されます。
 1216: この行に対する構文構成要素リストはつぎのとおりです。
 1218: @example
 1219: ((substatement-open . 43))
 1220: @end example
 1222: @c    Here, the indentation calculation's first job is to look up the
 1223: @c symbol @code{substatement-open} in @code{c-offsets-alist}.  Let's assume
 1224: @c that the offset for this symbol is 2.  At this point the running total
 1225: @c is 2 (0 + 2 = 2).  Then it adds the column number of buffer position 43,
 1226: @c which is the @samp{i} in @code{if} on line 3.  This character is in
 1227: @c column 2 on that line.  Adding this yields a total indentation of 4
 1228: @c spaces.
 1229: まずは、シンボル@code{substatement-open}を連想リスト
 1230: @code{c-offsets-alist}から探します。
 1231: このシンボルに対するオフセットが2であったとしましょう。
 1232: この時点で計算中の合計は2(0 + 2 = 2)です。
 1233: つぎに、バッファ内位置43(3行目の@code{if}の@samp{i}の位置)の
 1234: 桁位置2を加えます。
 1235: 結果として、空白4文字という総字下げ量が求まります。
 1237: @vindex c-strict-syntax-p
 1238: @c    If a syntactic symbol in the analysis of a line does not appear in
 1239: @c @code{c-offsets-alist}, it is ignored; if in addition the variable
 1240: @c @code{c-strict-syntax-p} is non-@code{nil}, it is an error.
 1241: 行を解析した結果、@code{c-offsets-alist}に現れない構文シンボルが
 1242: みつかった場合、そのシンボルは無視します。
 1243: しかし、変数@code{c-strict-syntax-p}が@code{nil}以外の値であれば、
 1244: エラーを報告します。
 1246: @node Changing Indent Style, Syntactic Symbols, Indentation Calculation, Custom C Indent
 1247: @c @subsubsection Changing Indentation Style
 1248: @subsubsection 字下げスタイルの変更
 1250: @c    There are two ways to customize the indentation style for the C-like
 1251: @c modes.  First, you can select one of several predefined styles, each of
 1252: @c which specifies offsets for all the syntactic symbols.  For more
 1253: @c flexibility, you can customize the handling of individual syntactic
 1254: @c symbols.  @xref{Syntactic Symbols}, for a list of all defined syntactic
 1255: @c symbols.
 1256: C流のモードの字下げをカスタマイズする方法は2つあります。
 1257: 1つは、あらかじめ定義されているスタイルから選択する方法です。
 1258: それぞれのスタイルでは、各構文シンボルに対するオフセットが定められています。
 1259: もう1つはより柔軟な方法で、各構文シンボルの扱い方をカスタマイズできます。
 1260: 定義されている構文シンボルの一覧については、@xref{Syntactic Symbols}。
 1262: @table @kbd
 1263: @item M-x c-set-style @key{RET} @var{style} @key{RET}
 1264: @c Select predefined indentation style @var{style}.  Type @kbd{?} when
 1265: @c entering @var{style} to see a list of supported styles; to find out what
 1266: @c a style looks like, select it and reindent some C code.
 1267: あらかじめ定義されている字下げスタイル@var{style}を選択する。
 1268: @var{style}を入力する際に@kbd{?}と打てば、
 1269: 定義済みのスタイル一覧を見ることができる。
 1270: スタイルの見栄えを調べるには、
 1271: そのスタイルを選択して、適当なCのコードを字下げし直してみる。
 1273: @item C-c C-o @var{symbol} @key{RET} @var{offset} @key{RET}
 1274: @c Set the indentation offset for syntactic symbol @var{symbol}
 1275: @c (@code{c-set-offset}).  The second argument @var{offset} specifies the
 1276: @c new indentation offset.
 1277: 構文シンボル@var{symbol}に対する字下げのオフセットを設定する
 1278: (@code{c-set-offset})。
 1279: 2番目の引数@var{offset}で、字下げのオフセットを指定する。
 1280: @end table
 1282: @c    The @code{c-offsets-alist} variable controls the amount of
 1283: @c indentation to give to each syntactic symbol.  Its value is an
 1284: @c association list, and each element of the list has the form
 1285: @c @code{(@var{syntactic-symbol} . @var{offset})}.  By changing the offsets
 1286: @c for various syntactic symbols, you can customize indentation in fine
 1287: @c detail.  To change this alist, use @code{c-set-offset} (see below).
 1288: 変数@code{c-offsets-alist}は、各構文シンボルに与える字下げ量を制御します。
 1289: この変数の値は連想リストであり、
 1290: 各要素は@code{(@var{syntactic-symbol} . @var{offset})}の形をしています。
 1291: さまざまな構文シンボルに対するオフセットを変えることで、
 1292: 字下げを細かくカスタマイズできます。
 1293: 連想リストを変更するには、@code{c-set-offset}を使います(下記参照)。 
 1295: @c    Each offset value in @code{c-offsets-alist} can be an integer, a
 1296: @c function or variable name, a list, or one of the following symbols: @code{+},
 1297: @c @code{-}, @code{++}, @code{--}, @code{*}, or @code{/}, indicating positive or negative
 1298: @c multiples of the variable @code{c-basic-offset}.  Thus, if you want to
 1299: @c change the levels of indentation to be 3 spaces instead of 2 spaces, set
 1300: @c @code{c-basic-offset} to 3.
 1301: @code{c-offsets-alist}内の各オフセットには、
 1302: 整数、関数名や変数名、あるいは、
 1303: 変数@code{c-basic-offset}の値の正負の倍数を表すシンボルである
 1304: @code{+}、@code{-}、@code{++}、@code{--}、@code{*}、
 1305: @code{/}のいずれかを設定できます。
 1306: したがって、基本の字下げ幅を空白2文字から3文字に変更したければ、
 1307: @code{c-basic-offset}に3を設定します。
 1309: @c    Using a function as the offset value provides the ultimate flexibility
 1310: @c in customizing indentation.  The function is called with a single
 1311: @c argument containing the @code{cons} of the syntactic symbol and
 1312: @c the buffer position, if any.  The function should return an integer
 1313: @c offset.
 1314: オフセットに関数を用いると、
 1315: 字下げのカスタマイズに究極の柔軟性を持たせられます。
 1316: この関数は、構文シンボルとバッファ内位置があればそれを@code{cons}したものを
 1317: 引数として呼ばれます。
 1318: 戻り値としては、整数値のオフセットを返す必要があります。
 1320: @c    If the offset value is a list, its elements are processed according
 1321: @c to the rules above until a non-@code{nil} value is found.  That value is
 1322: @c then added to the total indentation in the normal manner.  The primary
 1323: @c use for this is to combine the results of several functions.
 1324: オフセットの値がリストの場合、
 1325: 各要素は、@code{nil}以外の値がみつかるまで上の規則にしたがって処理されます。
 1326: その後、その値は、通常のように、字下げの総量に加えられます。
 1327: これは、主に、複数の関数の結果を組み合わせるために使われます。
 1329: @c @kindex C-c C-o @r{(C mode)}
 1330: @kindex C-c C-o @r{(Cモード)}
 1331: @findex c-set-offset
 1332: @c    The command @kbd{C-c C-o} (@code{c-set-offset}) is the easiest way to
 1333: @c set offsets, both interactively or in your @file{~/.emacs} file.  First
 1334: @c specify the syntactic symbol, then the offset you want.  @xref{Syntactic
 1335: @c Symbols}, for a list of valid syntactic symbols and their meanings.
 1336: 対話的に設定するにしてもファイル@file{~/.emacs}で設定するにしても、
 1337: オフセットを設定するもっとも簡単な方法は、
 1338: コマンド@kbd{C-c C-o}(@code{c-set-offset})を使うことです。
 1339: 最初の引数は構文シンボル、2番目の引数は希望のオフセットです。
 1340: 有効な構文シンボル名とその意味の一覧は、@xref{Syntactic Symbols}。
 1342: @node Syntactic Symbols, Variables for C Indent, Changing Indent Style, Custom C Indent
 1343: @c @subsubsection Syntactic Symbols
 1344: @subsubsection 構文シンボル
 1346: @c    Here is a table of valid syntactic symbols for indentation in C and
 1347: @c related modes, with their syntactic meanings.  Normally, most of these
 1348: @c symbols are assigned offsets in @code{c-offsets-alist}.
 1349: Cモードや関連するモードの字下げに対して有効な構文シンボルを、
 1350: 構文上の意味とともに、以下に示します。
 1351: これらのほとんどのシンボルには、
 1352: @code{c-offsets-alist}でオフセットが与えられています。
 1354: @table @code
 1355: @item string
 1356: @c Inside a multi-line string.
 1357: 複数行におよぶ文字列の内側。
 1359: @item c
 1360: @c Inside a multi-line C style block comment.
 1361: 複数行におよぶCスタイルのブロックコメントの内側。
 1363: @item defun-open
 1364: @c On a brace that opens a function definition.
 1365: 関数定義を開始する中括弧。
 1367: @item defun-close
 1368: @c On a brace that closes a function definition.
 1369: 関数定義を終了する中括弧。
 1371: @item defun-block-intro
 1372: @c In the first line in a top-level defun.
 1373: トップレベルの関数定義の最初の行。
 1375: @item class-open
 1376: @c On a brace that opens a class definition.
 1377: クラス定義を開始する中括弧。
 1379: @item class-close
 1380: @c On a brace that closes a class definition.
 1381: クラス定義を終了する中括弧。
 1383: @item inline-open
 1384: @c On a brace that opens an in-class inline method.
 1385: クラス内のインラインメソッドを開始する中括弧。
 1387: @item inline-close
 1388: @c On a brace that closes an in-class inline method.
 1389: クラス内のインラインメソッドを終了する中括弧。
 1391: @item extern-lang-open
 1392: @c On a brace that opens an external language block.
 1393: 外部言語ブロックを開始する中括弧。
 1395: @item extern-lang-close
 1396: @c On a brace that closes an external language block.
 1397: 外部言語ブロックを終了する中括弧。
 1399: @item func-decl-cont
 1400: @c The region between a function definition's argument list and the defun
 1401: @c opening brace (excluding K&R function definitions).  In C, you cannot
 1402: @c put anything but whitespace and comments between them; in C++ and Java,
 1403: @c @code{throws} declarations and other things can appear in this context.
 1404: 関数定義の引数リストと関数定義の本体を開始する中括弧のあいだの領域。
 1405: ただし、K&R版の関数定義を除く。
 1406: Cでは、この部分に空文字やコメント以外は置けない。
 1407: C++やJavaでは、@code{throws}宣言などを置ける。
 1409: @item knr-argdecl-intro
 1410: @c On the first line of a K&R C argument declaration.
 1411: K&R版Cの引数宣言の最初の行。
 1413: @item knr-argdecl
 1414: @c In one of the subsequent lines in a K&R C argument declaration.
 1415: K&R版Cの引数宣言の2行目以降。
 1417: @item topmost-intro
 1418: @c On the first line in a topmost construct definition.
 1419: 最上位の言語構成要素の最初の行。
 1421: @item topmost-intro-cont
 1422: @c On the topmost definition continuation lines.
 1423: 最上位の言語構成要素の2行目以降。
 1425: @item member-init-intro
 1426: @c On the first line in a member initialization list.
 1427: (構造体の)メンバ初期化リストの最初の行。
 1429: @item member-init-cont
 1430: @c On one of the subsequent member initialization list lines.
 1431: (構造体の)メンバ初期化リストの2行目以降。
 1433: @item inher-intro
 1434: @c On the first line of a multiple inheritance list.
 1435: 多重継承リストの最初。
 1437: @item inher-cont
 1438: @c On one of the subsequent multiple inheritance lines.
 1439: 多重継承リストの2行目以降。
 1441: @item block-open
 1442: @c On a statement block open brace.
 1443: 文ブロックを開始する中括弧。
 1445: @item block-close
 1446: @c On a statement block close brace.
 1447: 文ブロックを終了する中括弧。
 1449: @item brace-list-open
 1450: @c On the opening brace of an @code{enum} or @code{static} array list.
 1451: @code{enum}のリストや静的配列の初期化リストを開始する中括弧。
 1453: @item brace-list-close
 1454: @c On the closing brace of an @code{enum} or @code{static} array list.
 1455: @code{enum}のリストや静的配列の初期化リストを終了する中括弧。
 1457: @item brace-list-intro
 1458: @c On the first line in an @code{enum} or @code{static} array list.
 1459: @code{enum}のリストや静的配列の初期化リストの最初の行。
 1461: @item brace-list-entry
 1462: @c On one of the subsequent lines in an @code{enum} or @code{static} array
 1463: @c list.
 1464: @code{enum}のリストや静的配列の初期化リストの2行目以降。
 1466: @item brace-entry-open
 1467: @c On one of the subsequent lines in an @code{enum} or @code{static} array
 1468: @c list, when the line begins with an open brace.
 1469: 行が開き中括弧で始まるときの、
 1470: @code{enum}のリストや静的配列の初期化リストの2行目以降。
 1472: @item statement
 1473: @c On an ordinary statement.
 1474: 通常の文。
 1476: @item statement-cont
 1477: @c On a continuation line of a statement.
 1478: 文の継続行。
 1480: @item statement-block-intro
 1481: @c On the first line in a new statement block.
 1482: 新規文ブロックの最初の行。
 1484: @item statement-case-intro
 1485: @c On the first line in a @code{case} ``block.''
 1486: @code{case}ブロックの最初の行。
 1488: @item statement-case-open
 1489: @c On the first line in a @code{case} block starting with brace.
 1490: 中括弧で始まる@code{case}ブロックの最初の行。
 1492: @item inexpr-statement
 1493: @c On a statement block inside an expression.  This is used for a GNU
 1494: @c extension to the C language, and for Pike special functions that take a
 1495: @c statement block as an argument.
 1496: 式の内側にある文ブロック。
 1497: これは、C言語のGNU拡張や、
 1498: 文ブロックを引数としてとるPikeの特殊関数に用いる。
 1500: @item inexpr-class
 1501: @c On a class definition inside an expression.  This is used for anonymous
 1502: @c classes and anonymous array initializers in Java.
 1503: 式の内側にあるクラス定義。
 1504: これは、Javaの無名クラスや無名配列の初期化式に用いる。
 1506: @item substatement
 1507: @c On the first line after an @code{if}, @code{while}, @code{for},
 1508: @c @code{do}, or @code{else}.
 1509: @code{if}、@code{while}、@code{for}、
 1510: @code{do}、@code{else}の直後の最初の行
 1512: @item substatement-open
 1513: @c On the brace that opens a substatement block.
 1514: substatementのブロックを開始する中括弧。
 1516: @item case-label
 1517: @c On a @code{case} or @code{default} label.
 1518: @code{case}または@code{default}ラベルを表す。
 1520: @item access-label
 1521: @c On a C++ @code{private}, @code{protected}, or @code{public} access label.
 1522: C++のアクセス指定子@code{private}、@code{protected}、@code{public}を表す。
 1524: @item label
 1525: @c On any ordinary label.
 1526: 通常のラベル。
 1528: @item do-while-closure
 1529: @c On the @code{while} that ends a @code{do}-@code{while} construct.
 1530: @code{do}-@code{while}文の@code{while}。
 1532: @item else-clause
 1533: @c On the @code{else} of an @code{if}-@code{else} construct.
 1534: @code{if}-@code{else}文の@code{else}。
 1536: @item catch-clause
 1537: @c On the @code{catch} and @code{finally} lines in
 1538: @c @code{try}@dots{}@code{catch} constructs in C++ and Java.
 1539: C++やJavaの@code{try}@dots{}@code{catch}構成の
 1540: @code{catch}行や@code{finally}行。
 1542: @item comment-intro
 1543: @c On a line containing only a comment introduction.
 1544: コメントの導入部分だけを含んだ行。
 1546: @item arglist-intro
 1547: @c On the first line in an argument list.
 1548: 引数リストの最初の行。
 1550: @item arglist-cont
 1551: @c On one of the subsequent argument list lines when no arguments follow on
 1552: @c the same line as the arglist opening parenthesis.
 1553: 引数リストを開始する括弧の行に引数がない場合、
 1554: 引数リストの2行目以降。
 1556: @item arglist-cont-nonempty
 1557: @c On one of the subsequent argument list lines when at least one argument
 1558: @c follows on the same line as the arglist opening parenthesis.
 1559: 引数リストを開始する括弧の行に少なくとも1つの引数がある場合、
 1560: 引数リストの2行目以降。
 1562: @item arglist-close
 1563: @c On the closing parenthesis of an argument list.
 1564: 引数リストを終了する括弧。
 1566: @item stream-op
 1567: @c On one of the lines continuing a stream operator construct.
 1568: ストリーム演算子を用いた式が継続する行。
 1570: @item inclass
 1571: @c On a construct that is nested inside a class definition.  The
 1572: @c indentation is relative to the open brace of the class definition.
 1573: クラス定義の内側に入れ子になった言語構成要素。
 1574: 字下げは、クラス定義の開き中括弧に相対である。
 1576: @item inextern-lang
 1577: @c On a construct that is nested inside an external language block.
 1578: 外部言語ブロックの内側に入れ子になった言語構成要素。
 1580: @item inexpr-statement
 1581: @c On the first line of statement block inside an expression.  This is used
 1582: @c for the GCC extension to C that uses the syntax @code{(@{ @dots{} @})}.
 1583: @c It is also used for the special functions that takes a statement block
 1584: @c as an argument in Pike.
 1585: 式の内側の文ブロックの最初の行。
 1586: これは、構文@code{(@{ @dots{} @})}を使うCに対するGCC拡張に用いる。
 1587: 文ブロックを引数としてとるPikeの特殊関数にも用いる。
 1589: @item inexpr-class
 1590: @c On the first line of a class definition inside an expression.  This is
 1591: @c used for anonymous classes and anonymous array initializers in Java.
 1592: 式の内側のクラス定義の最初の行。
 1593: これは、Javaの無名クラスや無名配列の初期化式に用いる。
 1595: @item cpp-macro
 1596: @c On the start of a cpp macro.
 1597: cppマクロの開始。
 1599: @item friend
 1600: @c On a C++ @code{friend} declaration.
 1601: C++の@code{friend}宣言。
 1603: @item objc-method-intro
 1604: @c On the first line of an Objective-C method definition.
 1605: Objective-Cのメソッド定義の最初の行。
 1607: @item objc-method-args-cont
 1608: @c On one of the lines continuing an Objective-C method definition.
 1609: Objective-Cのメソッド定義を継続する行。
 1611: @item objc-method-call-cont
 1612: @c On one of the lines continuing an Objective-C method call.
 1613: Objective-Cのメソッド呼び出しを継続する行。
 1615: @item inlambda
 1616: @c Like @code{inclass}, but used inside lambda (i.e. anonymous) functions.  Only
 1617: @c used in Pike.
 1618: @code{inclass}と同様だが、ラムダ(つまり、無名)関数の内側に用いる。
 1619: Pikeのみで用いる。
 1621: @item lambda-intro-cont
 1622: @c On a line continuing the header of a lambda function, between the
 1623: @c @code{lambda} keyword and the function body.  Only used in Pike.
 1624: キーワード@code{lambda}と関数本体のあいだの、
 1625: ラムダ関数のヘッダーの継続行。
 1626: Pikeのみで用いる。
 1627: @end table
 1629: @node Variables for C Indent, C Indent Styles, Syntactic Symbols, Custom C Indent
 1630: @c @subsubsection Variables for C Indentation
 1631: @subsubsection Cの字下げのための変数
 1633: @c   This section describes additional variables which control the
 1634: @c indentation behavior of C mode and related mode.
 1635: 本節では、Cモードとその関連モードの字下げ動作を制御する、
 1636: モードに固有な変数について説明します。
 1638: @table @code
 1639: @item c-offsets-alist
 1640: @vindex c-offsets-alist
 1641: @c Association list of syntactic symbols and their indentation offsets.
 1642: @c You should not set this directly, only with @code{c-set-offset}.
 1643: @c @xref{Changing Indent Style}, for details.
 1644: 構文シンボルとその字下げオフセットの連想リスト。
 1645: このリストに直接に値を設定するのではなく、
 1646: @code{c-set-offset}を使うこと。
 1647: 詳細については、@pxref{Changing Indent Style}。
 1649: @item c-style-alist
 1650: @vindex c-style-alist
 1651: @c Variable for defining indentation styles; see below.
 1652: 字下げスタイルを定義している変数。
 1653: 下記参照。
 1655: @item c-basic-offset
 1656: @vindex c-basic-offset
 1657: @c Amount of basic offset used by @code{+} and @code{-} symbols in
 1658: @c @code{c-offsets-alist}.@refill 
 1659: @code{c-offsets-alist}の中で、
 1660: シンボル@code{+}や@code{-}が用いるオフセットの基本量。
 1662: @item c-special-indent-hook
 1663: @vindex c-special-indent-hook
 1664: @c Hook for user-defined special indentation adjustments.  This hook is
 1665: @c called after a line is indented by C mode and related modes.
 1666: ユーザー定義の特別な字下げ調整用のフック。
 1667: このフックは、Cモードやその関連モードが行の字下げを終えたあとに呼ばれる。
 1668: @end table
 1670: @c   The variable @code{c-style-alist} specifies the predefined indentation
 1671: @c styles.  Each element has form @code{(@var{name}
 1672: @c @var{variable-setting}@dots{})}, where @var{name} is the name of the
 1673: @c style.  Each @var{variable-setting} has the form @code{(@var{variable}
 1674: @c . @var{value})}; @var{variable} is one of the customization variables
 1675: @c used by C mode, and @var{value} is the value for that variable when
 1676: @c using the selected style.
 1677: 変数@code{c-style-alist}は、
 1678: あらかじめ定義された字下げスタイルを保持します。
 1679: 各要素は@code{(@var{name} @var{variable-setting}@dots{})}の形をしていて、
 1680: @var{name}はスタイル名です。
 1681: また、各@var{variable-setting}は、
 1682: @code{(@var{variable} . @var{value})}の形をしています。
 1683: @var{variable}には、Cモードが使用するカスタマイズ用変数の1つを指定します。
 1684: @var{value}は、選択されたスタイルが使われるときの@var{variable}の値です。
 1686: @c   When @var{variable} is @code{c-offsets-alist}, that is a special case:
 1687: @c @var{value} is appended to the front of the value of @code{c-offsets-alist}
 1688: @c instead of replacing that value outright.  Therefore, it is not necessary
 1689: @c for @var{value} to specify each and every syntactic symbol---only those
 1690: @c for which the style differs from the default.
 1691: @var{variable}が@code{c-offsets-alist}である場合は、特殊なケースです。
 1692: @code{c-offsets-alist}の値を@var{value}の値で置き換えるのではなく、
 1693: @code{c-offsets-alist}の値の先頭に@var{value}を追加します。
 1694: したがって、@var{value}にすべての構文シンボルを設定する必要はありません。
 1695: デフォルトと異なる構文シンボルだけを単に設定すればよいのです。
 1697: @c   The indentation of lines containing only comments is also affected by
 1698: @c the variable @code{c-comment-only-line-offset} (@pxref{Comments in C}).
 1699: コメントだけを含んだ行の字下げも、
 1700: 変数@code{c-comment-only-line-offset}
 1701: (@pxref{Comments in C})に影響されます。
 1703: @node C Indent Styles,  , Variables for C Indent, Custom C Indent
 1704: @c @subsubsection C Indentation Styles
 1705: @subsubsection Cの字下げスタイル
 1706: @c @cindex c indentation styles
 1707: @cindex Cの字下げスタイル
 1709: @c   A @dfn{C style} is a collection of indentation style customizations.
 1710: @c Emacs comes with several predefined indentation styles for C and related
 1711: @c modes, including @code{gnu}, @code{k&r}, @code{bsd}, @code{stroustrup},
 1712: @c @code{linux}, @code{python}, @code{java}, @code{whitesmith},
 1713: @c @code{ellemtel}, and @code{cc-mode}.  The default style is @code{gnu}.
 1714: @dfn{Cスタイル}とは、カスタマイズされた字下げスタイルの集合です。
 1715: Emacsには、Cモードや関連するモードのためにあらかじめ定義された、
 1716: @code{gnu}、@code{k&r}、@code{bsd}、@code{stroustrup}、
 1717: @code{linux}、@code{python}、@code{java}、@code{whitesmith}、
 1718: @code{ellemtel}、@code{cc-mode}といった字下げスタイルがあります。
 1719: デフォルトのスタイルは@code{gnu}です。
 1721: @findex c-set-style
 1722: @vindex c-default-style
 1723: @c   To choose the style you want, use the command @kbd{M-x c-set-style}.
 1724: @c Specify a style name as an argument (case is not significant in C style
 1725: @c names).  The chosen style only affects newly visited buffers, not those
 1726: @c you are already editing.  You can also set the variable
 1727: @c @code{c-default-style} to specify the style for various major modes.
 1728: @c Its value should be an alist, in which each element specifies one major
 1729: @c mode and which indentation style to use for it.  For example,
 1730: 望みのスタイルを選択するには、コマンド@kbd{M-x c-set-style}を使います。
 1731: 引数としてスタイル名を指定します
 1732: (Cスタイル名では大文字小文字は区別しない)。
 1733: 選択したスタイルは新たに訪問したバッファにだけ影響し、
 1734: すでに編集中のバッファには影響しません。
 1735: さまざまなメジャーモードのスタイルを指定するために
 1736: 変数@code{c-default-style}を設定することもできます。
 1737: その値は連想リストである必要があり、
 1738: その各要素は、1つのメジャーモードと
 1739: そのモードで使う字下げスタイルを指定します。
 1740: たとえば、
 1742: @example
 1743: (setq c-default-style
 1744:       '((java-mode . "java") (other . "gnu")))
 1745: @end example
 1747: @noindent
 1748: @c specifies an explicit choice for Java mode, and the default @samp{gnu}
 1749: @c style for the other C-like modes.
 1750: は、Javaモードには対しては選択を明示し、
 1751: 他のC流モードには@samp{gnu}をデフォルトとします。
 1753: @findex c-add-style
 1754: @c   To define a new C indentation style, call the function
 1755: @c @code{c-add-style}:
 1756: Cの字下げスタイルを新たに定義するには、関数@code{c-add-style}を呼びます。
 1758: @example
 1759: (c-add-style @var{name} @var{values} @var{use-now})
 1760: @end example
 1762: @noindent
 1763: @c Here @var{name} is the name of the new style (a string), and
 1764: @c @var{values} is an alist whose elements have the form
 1765: @c @code{(@var{variable} . @var{value})}.  The variables you specify should
 1766: @c be among those documented in @ref{Variables for C Indent}.
 1767: ここで、@var{name}は新しいスタイルの名前(文字列)、
 1768: @var{values}は要素が@code{(@var{variable} . @var{value})}の形をした
 1769: 連想リストです。
 1770: @var{variable}には、@ref{Variables for C Indent}に
 1771: 書かれているものを指定してください。
 1773: @c If @var{use-now} is non-@code{nil}, @code{c-add-style} switches to the
 1774: @c new style after defining it.
 1775: @var{use-now}が@code{nil}以外ならば、
 1776: 新しいスタイルの定義後すぐにそれに切り替えます。
 1778: @node Matching, Comments, Program Indent, Programs
 1779: @c @section Automatic Display Of Matching Parentheses
 1780: @section 対応している括弧の自動表示
 1781: @c @cindex matching parentheses
 1782: @c @cindex parentheses
 1783: @cindex 対応している括弧
 1784: @cindex 括弧
 1786: @c   The Emacs parenthesis-matching feature is designed to show
 1787: @c automatically how parentheses match in the text.  Whenever you type a
 1788: @c self-inserting character that is a closing delimiter, the cursor moves
 1789: @c momentarily to the location of the matching opening delimiter, provided
 1790: @c that is on the screen.  If it is not on the screen, some text near it is
 1791: @c displayed in the echo area.  Either way, you can tell what grouping is
 1792: @c being closed off.
 1793: Emacsの括弧の対応付け機能は、テキスト中でどのように括弧が
 1794: 対応しているか自動的に表示するよう設計されています。
 1795: 閉じ区切りである自己挿入文字を打つと、
 1796: それに対応する開き区切りが画面上にあれば、
 1797: その箇所にほんのしばらくカーソルが移動します。
 1798: 画面上になければ、エコー領域にその箇所の近くにある文字列を表示します。
 1799: いずれにしても、1つのまとまりが閉じたことが判ります。
 1801: @c   In Lisp, automatic matching applies only to parentheses.  In C, it
 1802: @c applies to braces and brackets too.  Emacs knows which characters to regard
 1803: @c as matching delimiters based on the syntax table, which is set by the major
 1804: @c mode.  @xref{Syntax}.
 1805: Lispでは、括弧だけに対して自動的な対応付けを行います。
 1806: Cでは、中括弧や角括弧も対象となります。
 1807: Emacsは、メジャーモードが設定する構文テーブルに基づいて、
 1808: どの文字が対応関係にある区切りであるか判定します。
 1809: @xref{Syntax}。
 1811: @c   If the opening delimiter and closing delimiter are mismatched---such as
 1812: @c in @samp{[x)}---a warning message is displayed in the echo area.  The
 1813: @c correct matches are specified in the syntax table.
 1814: @samp{[x)}のように、開き区切りと閉じ区切りが対応しない場合、
 1815: エコー領域に警告メッセージを表示します。
 1816: 正しい対応関係は構文テーブルで指定します。
 1818: @vindex blink-matching-paren
 1819: @vindex blink-matching-paren-distance
 1820: @vindex blink-matching-delay
 1821: @c   Three variables control parenthesis match display.
 1822: @c @code{blink-matching-paren} turns the feature on or off; @code{nil}
 1823: @c turns it off, but the default is @code{t} to turn match display on.
 1824: @c @code{blink-matching-delay} says how many seconds to wait; the default
 1825: @c is 1, but on some systems it is useful to specify a fraction of a
 1826: @c second.  @code{blink-matching-paren-distance} specifies how many
 1827: @c characters back to search to find the matching opening delimiter.  If
 1828: @c the match is not found in that far, scanning stops, and nothing is
 1829: @c displayed.  This is to prevent scanning for the matching delimiter from
 1830: @c wasting lots of time when there is no match.  The default is 12,000.
 1831: 括弧の対応表示を制御する変数は3つあります。
 1832: @code{blink-maching-paren}は、対応表示機能をオンまたはオフにします。
 1833: @code{nil}を設定すると対応表示機能はオフになりますが、
 1834: デフォルトは@code{t}であり、対応表示を行います。
 1835: @code{blink-matching-delay}は、対応表示のために待つ秒数を指定します。
 1836: デフォルトは1秒ですが、システムによっては何分の1秒のほうが便利かもしれません。
 1837: @code{blink-matching-paren-distance}は、
 1838: 対応している開き区切りをみつけるために、
 1839: 何文字分まで戻って探索するか指定します。
 1840: その範囲内で対応するものがみつからなければ、走査をやめて何も表示しません。
 1841: これは、存在しもしない対応する区切りを探すことに
 1842: 時間を浪費するのを防ぐためです。
 1843: デフォルトは12,000です。
 1845: @c @cindex Show Paren mode
 1846: @cindex 対応括弧表示(Show Paren)モード
 1847: @cindex show-parenモード
 1848: @cindex モード、Show Paren
 1849: @findex show-paren-mode
 1850: @c   When using X Windows, you can request a more powerful alternative kind
 1851: @c of automatic parenthesis matching by enabling Show Paren mode.  This
 1852: @c mode turns off the usual kind of matching parenthesis display and
 1853: @c instead uses highlighting to show what matches.  Whenever point is after
 1854: @c a close parenthesis, the close parenthesis and its matching open
 1855: @c parenthesis are both highlighted; otherwise, if point is before an open
 1856: @c parenthesis, the matching close parenthesis is highlighted.  (There is
 1857: @c no need to highlight the open parenthesis after point because the cursor
 1858: @c appears on top of that character.)  Use the command @kbd{M-x
 1859: @c show-paren-mode} to enable or disable this mode.
 1860: Xウィンドウシステムを使用している場合、
 1861: 対応括弧表示(show-paren)モードにすれば、
 1862: より強力な括弧の対応表示を利用できます。
 1863: このモードは、通常の対応表示をオフにするかわりに、
 1864: 対応する括弧同士を示すために強調表示を行います。
 1865: ポイントが閉じ括弧の直後にあるときには、
 1866: 閉じ括弧とそれに対応する開き括弧の両方を強調表示します。
 1867: ポイントが開き括弧の直前にあるときには、対応する閉じ括弧を強調表示します。
 1868: (ポイントの直後に開き括弧があるときには、
 1869: カーソルが開き括弧に重ねて表示されるので、
 1870: 開き括弧を強調表示する必要はない。)
 1871: このモードをオン/オフするには、
 1872: コマンド@kbd{M-x show-paren-mode}を使います。
 1874: @node Comments, Balanced Editing, Matching, Programs
 1875: @c @section Manipulating Comments
 1876: @section コメントの操作
 1877: @c @cindex comments
 1878: @cindex コメント
 1880: @c   Because comments are such an important part of programming, Emacs
 1881: @c provides special commands for editing and inserting comments.
 1882: コメントはプログラミングの重要な部分なので、
 1883: Emacsにはコメントの編集や挿入を行うための特別なコマンドがあります。
 1885: @menu
 1886: * Comment Commands::
 1887: * Multi-Line Comments::
 1888: * Options for Comments::
 1889: @end menu
 1891: @node Comment Commands, Multi-Line Comments, , Comments
 1892: @c @subsection Comment Commands
 1893: @subsection コメント用コマンド
 1895: @kindex M-;
 1896: @c @cindex indentation for comments
 1897: @cindex コメントの字下げ
 1898: @findex indent-for-comment
 1900: @c   The comment commands insert, kill and align comments.
 1901: コメント用コマンドはコメントの挿入、削除、および位置揃えを行います。
 1903: @c WideCommands
 1904: @table @kbd
 1905: @item M-;
 1906: @c Insert or align comment (@code{indent-for-comment}).
 1907: コメントの挿入/位置揃えを行う(@code{indent-for-comment})。
 1908: @item C-x ;
 1909: @c Set comment column (@code{set-comment-column}).
 1910: コメントの桁位置を設定する(@code{set-comment-column})。
 1911: @item C-u - C-x ;
 1912: @c Kill comment on current line (@code{kill-comment}).
 1913: 現在行のコメントをキルする(@code{kill-comment})。
 1914: @item C-M-j
 1915: @c Like @key{RET} followed by inserting and aligning a comment
 1916: @c (@code{indent-new-comment-line}).
 1917: @key{RET}に続けて、コメントの挿入/位置揃えを行う
 1918: (@code{indent-new-comment-line})。
 1919: @item M-x comment-region
 1920: @c Add or remove comment delimiters on all the lines in the region.
 1921: リージョン内の各行に対して、コメント区切りを追加/削除する。
 1922: @end table
 1924: @c   The command that creates a comment is @kbd{M-;} (@code{indent-for-comment}).
 1925: @c If there is no comment already on the line, a new comment is created,
 1926: @c aligned at a specific column called the @dfn{comment column}.  The comment
 1927: @c is created by inserting the string Emacs thinks comments should start with
 1928: @c (the value of @code{comment-start}; see below).  Point is left after that
 1929: @c string.  If the text of the line extends past the comment column, then the
 1930: @c indentation is done to a suitable boundary (usually, at least one space is
 1931: @c inserted).  If the major mode has specified a string to terminate comments,
 1932: @c that is inserted after point, to keep the syntax valid.
 1933: コメントを挿入するコマンドは@kbd{M-;}(@code{indent-for-comment})です。
 1934: 行にコメントがなければ、新規にコメントを作成して、
 1935: @dfn{コメント桁位置}と呼ばれる特定の桁に置きます。
 1936: コメントを作成する際には、Emacsが正しいと信じるコメント開始文字列
 1937: (@code{comment-start}の値。下記参照)を挿入します。
 1938: ポイントはその文字列の直後に置かれます。
 1939: コードのテキストがコメント桁位置を越えているときには、
 1940: 適当な境界に字下げします(通常は少なくとも空白1文字)。
 1941: メジャーモードでコメント終了文字列が指定されていれば、
 1942: 構文を正しく保つために、ポイントの直後にその文字列を挿入します。
 1944: @c   @kbd{M-;} can also be used to align an existing comment.  If a line
 1945: @c already contains the string that starts comments, then @kbd{M-;} just moves
 1946: @c point after it and reindents it to the conventional place.  Exception:
 1947: @c comments starting in column 0 are not moved.
 1948: @kbd{M-;}は、既存のコメントを位置揃えするためにも使えます。
 1949: 行にコメント開始文字列がすでに含まれていれば、
 1950: その文字列の直後にポイントを移動してから、適切な位置に字下げします。
 1951: 例外として、0桁目から始まるコメントは動かしません。
 1953: @c   Some major modes have special rules for indenting certain kinds of
 1954: @c comments in certain contexts.  For example, in Lisp code, comments which
 1955: @c start with two semicolons are indented as if they were lines of code,
 1956: @c instead of at the comment column.  Comments which start with three
 1957: @c semicolons are supposed to start at the left margin.  Emacs understands
 1958: @c these conventions by indenting a double-semicolon comment using @key{TAB},
 1959: @c and by not changing the indentation of a triple-semicolon comment at all.
 1960: 特定の文脈における、ある種のコメントの字下げには特殊な規則を持つ
 1961: メジャーモードもあります。
 1962: たとえば、Lispのコードでは、セミコロン2つで始まるコメントは、
 1963: コメント桁位置に揃えるのでなく、コードであるかのように字下げされます。
 1964: また、セミコロン3つで始まるコメントは左端に置くと仮定されます。
 1965: Emacsはこれらの慣習を理解していて、
 1966: セミコロン2つのコメントは@key{TAB}で字下げし、
 1967: セミコロン3つのコメントは字下げをまったく変更しません。
 1969: @example
 1970: ;; This function is just an example
 1971: ;;; Here either two or three semicolons are appropriate.
 1972: (defun foo (x)
 1973: ;;; And now, the first part of the function:
 1974:   ;; The following line adds one.
 1975:   (1+ x))           ; This line adds one.
 1976: @end example
 1978: @c   In C code, a comment preceded on its line by nothing but whitespace
 1979: @c is indented like a line of code.
 1980: Cのコードでは、コメントのまえに白文字しかない場合には、
 1981: そのコメントをコードのように字下げします。
 1983: @c   Even when an existing comment is properly aligned, @kbd{M-;} is still
 1984: @c useful for moving directly to the start of the comment.
 1985: 既存のコメントの位置が適切に揃えられている場合でも、
 1986: コメント開始直後の位置にすぐに移動するには@kbd{M-;}が便利です。
 1988: @kindex C-u - C-x ;
 1989: @findex kill-comment
 1990: @c   @kbd{C-u - C-x ;} (@code{kill-comment}) kills the comment on the current line,
 1991: @c if there is one.  The indentation before the start of the comment is killed
 1992: @c as well.  If there does not appear to be a comment in the line, nothing is
 1993: @c done.  To reinsert the comment on another line, move to the end of that
 1994: @c line, do @kbd{C-y}, and then do @kbd{M-;} to realign it.  Note that
 1995: @c @kbd{C-u - C-x ;} is not a distinct key; it is @kbd{C-x ;} (@code{set-comment-column})
 1996: @c with a negative argument.  That command is programmed so that when it
 1997: @c receives a negative argument it calls @code{kill-comment}.  However,
 1998: @c @code{kill-comment} is a valid command which you could bind directly to a
 1999: @c key if you wanted to.
 2000: @kbd{C-u - C-x ;}(@code{kill-comment})は、
 2001: 現在行にコメントがあれば、それをキルします。
 2002: コメント開始文字列のまえにある字下げもキルします。
 2003: コメントと思われるものが何もなければ、何もしません。
 2004: 他の行にコメントを再挿入するには、
 2005: その行の末尾に移動してから@kbd{C-y}と打って、
 2006: さらに、位置を再調整するために@kbd{M-;}と打ちます。
 2007: @kbd{C-u - C-x ;}はひとまとまりのキーではなく、
 2008: 負の引数を指定した@kbd{C-x ;}(@code{set-comment-column})で
 2009: あることに注意しましょう。
 2010: このコマンドは、負の引数を受け取ると、
 2011: @code{kill-comment}を呼ぶようにプログラムされています。
 2012: @code{kill-comment}は、望むならばキーに直接バインドできる通常のコマンドです。
 2014: @node Multi-Line Comments, Options for Comments, Comment Commands, Comments
 2015: @c @subsection Multiple Lines of Comments
 2016: @subsection 複数行にわたるコメント
 2018: @kindex C-M-j
 2019: @c @cindex blank lines in programs
 2020: @cindex プログラム中の空行
 2021: @findex indent-new-comment-line
 2022: @c   If you are typing a comment and wish to continue it on another line,
 2023: @c you can use the command @kbd{C-M-j} (@code{indent-new-comment-line}).
 2024: @c This terminates the comment you are typing, creates a new blank line
 2025: @c afterward, and begins a new comment indented under the old one.  When
 2026: @c Auto Fill mode is on, going past the fill column while typing a comment
 2027: @c causes the comment to be continued in just this fashion.  If point is
 2028: @c not at the end of the line when @kbd{C-M-j} is typed, the text on
 2029: @c the rest of the line becomes part of the new comment line.
 2030: コメントを入力していて別の行に継続したければ、
 2031: コマンド @kbd{C-M-j}(@code{indent-new-comment-line})を利用できます。
 2032: このコマンドは、入力中のコメントを終了して、
 2033: そのつぎに空行を作り、
 2034: 直前のコメントの直下にくるように字下げして新たなコメントを始めます。
 2035: 自動詰め込み(auto-fill)モードがオンならば、
 2036: コメントを入力中に詰め込み桁を越えると、
 2037: 同様にコメントはつぎの行に継続されます。
 2038: @kbd{C-M-j}を打ったときにポイントが行末になければ、
 2039: ポイント位置から行末までのテキストは新たなコメントの一部になります。
 2041: @findex comment-region
 2042: @c   To turn existing lines into comment lines, use the @kbd{M-x
 2043: @c comment-region} command.  It adds comment delimiters to the lines that start
 2044: @c in the region, thus commenting them out.  With a negative argument, it
 2045: @c does the opposite---it deletes comment delimiters from the lines in the
 2046: @c region.
 2047: 既存の行をコメントにするには、
 2048: コマンド@kbd{M-x comment-region}を使います。
 2049: このコマンドは、リージョン内で始まる各行にコメント区切り文字列を加えて
 2050: コメントにします。
 2051: 負の引数を指定すると逆の操作、
 2052: つまり、コメント区切り文字列を削除します。
 2054: @c   With a positive argument, @code{comment-region} duplicates the last
 2055: @c character of the comment start sequence it adds; the argument specifies
 2056: @c how many copies of the character to insert.  Thus, in Lisp mode,
 2057: @c @kbd{C-u 2 M-x comment-region} adds @samp{;;} to each line.  Duplicating
 2058: @c the comment delimiter is a way of calling attention to the comment.  It
 2059: @c can also affect how the comment is indented.  In Lisp, for proper
 2060: @c indentation, you should use an argument of two, if between defuns, and
 2061: @c three, if within a defun.
 2062: 正の引数を指定すると、@code{comment-region}は、
 2063: 追加するコメント開始文字列の最後の文字を重複させます。
 2064: つまり、引数は、その文字を何回重複させるかを示します。
 2065: たとえば、Lispモードで@kbd{C-u 2 M-x commment-region}とすると、
 2066: 各行に@samp{;;}を付加します。
 2067: コメント区切り文字を重複させるのは、コメントに注意を引き付けるためです。
 2068: また、コメントの字下げにも影響します。
 2069: Lispでは、適切な字下げになるように、
 2070: 関数定義(defun)のあいだでは引数として3を、
 2071: 関数定義の内側では引数として2を指定すべきです。
 2073: @vindex comment-padding
 2074: @c   The variable @code{comment-padding} specifies how many spaces
 2075: @c @code{comment-region} should insert on each line between the
 2076: @c comment delimiter and the line's original text.  The default is 1.
 2077: 変数@code{comment-padding}は、
 2078: @code{comment-region}がコメント区切りと各行のもとのテキストとのあいだに
 2079: 挿入する空白の個数を指定します。
 2080: デフォルトは1です。
 2082: @node Options for Comments,  , Multi-Line Comments, Comments
 2083: @c @subsection Options Controlling Comments
 2084: @subsection コメントを制御するオプション
 2086: @vindex comment-column
 2087: @kindex C-x ;
 2088: @findex set-comment-column
 2089: @c   The comment column is stored in the variable @code{comment-column}.  You
 2090: @c can set it to a number explicitly.  Alternatively, the command @kbd{C-x ;}
 2091: @c (@code{set-comment-column}) sets the comment column to the column point is
 2092: @c at.  @kbd{C-u C-x ;} sets the comment column to match the last comment
 2093: @c before point in the buffer, and then does a @kbd{M-;} to align the
 2094: @c current line's comment under the previous one.  Note that @kbd{C-u - C-x ;}
 2095: @c runs the function @code{kill-comment} as described above.
 2096: コメント桁位置は、変数@code{comment-column}に入っています。
 2097: この変数には明示的に値を設定できます。
 2098: あるいは、コマンド @kbd{C-x ;}(@code{set-comment-column})を使って、
 2099: ポイント位置の桁をコメント桁位置として設定できます。
 2100: @kbd{C-u C-x ;}は、バッファ内で現在行よりまえにある最後のコメントの桁位置を
 2101: コメント桁位置としてから、
 2102: @kbd{M-;}を行って現在行のコメントをまえのコメントの直下にくるように
 2103: 位置を揃えます。
 2104: @kbd{C-u - C-x ;}は、前述のように
 2105: 関数@code{kill-comment}を実行することに注意してください。
 2107: @c   The variable @code{comment-column} is per-buffer: setting the variable
 2108: @c in the normal fashion affects only the current buffer, but there is a
 2109: @c default value which you can change with @code{setq-default}.
 2110: @c @xref{Locals}.  Many major modes initialize this variable for the
 2111: @c current buffer.
 2112: 変数@code{comment-column}は、バッファごとの変数です。
 2113: つまり、通常の方法で設定すると、カレントバッファだけに影響しますが、
 2114: @code{setq-default}でデフォルト値を変更できます。
 2115: @xref{Locals}。
 2116: 多くのメジャーモードでは、この変数をカレントバッファ用に初期化します。
 2118: @vindex comment-start-skip
 2119: @c   The comment commands recognize comments based on the regular
 2120: @c expression that is the value of the variable @code{comment-start-skip}.
 2121: @c Make sure this regexp does not match the null string.  It may match more
 2122: @c than the comment starting delimiter in the strictest sense of the word;
 2123: @c for example, in C mode the value of the variable is @code{@t{"/\\*+
 2124: @c *"}}, which matches extra stars and spaces after the @samp{/*} itself.
 2125: @c (Note that @samp{\\} is needed in Lisp syntax to include a @samp{\} in
 2126: @c the string, which is needed to deny the first star its special meaning
 2127: @c in regexp syntax.  @xref{Regexps}.)
 2128: コメント用コマンドは、変数@code{comment-start-skip}の正規表現に基づいて
 2129: コメントを認識します。
 2130: この正規表現が空文字列には一致しないようにしてください。
 2131: 厳密にはコメント開始文字列よりも長く一致するかもしれません。
 2132: たとえば、Cモードではこの変数の値は@code{@t{"/\\*+ *"}}ですが、
 2133: これは @samp{/*}のうしろの余分なアスタリスクと空白に一致します。
 2134: (Lispの構文では、文字列中に@samp{\}を含めるために@samp{\\}とする必要がある。
 2135: この@samp{\}は、最初のアスタリスクの正規表現における特別な
 2136: 意味を抑制するために必要。
 2137: @pxref{Regexps}。)
 2139: @vindex comment-start
 2140: @vindex comment-end
 2141: @c   When a comment command makes a new comment, it inserts the value of
 2142: @c @code{comment-start} to begin it.  The value of @code{comment-end} is
 2143: @c inserted after point, so that it will follow the text that you will insert
 2144: @c into the comment.  In C mode, @code{comment-start} has the value
 2145: @c @w{@code{"/* "}} and @code{comment-end} has the value @w{@code{" */"}}.
 2146: コメント用コマンドで新たなコメントを作ると、
 2147: コメントを始めるために@code{comment-start}の値を挿入します。
 2148: また、ポイントの直後には@code{comment-end}の値が挿入されて、
 2149: これから入力するテキストのあとに続くことになります。
 2150: Cモードでは、@code{comment-start}の値は@w{@code{"/* "}}、
 2151: @code{comment-end}の値は@w{@code{" */"}}です。
 2153: @vindex comment-multi-line
 2154: @c   The variable @code{comment-multi-line} controls how @kbd{C-M-j}
 2155: @c (@code{indent-new-comment-line}) behaves when used inside a comment.  If
 2156: @c @code{comment-multi-line} is @code{nil}, as it normally is, then the
 2157: @c comment on the starting line is terminated and a new comment is started
 2158: @c on the new following line.  If @code{comment-multi-line} is not
 2159: @c @code{nil}, then the new following line is set up as part of the same
 2160: @c comment that was found on the starting line.  This is done by not
 2161: @c inserting a terminator on the old line, and not inserting a starter on
 2162: @c the new line.  In languages where multi-line comments work, the choice
 2163: @c of value for this variable is a matter of taste.
 2164: 変数@code{comment-multi-line}は、
 2165: @kbd{C-M-j}(@code{indent-new-comment-line})が
 2166: コメントの内側で使われたときの動作を制御します。
 2167: @code{comment-multi-line}が@code{nil}(通常の設定)ならば、
 2168: 現在行のコメントを終了し、新たなコメントをつぎの行から始めます。
 2169: @code{comment-multi-line}が@code{nil}以外ならば、
 2170: 現在行と同じコメントが継続されます。
 2171: つまり、現在行のコメントを終えず、新たな行にも開始文字列を挿入しません。
 2172: 複数行にわたるコメントを許す言語では、
 2173: この変数に設定する値は好みの問題です。
 2175: @vindex comment-indent-function
 2176: @c   The variable @code{comment-indent-function} should contain a function
 2177: @c that will be called to compute the indentation for a newly inserted
 2178: @c comment or for aligning an existing comment.  It is set differently by
 2179: @c various major modes.  The function is called with no arguments, but with
 2180: @c point at the beginning of the comment, or at the end of a line if a new
 2181: @c comment is to be inserted.  It should return the column in which the
 2182: @c comment ought to start.  For example, in Lisp mode, the indent hook
 2183: @c function bases its decision on how many semicolons begin an existing
 2184: @c comment, and on the code in the preceding lines.
 2185: 変数@code{comment-indent-function}には、
 2186: 新たに挿入したコメントの字下げや
 2187: 既存のコメントに桁を揃えるための字下げを計算する関数を
 2188: 設定する必要があります。
 2189: この変数には、メジャーモードごとに異なった関数が設定されます。
 2190: この関数は引数なしで呼ばれますが、
 2191: コメントがあるときにはその開始位置にポイントを置いて、
 2192: 新規コメントの挿入時には行末にポイントを置いて呼ばれます。
 2193: 戻り値は、コメントを始めるべき桁位置です。
 2194: たとえば、Lispモードでは、この字下げ用フック関数は、
 2195: 既存のコメントのセミコロンの個数と
 2196: まえの行のコードに基づいて計算を行います。
 2198: @node Balanced Editing, Symbol Completion, Comments, Programs
 2199: @c @section Editing Without Unbalanced Parentheses
 2200: @section 括弧の対応を保った編集
 2202: @table @kbd
 2203: @item M-(
 2204: @c Put parentheses around next sexp(s) (@code{insert-parentheses}).
 2205: つぎの(1つ以上の)S式を括弧で囲む(@code{insert-parentheses})。
 2206: @item M-)
 2207: @c Move past next close parenthesis and reindent
 2208: @c (@code{move-past-close-and-reindent}).
 2209: つぎの閉じ括弧のうしろへ移動してから字下げし直す
 2210: (@code{move-past-close-and-reindent})。
 2211: @end table
 2213: @kindex M-(
 2214: @kindex M-)
 2215: @findex insert-parentheses
 2216: @findex move-past-close-and-reindent
 2217: @c   The commands @kbd{M-(} (@code{insert-parentheses}) and @kbd{M-)}
 2218: @c (@code{move-past-close-and-reindent}) are designed to facilitate a style
 2219: @c of editing which keeps parentheses balanced at all times.  @kbd{M-(}
 2220: @c inserts a pair of parentheses, either together as in @samp{()}, or, if
 2221: @c given an argument, around the next several sexps.  It leaves point after
 2222: @c the open parenthesis.  The command @kbd{M-)} moves past the close
 2223: @c parenthesis, deleting any indentation preceding it, and indenting with
 2224: @c @kbd{C-j} after it.
 2225: コマンド@kbd{M-(}(@code{insert-parenthesis})と
 2226: @kbd{M-)}(@code{move-past-close-and-reindent})は、
 2227: 括弧の対応をつねに保ったまま編集するために設計されました。
 2228: @kbd{M-(}は一対の括弧を挿入します。
 2229: 引数がなければ@samp{()}を挿入しますが、
 2230: 引数を指定すると、つぎのその個数分のS式を括弧で囲みます。
 2231: ポイントは開き括弧の直後に置かれます。
 2232: コマンド@kbd{M-)}は、閉じ括弧のまえにある字下げを削除しながら
 2233: 閉じ括弧のうしろにポイントを移動し、
 2234: そのあと、@kbd{C-j}で字下げします。
 2236: @c   For example, instead of typing @kbd{( F O O )}, you can type @kbd{M-(
 2237: @c F O O}, which has the same effect except for leaving the cursor before
 2238: @c the close parenthesis.
 2239: たとえば、@kbd{( F O O )}と打つかわりに@kbd{M-( F O O}と打てば、
 2240: カーソルが閉じ括弧のまえにくることを除けば同じ効果を得られます。
 2242: @vindex parens-require-spaces
 2243: @c   @kbd{M-(} may insert a space before the open parenthesis, depending on
 2244: @c the syntax class of the preceding character.  Set
 2245: @c @code{parens-require-spaces} to @code{nil} value if you wish to inhibit
 2246: @c this.
 2247: @kbd{M-(}は、直前の文字の構文クラスによっては、
 2248: 開き括弧のまえに空白を1個挿入することがあります。
 2249: これを禁止したければ、
 2250: @code{parens-require-spaces}に@code{nil}を設定してください。
 2252: @node Symbol Completion, Which Function, Balanced Editing, Programs
 2253: @c @section Completion for Symbol Names
 2254: @section シンボル名の補完
 2255: @c @cindex completion (symbol names)
 2256: @cindex 補完(シンボル名)
 2258: @c   Usually completion happens in the minibuffer.  But one kind of completion
 2259: @c is available in all buffers: completion for symbol names.
 2260: 通常、補完はミニバッファで行われます。
 2261: しかし、ある種の補完は任意のバッファで利用できます。
 2262: それはシンボル名に対する補完です。
 2264: @kindex M-TAB
 2265: @c   The character @kbd{M-@key{TAB}} runs a command to complete the partial
 2266: @c symbol before point against the set of meaningful symbol names.  Any
 2267: @c additional characters determined by the partial name are inserted at
 2268: @c point.
 2269: @kbd{M-@key{TAB}}は、ポイント直前の部分的なシンボルを、
 2270: 意味のあるシンボル名の集合から補完するコマンドを実行します。
 2271: 部分的な名前から補完された追加文字はポイント位置に挿入されます。
 2273: @c   If the partial name in the buffer has more than one possible completion
 2274: @c and they have no additional characters in common, a list of all possible
 2275: @c completions is displayed in another window.
 2276: バッファ内の部分的な名前に対して、
 2277: 複数個の補完候補があり、しかも、追加できる共通部分がない場合には、
 2278: 補完候補一覧を別のウィンドウに表示します。
 2280: @c @cindex completion using tags
 2281: @c @cindex tags completion
 2282: @c @cindex Info index completion
 2283: @cindex タグを用いた補完
 2284: @cindex タグ補完
 2285: @cindex info索引補完
 2286: @findex complete-symbol
 2287: @c   In most programming language major modes, @kbd{M-@key{TAB}} runs the
 2288: @c command @code{complete-symbol}, which provides two kinds of completion.
 2289: @c Normally it does completion based on a tags table (@pxref{Tags}); with a
 2290: @c numeric argument (regardless of the value), it does completion based on
 2291: @c the names listed in the Info file indexes for your language.  Thus, to
 2292: @c complete the name of a symbol defined in your own program, use
 2293: @c @kbd{M-@key{TAB}} with no argument; to complete the name of a standard
 2294: @c library function, use @kbd{C-u M-@key{TAB}}.  Of course, Info-based
 2295: @c completion works only if there is an Info file for the standard library
 2296: @c functions of your language, and only if it is installed at your site.
 2297: ほとんどのプログラム言語向けメジャーモードでは、
 2298: @kbd{M-@key{TAB}}はコマンド@code{complete-symbol}を実行します。
 2299: この関数には、2種類の補完機能があります。
 2300: 通常、このコマンドはタグテーブル(@pxref{Tags})に基づいて補完を行います。 
 2301: 数引数(値は無関係)を指定すると、当該言語のinfoファイルの索引に
 2302: 並べられた名前を対象として補完を行います。
 2303: すなわち、プログラム中で定義されたシンボル名を補完するには
 2304: 引数なしで@kbd{M-@key{TAB}}を使い、
 2305: 標準ライブラリ関数の名前を補完するには@kbd{C-u M-@key{TAB}}を使います。
 2306: もちろん、infoに基づいた補完は、使用言語の標準ライブラリ関数に対する
 2307: infoファイルがあり、かつ、それがインストールされている場合にだけ動作します。
 2309: @c @cindex Lisp symbol completion
 2310: @c @cindex completion in Lisp
 2311: @cindex Lispシンボルの補完
 2312: @cindex Lisp中の補完
 2313: @findex lisp-complete-symbol
 2314: @c   In Emacs-Lisp mode, the name space for completion normally consists of
 2315: @c nontrivial symbols present in Emacs---those that have function
 2316: @c definitions, values or properties.  However, if there is an
 2317: @c open-parenthesis immediately before the beginning of the partial symbol,
 2318: @c only symbols with function definitions are considered as completions.
 2319: @c The command which implements this is @code{lisp-complete-symbol}.
 2320: Emacs Lispモードでは、補完対象の名前空間は、
 2321: 関数定義、値や属性を持つEmacs中の特殊なシンボルから成ります。
 2322: しかし、部分的なシンボルの直前に開き括弧があれば、
 2323: 関数定義を持つシンボルだけを補完対象とします。
 2324: これを実現するコマンドは@code{lisp-complete-symbol}です。
 2326: @c   In Text mode and related modes, @kbd{M-@key{TAB}} completes words
 2327: @c based on the spell-checker's dictionary.  @xref{Spelling}.
 2328: テキスト(text)モードとその関連モードでは、
 2329: @kbd{M-@key{TAB}}はスペルチェッカの辞書に基づいた補完を行います。
 2330: @xref{Spelling}。
 2332: @node Which Function, Documentation, Symbol Completion, Programs
 2333: @c @section Which Function Mode
 2334: @section 関数名表示モード(which-functionモード)
 2336: @c   Which Function mode is a minor mode that displays the current function
 2337: @c name in the mode line, as you move around in a buffer.
 2338: 関数名表示(which-function)モードは、
 2339: バッファ内を動き廻るに従って現在の関数名をモード行に表示する
 2340: マイナモードです。
 2342: @findex which-function-mode
 2343: @vindex which-func-modes
 2344: @c   To enable (or disable) Which Function mode, use the command @kbd{M-x
 2345: @c which-function-mode}.  This command is global; it applies to all
 2346: @c buffers, both existing ones and those yet to be created.  However, this
 2347: @c only affects certain major modes, those listed in the value of
 2348: @c @code{which-func-modes}.  (If the value is @code{t}, then Which Function
 2349: @c mode applies to all major modes that know how to support it---which are
 2350: @c the major modes that support Imenu.)
 2351: 関数名表示(which-function)モードをオン(あるいはオフ)にするには、
 2352: コマンド@kbd{M-x which-function-mode}を使います。
 2353: このコマンドはグローバルです。
 2354: つまり、既存のバッファでもこれから作るバッファでも、
 2355: すべてのバッファに通用します。
 2356: しかし、@code{which-func-modes}の値で指定された
 2357: 特定のメジャーモードでのみ効果があります。
 2358: (@code{which-func-modes}のデフォルト値は@code{t}であり、
 2359: 関数名表示(which-function)モードの支援方法を知っている
 2360: すべてのメジャーモードに適用されることを意味する。
 2361: 具体的には、imenuを使えるメジャーモード。)
 2363: @node Documentation, Change Log, Which Function, Programs
 2364: @c @section Documentation Commands
 2365: @section 説明文書用コマンド
 2367: @c   As you edit Lisp code to be run in Emacs, the commands @kbd{C-h f}
 2368: @c (@code{describe-function}) and @kbd{C-h v} (@code{describe-variable}) can
 2369: @c be used to print documentation of functions and variables that you want to
 2370: @c call.  These commands use the minibuffer to read the name of a function or
 2371: @c variable to document, and display the documentation in a window.
 2372: Emacsで実行するLispコードを編集するときには、
 2373: 関数や変数の説明文字列を表示するコマンド、
 2374: @kbd{C-h f}(@code{describe-function})や
 2375: @kbd{C-h v}(@code{describe-variable})を利用できます。
 2376: これらのコマンドは、説明文字列を表示したい関数や変数の名前を
 2377: ミニバッファから読み取り、ウィンドウに説明文字列を表示します。
 2379: @c   For extra convenience, these commands provide default arguments based on
 2380: @c the code in the neighborhood of point.  @kbd{C-h f} sets the default to the
 2381: @c function called in the innermost list containing point.  @kbd{C-h v} uses
 2382: @c the symbol name around or adjacent to point as its default.
 2383: たいへん便利なことに、これらのコマンドはポイント近傍のコードから、
 2384: デフォルトの引数を選択します。
 2385: @kbd{C-h f}は、ポイントを含むもっとも内側のリストで呼ばれる関数をデフォルト
 2386: とします。
 2387: @kbd{C-h v}は、ポイントの周辺にあるか隣接するシンボル名を
 2388: デフォルトとします。
 2390: @c @cindex Eldoc mode
 2391: @cindex eldocモード
 2392: @cindex モード、Eldoc
 2393: @findex eldoc-mode
 2394: @c   For Emacs Lisp code, you can also use Eldoc mode.  This minor mode
 2395: @c constantly displays in the echo area the argument list for the function
 2396: @c being called at point.  (In other words, it finds the function call that
 2397: @c point is contained in, and displays the argument list of that function.)
 2398: @c Eldoc mode applies in Emacs Lisp and Lisp Interaction modes only.  Use
 2399: @c the command @kbd{M-x eldoc-mode} to enable or disable this feature.
 2400: Emacs Lispコードに対しては、eldocモードも使えます。
 2401: このマイナモードは、ポイント位置で呼び出されている関数の引数リストを、
 2402: たえずエコー領域に表示します。
 2403: (いいかえれば、ポイントを含む関数呼び出しを探し、
 2404: その関数の引数リストを表示する。)
 2405: eldocマイナモードは、Emacs Lispモードと
 2406: Lisp対話(lisp-interaction)モードだけに適用できます。
 2407: この機能をオン/オフするには、コマンド@kbd{M-x eldoc-mode}を使います。
 2409: @findex info-lookup-symbol
 2410: @findex info-lookup-file
 2411: @kindex C-h C-i
 2412: @c   For C, Lisp, and other languages, you can use @kbd{C-h C-i}
 2413: @c (@code{info-lookup-symbol}) to view the Info documentation for a symbol.
 2414: @c You specify the symbol with the minibuffer; by default, it uses the
 2415: @c symbol that appears in the buffer at point.  The major mode determines
 2416: @c where to look for documentation for the symbol---which Info files and
 2417: @c which indices.  You can also use @kbd{M-x info-lookup-file} to look for
 2418: @c documentation for a file name.
 2419: C、Lisp、その他言語のシンボルのinfo文書を見るには
 2420: @kbd{C-h C-i}(@code{info-lookup-symbol})を使います。
 2421: ミニバッファでシンボルを指定します。
 2422: デフォルトは、バッファ中のポイント位置にあるシンボルです。
 2423: シンボルに対する説明文書を探す場所、つまり、
 2424: どのinfoファイルのどの索引を探せばよいかは、
 2425: メジャーモードが決定します。
 2426: また、ファイル名に対する説明文書を探すには
 2427: @kbd{M-x info-lookup-file}を使います。
 2429: @findex manual-entry
 2430: @c   You can read the ``man page'' for an operating system command, library
 2431: @c function, or system call, with the @kbd{M-x manual-entry} command.  It
 2432: @c runs the @code{man} program to format the man page, and runs it
 2433: @c asynchronously if your system permits, so that you can keep on editing
 2434: @c while the page is being formatted.  (MS-DOS and MS-Windows 3 do not
 2435: @c permit asynchronous subprocesses, so on these systems you cannot edit
 2436: @c while Emacs waits for @code{man} to exit.)  The result goes in a buffer
 2437: @c named @samp{*Man @var{topic}*}.  These buffers use a special major mode,
 2438: @c Man mode, that facilitates scrolling and examining other manual pages.
 2439: @c For details, type @kbd{C-h m} while in a man page buffer.
 2440: @kbd{M-x manual-entry}コマンドを使って、
 2441: オペレーティングシステムのコマンド、ライブラリ関数、システムコールの
 2442: 『マニュアルページ』を読むことができます。
 2443: このコマンドは、マニュアルページを清書するために
 2444: @code{man}プログラムを実行します。
 2445: システムが許せば非同期に実行するので、
 2446: マニュアルページが清書されるまで、編集を継続できます
 2447: (MS-DOSやMS-Windows 3.xでは、非同期的なサブプロセスを実行できない。
 2448: このため、これらのシステムでは@code{man}の終了をEmacsが待つあいだは
 2449: 編集できない)。
 2450: 結果は、@samp{*Man @var{topic}*}という名前のバッファに入ります。
 2451: これらのバッファではマン(man)モードと呼ばれる特別な
 2452: メジャーモードが使われ、
 2453: スクロールや他のマニュアルページの調査を容易に行えます。
 2454: より詳しくは、マニュアルページ用のバッファで、
 2455: @kbd{C-h m}と打ってください。
 2457: @vindex Man-fontify-manpage-flag
 2458: @c   For a long man page, setting the faces properly can take substantial
 2459: @c time.  By default, Emacs uses faces in man pages if Emacs can display
 2460: @c different fonts or colors.  You can turn off use of faces in man pages
 2461: @c by setting the variable @code{Man-fontify-manpage-flag} to @code{nil}.
 2462: 長いマニュアルページでは、適切なフェイスを設定するにはとても時間がかかります。
 2463: さまざまなフォントや表示色を表示できる環境であれば、
 2464: デフォルトでマニュアルページにフェイスを用いるようになっています。
 2465: 変数@code{Man-fontify-manpage-flag}に@code{nil}を設定すれば、
 2466: マニュアルページにおけるフェイスの使用をオフにできます。
 2468: @findex Man-fontify-manpage
 2469: @c   If you insert the text of a man page into an Emacs buffer in some
 2470: @c other fashion, you can use the command @kbd{M-x Man-fontify-manpage} to
 2471: @c perform the same conversions that @kbd{M-x manual-entry} does.
 2472: 他の方法でマニュアルページのテキストをEmacsバッファに挿入した場合、
 2473: @kbd{M-x manual-entry}と同じ変換を施すには、
 2474: そこで@kbd{M-x Man-fontify-manpage}コマンドを実行します。
 2476: @c   Eventually the GNU project hopes to replace most man pages with
 2477: @c better-organized manuals that you can browse with Info.  @xref{Misc
 2478: @c Help}.  Since this process is only partially completed, it is still
 2479: @c useful to read manual pages.
 2480: GNUプロジェクトでは最終的に、ほとんどのマニュアルページを
 2481: infoで閲覧可能なよりよく構成されたマニュアルに置き換えることを望んでいます。
 2482: @xref{Misc Help}。
 2483: この作業は、ほんの一部が完了しただけなので、
 2484: まだマニュアルページを読めることは有益です。
 2486: @node Change Log, Tags, Documentation, Programs
 2487: @c @section Change Logs
 2488: @section 変更記録
 2490: @c @cindex change log
 2491: @cindex 変更記録
 2492: @cindex チェンジログ
 2493: @kindex C-x 4 a
 2494: @findex add-change-log-entry-other-window
 2495: @c   The Emacs command @kbd{C-x 4 a} adds a new entry to the change log
 2496: @c file for the file you are editing
 2497: @c (@code{add-change-log-entry-other-window}).
 2498: コマンド@kbd{C-x 4 a}は、編集中のファイルに対する
 2499: 新たな項目を変更記録ファイルに追加します
 2500: (@code{add-change-log-entry-other-window})。
 2502: @c   A change log file contains a chronological record of when and why you
 2503: @c have changed a program, consisting of a sequence of entries describing
 2504: @c individual changes.  Normally it is kept in a file called
 2505: @c @file{ChangeLog} in the same directory as the file you are editing, or
 2506: @c one of its parent directories.  A single @file{ChangeLog} file can
 2507: @c record changes for all the files in its directory and all its
 2508: @c subdirectories.
 2509: 変更記録ファイルは、プログラムを変更した日付やその理由を
 2510: 時間順に記録したもので、個々の変更を記述した項目の並びから成ります。
 2511: 通常は、編集しているファイルと同じディレクトリ、あるいは、
 2512: その親ディレクトリに置いた@file{ChangeLog}と呼ばれる
 2513: ファイルに保存されています。
 2514: 1つの@file{ChangeLog}ファイルで、このファイルを置いたディレクトリや
 2515: そのサブディレクトリに置いた全ファイルの変更を記録できます。
 2517: @c   A change log entry starts with a header line that contains your name,
 2518: @c your email address (taken from the variable @code{user-mail-address}),
 2519: @c and the current date and time.  Aside from these header lines, every
 2520: @c line in the change log starts with a space or a tab.  The bulk of the
 2521: @c entry consists of @dfn{items}, each of which starts with a line starting
 2522: @c with whitespace and a star.  Here are two entries, both dated in May
 2523: @c 1993, each with two items:
 2524: 変更記録項目は、名前、(@code{user-mail-address}から得られた)
 2525: 電子メイルアドレス、現在の日付と時刻から成るヘッダ行で始まります。
 2526: 変更記録内の各行はヘッダ行を除いて、つねに空白かタブで始まります。
 2527: 1つの項目は@dfn{小項目}から構成され、
 2528: 各小項目は空白と星印で始まる行で始まります。
 2529: 以下は、1993年5月付けの2つの項目で、
 2530: それぞれに2つの小項目があります。
 2532: @iftex
 2533: @medbreak
 2534: @end iftex
 2535: @smallexample
 2536: 1993-05-25  Richard Stallman  <>
 2538:         * man.el: Rename symbols `man-*' to `Man-*'.
 2539:         (manual-entry): Make prompt string clearer.
 2541:         * simple.el (blink-matching-paren-distance):
 2542:         Change default to 12,000.
 2544: 1993-05-24  Richard Stallman  <>
 2546:         * vc.el (minor-mode-map-alist): Don't use it if it's void.
 2547:         (vc-cancel-version): Doc fix.
 2548: @end smallexample
 2550: @noindent
 2551: @c (Previous Emacs versions used a different format for the date.)
 2552: (Emacsの以前の版では、日付の形式が異なる。)
 2554: @c   One entry can describe several changes; each change should have its
 2555: @c own item.  Normally there should be a blank line between items.  When
 2556: @c items are related (parts of the same change, in different places), group
 2557: @c them by leaving no blank line between them.  The second entry above
 2558: @c contains two items grouped in this way.
 2559: 1つの項目で複数の変更を記述できます。
 2560: 各変更について、それぞれの小項目を用意しなくてはいけません。
 2561: 通常、小項目のあいだには空行がなくてはいけません。
 2562: 小項目が関連している(場所は異なるが同じ変更の一部分の)場合には、
 2563: それらのあいだには空行を入れずに一塊にしておきます。
 2564: 上記の2番目の項目には、このようにしてまとめた2つの小項目が含まれています。
 2566: @c   @kbd{C-x 4 a} visits the change log file and creates a new entry
 2567: @c unless the most recent entry is for today's date and your name.  It also
 2568: @c creates a new item for the current file.  For many languages, it can
 2569: @c even guess the name of the function or other object that was changed.
 2570: @kbd{C-x 4 a}は、変更記録ファイルを訪問して、
 2571: 最新の項目が今日の日付で当人の名前のものでなければ、
 2572: 新たに項目を作成します。
 2573: また、現在のファイルに対する新たな小項目も作成します。
 2574: 多くの言語に対して、変更された関数名やその他のオブジェクトを
 2575: 推測することもできます。
 2577: @c @cindex Change Log mode
 2578: @cindex 変更記録モード(Change Log mode)
 2579: @cindex change-logモード
 2580: @cindex モード、Change Log
 2581: @findex change-log-mode
 2582: @c   The change log file is visited in Change Log mode.  In this major
 2583: @c mode, each bunch of grouped items counts as one paragraph, and each
 2584: @c entry is considered a page.  This facilitates editing the entries.
 2585: @c @kbd{C-j} and auto-fill indent each new line like the previous line;
 2586: @c this is convenient for entering the contents of an entry.
 2587: 変更記録ファイルは、変更記録(change-log)モードで訪問します。
 2588: このメジャーモードでは、(空行で区切らない)ひとまとまりの小項目群を
 2589: 段落として扱い、各項目をページとして扱います。
 2590: これにより項目の編集が容易になります。
 2591: @kbd{C-j}や自動詰め込みにより、
 2592: 新たな行は直前の行と同様に字下げされます。
 2593: これは項目内容を入力するのに便利です。
 2595: @c   Version control systems are another way to keep track of changes in your
 2596: @c program and keep a change log.  @xref{Log Buffer}.
 2597: プログラムの変更を掌握し、変更記録を維持する他の手段としては、
 2598: 版管理(バージョンコントロール)システムがあります。
 2599: @xref{Log Buffer}。
 2601: @node Tags, Emerge, Change Log, Programs
 2602: @c @section Tags Tables
 2603: @section タグテーブル
 2604: @c @cindex tags table
 2605: @cindex タグテーブル
 2607: @c   A @dfn{tags table} is a description of how a multi-file program is
 2608: @c broken up into files.  It lists the names of the component files and the
 2609: @c names and positions of the functions (or other named subunits) in each
 2610: @c file.  Grouping the related files makes it possible to search or replace
 2611: @c through all the files with one command.  Recording the function names
 2612: @c and positions makes possible the @kbd{M-.} command which finds the
 2613: @c definition of a function by looking up which of the files it is in.
 2614: @dfn{タグテーブル}とは、複数のファイルで構成されるプログラムが、
 2615: どのように各ファイルに分割されているのか記述したものです。
 2616: これは、プログラムを構成するファイル名、
 2617: そのファイルに入っている関数の名前(または、名前の付いた別の単位)や
 2618: ファイル内の位置の一覧です。
 2619: こうして関連するファイルをまとめておけば、
 2620: 全ファイルを対象とした探索や置換をコマンド1つで行えます。
 2621: また、関数名とその位置を記録してあるので、
 2622: 関数がどのファイルに入っているか調べて関数定義をみつけだす
 2623: @kbd{M-.}のようなコマンドを実現できます。
 2625: @c   Tags tables are stored in files called @dfn{tags table files}.  The
 2626: @c conventional name for a tags table file is @file{TAGS}.
 2627: タグテーブルは、@dfn{タグテーブルファイル}と呼ばれるファイルに格納されます。
 2628: このファイルの慣習的な名前は@file{TAGS}です。
 2630: @c   Each entry in the tags table records the name of one tag, the name of the
 2631: @c file that the tag is defined in (implicitly), and the position in that file
 2632: @c of the tag's definition.
 2633: タグテーブルの各項目は、タグ名、タグが(暗黙に)定義されているファイルの名前、
 2634: そして、ファイル中でタグが定義されている位置を記録しています。
 2636: @c   Just what names from the described files are recorded in the tags table
 2637: @c depends on the programming language of the described file.  They
 2638: @c normally include all functions and subroutines, and may also include
 2639: @c global variables, data types, and anything else convenient.  Each name
 2640: @c recorded is called a @dfn{tag}.
 2641: もとのプログラムファイルから、どんな名前がタグテーブルに記録されるかは、
 2642: プログラム言語によって異なります。
 2643: 一般的には、すべての関数やサブルーチンを含み、
 2644: 大域変数、データ型、あると便利なその他の情報などを含むこともあります。
 2645: 記録された個々の名前を@dfn{タグ}と呼びます。
 2647: @menu
 2648: * Tag Syntax::		Tag syntax for various types of code and text files.  
 2649: * Create Tags Table::	Creating a tags table with @code{etags}.
 2650: * Select Tags Table::	How to visit a tags table.
 2651: * Find Tag::		Commands to find the definition of a specific tag. 
 2652: * Tags Search::		Using a tags table for searching and replacing.
 2653: * List Tags::		Listing and finding tags defined in a file.
 2654: @end menu
 2656: @node Tag Syntax, Create Tags Table, , Tags
 2657: @c @subsection Source File Tag Syntax
 2658: @subsection ソースファイルのタグ構文
 2660: @c   Here is how tag syntax is defined for the most popular languages:
 2661: ここでは、広く一般に使われている言語に対するタグ構文の定義を紹介します。
 2663: @itemize @bullet
 2664: @item
 2665: @c In C code, any C function or typedef is a tag, and so are definitions of
 2666: @c @code{struct}, @code{union} and @code{enum}.  @code{#define} macro
 2667: @c definitions and @code{enum} constants are also tags, unless you specify
 2668: @c @samp{--no-defines} when making the tags table.  Similarly, global
 2669: @c variables are tags, unless you specify @samp{--no-globals}.  Use of
 2670: @c @samp{--no-globals} and @samp{--no-defines} can make the tags table file
 2671: @c much smaller.
 2672: Cのコードでは、関数やtypedefで定義される型はタグであり、
 2673: @code{struct}、@code{union}、@code{enum}の定義もやはりタグである。
 2674: また、タグテーブルを作成するときにオプション@samp{--no-defines}を
 2675: 指定しなければ、@code{#define}によるマクロ定義や
 2676: @code{enum}の定数もタグとして扱う。
 2677: 同様に、大域変数も@samp{--no-globals}を指定しない限りタグになる。
 2678: @samp{--no-globals}と@samp{--no-defines}を指定すると、
 2679: タグテーブルファイルはかなり小さくなる。
 2681: @item
 2682: @c In C++ code, in addition to all the tag constructs of C code, member
 2683: @c functions are also recognized, and optionally member variables if you
 2684: @c use the @samp{--members} option.  Tags for variables and functions in
 2685: @c classes are named @samp{@var{class}::@var{variable}} and
 2686: @c @samp{@var{class}::@var{function}}.
 2687: C++のコードでは、Cのコードのタグ構成要素に加えて、
 2688: メンバ関数もタグとして認識される。
 2689: @samp{--members}オプションを指定すれば、メンバ変数もタグになる。
 2690: クラス内の変数と関数に対するタグには、それぞれ、
 2691: @samp{@var{class}::@var{variable}}、@samp{@var{class}::@var{function}}と
 2692: 名前が付く。
 2694: @item
 2695: @c In Java code, tags include all the constructs recognized in C++, plus
 2696: @c the @code{extends} and @code{implements} constructs.  Tags for variables
 2697: @c and functions in classes are named @samp{@var{class}.@var{variable}} and
 2698: @c @samp{@var{class}.@var{function}}.
 2699: Javaのコードでは、C++のタグ構成要素に加えて、
 2700: @code{extends}と@code{implements}に現れる名前もタグとして含む。
 2701: クラス内の変数と関数に対するタグには、それぞれ、
 2702: @samp{@var{class}.@var{variable}}、
 2703: @samp{@var{class}.@var{function}}と名前が付く。
 2705: @item
 2706: @c In La@TeX{} text, the argument of any of the commands @code{\chapter},
 2707: @c @code{\section}, @code{\subsection}, @code{\subsubsection},
 2708: @c @code{\eqno}, @code{\label}, @code{\ref}, @code{\cite}, @code{\bibitem},
 2709: @c @code{\part}, @code{\appendix}, @code{\entry}, or @code{\index}, is a
 2710: @c tag.@refill
 2711: La@TeX{}のテキストでは、@code{\chapter}、@code{\section}、@code{\subsection}、
 2712: @code{\subsubsection}、@code{\eqno}、@code{\label}、@code{\ref}、
 2713: @code{\cite}、@code{\bibitem}、@code{\part}、@code{\appendix}、
 2714: @code{\entry}、@code{\index}のコマンドの引数がタグになる。
 2716: @c Other commands can make tags as well, if you specify them in the
 2717: @c environment variable @code{TEXTAGS} before invoking @code{etags}.  The
 2718: @c value of this environment variable should be a colon-separated list of
 2719: @c command names.  For example,
 2720: その他のLa@TeX{}コマンドでも、@code{etags}を起動するまえに、
 2721: 環境変数@code{TEXTAGS}にそれらのコマンドを指定しておけばタグの対象になる。
 2722: この環境変数の値は、コマンド名をコロンで区切った並び。
 2723: たとえば、(bourneシェルでは)
 2725: @example
 2726: TEXTAGS="def:newcommand:newenvironment"
 2727: export TEXTAGS
 2728: @end example
 2730: @noindent
 2731: @c specifies (using Bourne shell syntax) that the commands @samp{\def},
 2732: @c @samp{\newcommand} and @samp{\newenvironment} also define tags.
 2733: とすると、@samp{\def}、@samp{\newcommand}、@samp{\newenvironment}の
 2734: コマンドの引数もタグの対象になる。
 2736: @item
 2737: @c In Lisp code, any function defined with @code{defun}, any variable
 2738: @c defined with @code{defvar} or @code{defconst}, and in general the first
 2739: @c argument of any expression that starts with @samp{(def} in column zero, is
 2740: @c a tag.
 2741: Lispコードでは、@code{defun}で定義した関数、
 2742: @code{defvar}や@code{defconst}で定義した変数、
 2743: および、一般に0桁目から@samp{(def}で始まる任意の式の最初の引数がタグ。
 2745: @item
 2746: @c In Scheme code, tags include anything defined with @code{def} or with a
 2747: @c construct whose name starts with @samp{def}.  They also include variables
 2748: @c set with @code{set!} at top level in the file.
 2749: Schemeコードでは、
 2750: @code{def}で定義されるものと、名前が@samp{def}で始まるものがタグに含まれる。
 2751: また、ファイル内のトップレベルで@code{set!}を
 2752: 使って値が設定される変数もタグ。
 2753: @end itemize
 2755: @c   Several other languages are also supported:
 2756: 他にも以下の言語で使えます。
 2758: @itemize @bullet
 2759: @item
 2760: @c In assembler code, labels appearing at the beginning of a line,
 2761: @c followed by a colon, are tags.
 2762: アセンブリコードでは、行の先頭から始まりコロンが続くラベルはタグ。
 2764: @item
 2765: @c In Bison or Yacc input files, each rule defines as a tag the nonterminal
 2766: @c it constructs.  The portions of the file that contain C code are parsed
 2767: @c as C code.
 2768: BisonやYaccの入力ファイルでは、
 2769: 各構文規則で定義する非終端記号をタグとする。
 2770: ファイル内のCコードの部分に対しては、Cのコードとしてタグの解析を行う。
 2772: @item
 2773: @c In Cobol code, tags are paragraph names; that is, any word starting in
 2774: @c column 8 and followed by a period.
 2775: Cobolでは、段落名、すなわち、8桁目から始まりピリオドが続く任意の単語がタグ。
 2777: @item
 2778: @c In Erlang code, the tags are the functions, records, and macros defined
 2779: @c in the file.
 2780: Erlangコードでは、ファイル内で定義された関数、レコード、マクロがタグ。
 2782: @item
 2783: @c In Fortran code, functions, subroutines and blockdata are tags.
 2784: Fortranコードでは、関数、サブルーチン、ブロックデータがタグ。
 2786: @item
 2787: @c In Objective C code, tags include Objective C definitions for classes,
 2788: @c class categories, methods, and protocols.
 2789: Objective-Cコードでは、クラス、クラスカテゴリ、メソッド、
 2790: プロトコルの定義がタグ。
 2792: @item
 2793: @c In Pascal code, the tags are the functions and procedures defined in
 2794: @c the file.
 2795: Pascalコードでは、関数と手続きがタグ。
 2797: @item
 2798: @c In Perl code, the tags are the procedures defined by the @code{sub}
 2799: @c keyword.
 2800: Perlコードでは、キーワード@code{sub}で定義される手続きがタグ。
 2802: @item
 2803: @c In Postscript code, the tags are the functions.
 2804: Postscriptコードでは、関数(演算子)がタグ。
 2806: @item
 2807: @c In Prolog code, a tag name appears at the left margin.
 2808: Prologコードでは、左端に現れる名前がタグ。
 2809: @end itemize
 2811: @c   You can also generate tags based on regexp matching (@pxref{Create
 2812: @c Tags Table}) to handle other formats and languages.
 2813: 正規表現に基づいてタグを生成する方法
 2814: (@pxref{Create Tags Table})もあるので、
 2815: 上記以外の形式や言語を扱うこともできます。
 2817: @node Create Tags Table, Select Tags Table, Tag Syntax, Tags
 2818: @c @subsection Creating Tags Tables
 2819: @subsection タグテーブルの作成
 2820: @c @cindex @code{etags} program
 2821: @cindex @code{etags}プログラム
 2823: @c   The @code{etags} program is used to create a tags table file.  It knows
 2824: @c the syntax of several languages, as described in
 2825: タグテーブルファイルを作成するには、@code{etags}プログラムを使います。
 2826: @code{etags}は、数種類の言語について、
 2827: 構文を解析しタグを取り出すことができます。
 2828: @iftex
 2829: @c the previous section.
 2830: これは前節で述べたとおりです。
 2831: @end iftex
 2832: @ifinfo
 2833: @c @ref{Tag Syntax}.
 2834: @ref{Tag Syntax}。
 2835: @end ifinfo
 2836: @c Here is how to run @code{etags}:
 2837: つぎのように実行します。
 2839: @example
 2840: etags @var{inputfiles}@dots{}
 2841: @end example
 2843: @noindent
 2844: @c The @code{etags} program reads the specified files, and writes a tags table
 2845: @c named @file{TAGS} in the current working directory.  @code{etags}
 2846: @c recognizes the language used in an input file based on its file name and
 2847: @c contents.  You can specify the language with the
 2848: @c @samp{--language=@var{name}} option, described below.
 2849: @code{etags}は指定されたファイルを読み、
 2850: カレント作業ディレクトリの@file{TAGS}という名前のファイルに
 2851: タグテーブルを書き出します。
 2852: @code{etags}は、ファイル名とその内容から自動的に使用言語を識別します。
 2853: 後述の@samp{--language=@var{name}}オプションで、
 2854: 言語を明示することもできます。
 2856: @c   If the tags table data become outdated due to changes in the files
 2857: @c described in the table, the way to update the tags table is the same way it
 2858: @c was made in the first place.  It is not necessary to do this often.
 2859: ファイルを変更するなどしてタグテーブルの内容が古くなった場合、
 2860: テーブルを更新するには、最初にタグテーブルを作成した手順を
 2861: 繰り返します。
 2862: 頻繁に更新する必要はありません。
 2864: @c   If the tags table fails to record a tag, or records it for the wrong
 2865: @c file, then Emacs cannot possibly find its definition.  However, if the
 2866: @c position recorded in the tags table becomes a little bit wrong (due to
 2867: @c some editing in the file that the tag definition is in), the only
 2868: @c consequence is a slight delay in finding the tag.  Even if the stored
 2869: @c position is very wrong, Emacs will still find the tag, but it must
 2870: @c search the entire file for it.
 2871: タグテーブルに記録できなかったり、誤ったファイルを記録してしまった場合、
 2872: Emacsはタグの定義をみつけることはできません。
 2873: しかし、(タグの定義を含んだファイルを多少編集するなどしたために)
 2874: タグテーブルに記録された位置が多少ズレている程度ならば、
 2875: タグをみつけるのに通常より少し時間がかかるだけです。
 2876: 記録された位置が大幅に狂っていたとしても、
 2877: Emacsはタグをみつけることができますが、
 2878: そのためにファイル全体を調べなくてはなりません。
 2880: @c   So you should update a tags table when you define new tags that you want
 2881: @c to have listed, or when you move tag definitions from one file to another,
 2882: @c or when changes become substantial.  Normally there is no need to update
 2883: @c the tags table after each edit, or even every day.
 2884: ですから、新しいタグを定義したとき、タグの定義を別のファイルに移動したとき、
 2885: ファイルを相当変更したときには、タグテーブルの更新が必要です。
 2886: しかし、ファイルを編集するつどタグテーブルを更新する必要はありませんし、
 2887: 毎日更新する必要すらないでしょう。
 2889: @c   One tags table can effectively include another.  Specify the included
 2890: @c tags file name with the @samp{--include=@var{file}} option when creating
 2891: @c the file that is to include it.  The latter file then acts as if it
 2892: @c contained all the files specified in the included file, as well as the
 2893: @c files it directly contains.
 2894: タグテーブルに別のタグテーブルを取り込むこともできます。
 2895: 取り込むタグファイル名をオプション@samp{--include=@var{file}}で
 2896: 指定してタグファイルを作成します。
 2897: このように作成したタグファイルには、
 2898: 指定したソースファイルに加えて、
 2899: 取り込んだタグファイルに記録されていたファイルも含まれます。
 2901: @c   If you specify the source files with relative file names when you run
 2902: @c @code{etags}, the tags file will contain file names relative to the
 2903: @c directory where the tags file was initially written.  This way, you can
 2904: @c move an entire directory tree containing both the tags file and the
 2905: @c source files, and the tags file will still refer correctly to the source
 2906: @c files.
 2907: @code{etags}を実行するときに相対ファイル名でソースファイルを指定すると、
 2908: タグファイルには、タグファイルを書き出したときのディレクトリを
 2909: 基準にしたファイル名が記録されます。
 2910: こうした場合、
 2911: タグファイルとソースファイルを含んだディレクトリ木構造全体を
 2912: 移動することができ、しかも、タグファイルはソースファイルを正しく指し続けます。
 2914: @c   If you specify absolute file names as arguments to @code{etags}, then
 2915: @c the tags file will contain absolute file names.  This way, the tags file
 2916: @c will still refer to the same files even if you move it, as long as the
 2917: @c source files remain in the same place.  Absolute file names start with
 2918: @c @samp{/}, or with @samp{@var{device}:/} on MS-DOS and MS-Windows.
 2919: @code{etags}の引数として絶対ファイル名を指定すると、
 2920: タグファイルには絶対ファイル名が記録されます。
 2921: こうした場合、ソースファイルが同じ場所にある限り、
 2922: タグファイルを移動してもタグファイルは同じファイルを指し続けます。
 2923: 絶対ファイル名は、@samp{/}、あるいは、
 2924: MS-DOSとMS-Windowsでは@samp{@var{device}:/}で始まります。
 2926: @c   When you want to make a tags table from a great number of files, you
 2927: @c may have problems listing them on the command line, because some systems
 2928: @c have a limit on its length.  The simplest way to circumvent this limit
 2929: @c is to tell @code{etags} to read the file names from its standard input,
 2930: @c by typing a dash in place of the file names, like this:
 2931: 非常に多数のファイルからタグテーブルを作成する場合、
 2932: コマンド行の長さを制限しているシステムもあるので、
 2933: ファイル名をコマンドラインで指定するときに問題が起こる可能性があります。
 2934: この制限を回避するもっとも単純な方法は、
 2935: つぎのように、ファイル名を指定する位置にダッシュを打って、
 2936: @code{etags}に標準入力からファイル名を読み込ませることです。
 2938: @example
 2939: find . -name "*.[chCH]" -print | etags -
 2940: @end example
 2942: @c   Use the option @samp{--language=@var{name}} to specify the language
 2943: @c explicitly.  You can intermix these options with file names; each one
 2944: @c applies to the file names that follow it.  Specify
 2945: @c @samp{--language=auto} to tell @code{etags} to resume guessing the
 2946: @c language from the file names and file contents.  Specify
 2947: @c @samp{--language=none} to turn off language-specific processing
 2948: @c entirely; then @code{etags} recognizes tags by regexp matching alone.
 2949: @c @samp{etags --help} prints the list of the languages @code{etags} knows,
 2950: @c and the file name rules for guessing the language.
 2951: オプション@samp{--language=@var{name}}を使えば、
 2952: 言語を明示的に指定できます。
 2953: このオプションはファイル名と混ぜていくつでも使用できます。
 2954: それぞれ、あとに続くファイル名に適用されます。
 2955: @samp{--language=auto}を指定すると、
 2956: @code{etags}はファイル名とその内容からふたたび使用言語を推測します。
 2957: @samp{--language=none}を指定すれば、
 2958: 言語に依存した処理をいっさい行わないようになります。
 2959: すると、@code{etags}は正規表現による一致だけに
 2960: 基づいてタグを認識します。
 2961: @code{etags}が知っている言語と、言語を推測するファイル名規則を表示するには、
 2962: @samp{etags --help}を指定します。
 2964: @c   The @samp{--regex} option provides a general way of recognizing tags
 2965: @c based on regexp matching.  You can freely intermix it with file names.
 2966: @c Each @samp{--regex} option adds to the preceding ones, and applies only
 2967: @c to the following files.  The syntax is:
 2968: @samp{--regex}オプションは、
 2969: 正規表現による一致に基づいてタグを認識させる一般的な方法です。
 2970: このオプションとファイル名を自由に混ぜて使用できます。
 2971: 各@samp{--regex}オプションは、それ以前に指定した正規表現に追加され、
 2972: オプションのあとにあるファイルに適用されます。
 2973: オプションの構文はつぎのとおりです。
 2975: @example
 2976: --regex=/@var{tagregexp}[/@var{nameregexp}]/
 2977: @end example
 2979: @noindent
 2980: @c where @var{tagregexp} is used to match the lines to tag.  It is always
 2981: @c anchored, that is, it behaves as if preceded by @samp{^}.  If you want
 2982: @c to account for indentation, just match any initial number of blanks by
 2983: @c beginning your regular expression with @samp{[ \t]*}.  In the regular
 2984: @c expressions, @samp{\} quotes the next character, and @samp{\t} stands
 2985: @c for the tab character.  Note that @code{etags} does not handle the other
 2986: @c C escape sequences for special characters.
 2987: ここで、@var{tagregexp}は、行に一致させてタグを取り出すために使われます。
 2988: これはつねに位置が固定されています。
 2989: つまり、@samp{^}が前置されているかのように扱われます。
 2990: 字下げ分を考慮したければ、正規表現を@samp{[ \t]*}で始めて、
 2991: 行頭の任意個の空白に一致するようにします。
 2992: 正規表現においては、@samp{\}は直後の文字をクォートし、
 2993: @samp{\t}はタブ文字を表します。
 2994: @code{etags}では、これら以外にはCで使われるエスケープシーケンスを
 2995: 扱えないことに注意してください。
 2997: @c @cindex interval operator (in regexps)
 2998: @cindex 反復回数演算子(正規表現)
 2999: @c   The syntax of regular expressions in @code{etags} is the same as in
 3000: @c Emacs, augmented with the @dfn{interval operator}, which works as in
 3001: @c @code{grep} and @code{ed}.  The syntax of an interval operator is
 3002: @c @samp{\@{@var{m},@var{n}\@}}, and its meaning is to match the preceding
 3003: @c expression at least @var{m} times and up to @var{n} times.
 3004: @code{etags}の正規表現の構文は、Emacsのものと同じで、
 3005: @dfn{反復回数演算子}(interval operator)が拡張されています。
 3006: この演算子は、@code{grep}や@code{ed}で使えるものと同じ動作をします。
 3007: 反復回数演算子の構文は@samp{\@{@var{m},@var{n}\@}}であり、
 3008: 直前の正規表現の@var{m}回以上@var{n}回以下の繰り返しに一致します。
 3010: @c   You should not match more characters with @var{tagregexp} than that
 3011: @c needed to recognize what you want to tag.  If the match is such that
 3012: @c more characters than needed are unavoidably matched by @var{tagregexp},
 3013: @c you may find useful to add a @var{nameregexp}, in order to narrow the tag
 3014: @c scope.  You can find some examples below.
 3015: @var{tagregexp}がタグとして認識したい部分よりも長く一致するようには
 3016: しないでください。
 3017: @var{tagregexp}に一致する部分が必要以上に長くなるのが避けられないならば、
 3018: タグの範囲を狭めるために@var{nameregexp}を追加するとよいかもしれません。
 3019: 正規表現を利用した例をいくつか紹介しましょう。
 3021: @c   The @samp{-R} option deletes all the regexps defined with
 3022: @c @samp{--regex} options.  It applies to the file names following it, as
 3023: @c you can see from the following example:
 3024: @samp{-R}オプションは、それまでに@samp{--regex}オプションで定義した
 3025: すべての正規表現を削除します。
 3026: つぎの使用例からもわかるように、
 3027: オプションのあとに続くファイルに適用されます。
 3029: @example
 3030: etags --regex=/@var{reg1}/ voo.doo --regex=/@var{reg2}/ \
 3031:     bar.ber -R --lang=lisp
 3032: @end example
 3034: @noindent
 3035: @c Here @code{etags} chooses the parsing language for @file{voo.doo} and
 3036: @c @file{bar.ber} according to their contents.  @code{etags} also uses
 3037: @c @var{reg1} to recognize additional tags in @file{voo.doo}, and both
 3038: @c @var{reg1} and @var{reg2} to recognize additional tags in
 3039: @c @file{bar.ber}.  @code{etags} uses the Lisp tags rules, and no regexp
 3040: @c matching, to recognize tags in @file{}.
 3041: この例では、@code{etags}は、
 3042: @file{voo.doo}と@file{bar.ber}に対しては、その内容から使用言語を推定します。
 3043: さらに、@file{voo.doo}から余分にタグを認識するために@var{reg1}を使い、
 3044: @file{bar.ber}から余分にタグを認識するためには
 3045: @var{reg1}と@var{reg2}の両方を使います。
 3046: @file{}からタグを認識するには、
 3047: Lispのタグ構文規則だけを使い、正規表現による一致はいっさい使いません。
 3049: @c   Here are some more examples.  The regexps are quoted to protect them
 3050: @c from shell interpretation.
 3051: 別の例を示しましょう。
 3052: ここでは、シェルが解釈しないように正規表現をクォートします。
 3054: @itemize @bullet
 3055: @item
 3056: @c Tag the @code{DEFVAR} macros in the emacs source files:
 3057: Emacsのソースファイルに含まれる@code{DEFVAR}マクロをタグとする。
 3059: @smallexample
 3060: --regex='/[ \t]*DEFVAR_[A-Z_ \t(]+"\([^"]+\)"/'
 3061: @end smallexample
 3063: @item
 3064: @c Tag VHDL files (this example is a single long line, broken here for
 3065: @c formatting reasons):
 3066: VHDLファイルからタグを取り出す
 3067: (この例は本来は単一の長い行だが、印刷の関係で分割してある)。
 3069: @smallexample
 3070: --language=none
 3071: --regex='/[ \t]*\(ARCHITECTURE\|CONFIGURATION\) +[^ ]* +OF/'
 3072: --regex='/[ \t]*\(ATTRIBUTE\|ENTITY\|FUNCTION\|PACKAGE\
 3073: \( BODY\)?\|PROCEDURE\|PROCESS\|TYPE\)[ \t]+\([^ \t(]+\)/\3/'
 3074: @end smallexample
 3076: @item
 3077: @c Tag Tcl files (this last example shows the usage of a @var{nameregexp}):
 3078: Tclファイルからタグを取り出す
 3079: (この例は@var{nameregexp}の使用例でもある)。
 3081: @smallexample
 3082: --lang=none --regex='/proc[ \t]+\([^ \t]+\)/\1/'
 3083: @end smallexample
 3084: @end itemize
 3086: @c   For a list of the other available @code{etags} options, execute
 3087: @c @code{etags --help}.
 3088: 他のオプション一覧を表示するには、
 3089: @code{etags --help}を実行してください。
 3091: @node Select Tags Table, Find Tag, Create Tags Table, Tags
 3092: @c @subsection Selecting a Tags Table
 3093: @subsection タグテーブルの選択
 3095: @vindex tags-file-name
 3096: @findex visit-tags-table
 3097: @c   Emacs has at any time one @dfn{selected} tags table, and all the commands
 3098: @c for working with tags tables use the selected one.  To select a tags table,
 3099: @c type @kbd{M-x visit-tags-table}, which reads the tags table file name as an
 3100: @c argument.  The name @file{TAGS} in the default directory is used as the
 3101: @c default file name.
 3102: Emacsでは、いつでも1つの@dfn{選択された}タグテーブルがあり、
 3103: タグテーブルを使って動作するコマンドは選択されたタグテーブルを使用します。
 3104: タグテーブルを選択するには、@kbd{M-x visit-tags-table}と打ちます。
 3105: すると、タグテーブルファイル名を聞いてきます。
 3106: デフォルトのファイル名は、デフォルトディレクトリの@file{TAGS}です。
 3108: @c   All this command does is store the file name in the variable
 3109: @c @code{tags-file-name}.  Emacs does not actually read in the tags table
 3110: @c contents until you try to use them.  Setting this variable yourself is just
 3111: @c as good as using @code{visit-tags-table}.  The variable's initial value is
 3112: @c @code{nil}; that value tells all the commands for working with tags tables
 3113: @c that they must ask for a tags table file name to use.
 3114: このコマンドは、ファイル名を変数@code{tags-file-name}に格納するだけです。
 3115: タグテーブルを使おうとしない限り、
 3116: Emacsは実際にはタグテーブルの内容を読み込みません。
 3117: @code{visit-tags-table}を使わずに、
 3118: 自分自身でこの変数にファイル名を設定してもかまいません。
 3119: この変数の初期値は@code{nil}です。
 3120: これは、タグテーブルを使うすべてのコマンドに、
 3121: 使用するタグテーブルファイルを尋ねさせることになります。
 3123: @c   Using @code{visit-tags-table} when a tags table is already loaded
 3124: @c gives you a choice: you can add the new tags table to the current list
 3125: @c of tags tables, or start a new list.  The tags commands use all the tags
 3126: @c tables in the current list.  If you start a new list, the new tags table
 3127: @c is used @emph{instead} of others.  If you add the new table to the
 3128: @c current list, it is used @emph{as well as} the others.  When the tags
 3129: @c commands scan the list of tags tables, they don't always start at the
 3130: @c beginning of the list; they start with the first tags table (if any)
 3131: @c that describes the current file, proceed from there to the end of the
 3132: @c list, and then scan from the beginning of the list until they have
 3133: @c covered all the tables in the list.
 3134: すでにタグテーブルを読み込んであるときに@code{visit-tags-table}を使うと、
 3135: 2つの選択肢があります。
 3136: 現在のタグテーブルリストに新たにタグテーブルを追加するか、
 3137: タグテーブルリストを新規に始めるかです。
 3138: タグコマンドは、現在のリストにあるすべてのタグテーブルを使用します。
 3139: 新たなタグテーブルリストを始めると、他のタグテーブルの@emph{かわり}に
 3140: 新たなタグテーブルが使われます。
 3141: 現在のリストに新たなタグテーブルを追加すると、
 3142: 他のタグテーブルと@emph{ともに}新たなものも使われます。
 3143: タグコマンドがタグテーブルリストを走査するときには、
 3144: つねにリストの先頭から始めるわけではありません。
 3145: 現在のファイルを記録しているタグテーブルがあれば、
 3146: まずそれから始めてリストの末尾まで進みます。
 3147: そして、リストの先頭からリストに含まれる
 3148: すべてのタグテーブルを調べ終るまで走査を続けます。
 3150: @vindex tags-table-list
 3151: @c   You can specify a precise list of tags tables by setting the variable
 3152: @c @code{tags-table-list} to a list of strings, like this:
 3153: 変数@code{tags-table-list}に文字列のリストを設定すれば、
 3154: タグテーブルの正確なリストをあらかじめ指定できます。
 3155: たとえば、つぎのようにします。
 3157: @c keep this on two lines for formatting in smallbook
 3158: @example
 3159: @group
 3160: (setq tags-table-list
 3161:       '("~/emacs" "/usr/local/lib/emacs/src"))
 3162: @end group
 3163: @end example
 3165: @noindent
 3166: @c This tells the tags commands to look at the @file{TAGS} files in your
 3167: @c @file{~/emacs} directory and in the @file{/usr/local/lib/emacs/src}
 3168: @c directory.  The order depends on which file you are in and which tags
 3169: @c table mentions that file, as explained above.
 3170: この設定例では、タグコマンドは、
 3171: 個人の@file{~/emacs}ディレクトリと
 3172: @file{/usr/local/lib/emacs/src}ディレクトリの
 3173: (2つの)@file{TAGS}ファイルを見にいきます。
 3174: 上で述べたように、タグファイルを使う順番は、
 3175: 対象としているファイルやそのファイルを記述しているタグテーブルに依存します。
 3177: @c   Do not set both @code{tags-file-name} and @code{tags-table-list}.
 3178: @code{tags-file-name}と@code{tags-table-list}の両方に
 3179: 値を設定してはいけません。
 3181: @node Find Tag, Tags Search, Select Tags Table, Tags
 3182: @c @subsection Finding a Tag
 3183: @subsection タグの探索
 3185: @c   The most important thing that a tags table enables you to do is to find
 3186: @c the definition of a specific tag.
 3187: タグテーブルで実現されるもっとも重要な機能は、
 3188: 指定したタグの定義を探し出すことです。
 3190: @table @kbd
 3191: @item M-.@: @var{tag} @key{RET}
 3192: @c Find first definition of @var{tag} (@code{find-tag}).
 3193: タグ@var{tag}の最初の定義を探す(@code{find-tag})。
 3194: @item C-u M-.
 3195: @c Find next alternate definition of last tag specified.
 3196: 最後に指定したタグのつぎの定義を探す。
 3197: @item C-u - M-.
 3198: @c Go back to previous tag found.
 3199: まえにみつかったタグに戻る。
 3200: @item C-M-. @var{pattern} @key{RET}
 3201: @c Find a tag whose name matches @var{pattern} (@code{find-tag-regexp}).
 3202: 名前が@var{pattern}に一致するタグを探す(@code{find-tag-regexp})。
 3203: @item C-u C-M-.
 3204: @c Find the next tag whose name matches the last pattern used.
 3205: 最後に使用したパターンに一致するつぎのタグを探する。
 3206: @item C-x 4 .@: @var{tag} @key{RET}
 3207: @c Find first definition of @var{tag}, but display it in another window
 3208: @c (@code{find-tag-other-window}).
 3209: タグ@var{tag}の最初の定義を探し、
 3210: 別のウィンドウに表示する(@code{find-tag-other-window})。
 3211: @item C-x 5 .@: @var{tag} @key{RET}
 3212: @c Find first definition of @var{tag}, and create a new frame to select the
 3213: @c buffer (@code{find-tag-other-frame}).
 3214: タグ@var{tag}の最初の定義を探し、
 3215: バッファを選択するための新たなフレームを作る。
 3216: (@code{find-tag-other-frame})。
 3217: @item M-*
 3218: @c Pop back to where you previously invoked @kbd{M-.} and friends.
 3219: まえに@kbd{M-.}を起動した場所へ戻る。
 3220: @end table
 3222: @kindex M-.
 3223: @findex find-tag
 3224: @c   @kbd{M-.}@: (@code{find-tag}) is the command to find the definition of
 3225: @c a specified tag.  It searches through the tags table for that tag, as a
 3226: @c string, and then uses the tags table info to determine the file that the
 3227: @c definition is in and the approximate character position in the file of
 3228: @c the definition.  Then @code{find-tag} visits that file, moves point to
 3229: @c the approximate character position, and searches ever-increasing
 3230: @c distances away to find the tag definition.
 3231: @kbd{M-.}@:(@code{find-tag})は、指定したタグの定義を探すコマンドです。
 3232: まず、タグテーブルの中で文字列としてタグ名を探し、
 3233: タグテーブルの情報を用いて、
 3234: 定義されているファイルの名前とファイル内でのおおよその文字位置を求めます。
 3235: 続いて、@code{find-tag}はそのソースファイルを訪れて、
 3236: ポイントをおおよその文字位置に移動してから、
 3237: 範囲を広げながらタグの定義を探します。
 3239: @c   If an empty argument is given (just type @key{RET}), the sexp in the
 3240: @c buffer before or around point is used as the @var{tag} argument.
 3241: @c @xref{Lists}, for info on sexps.
 3242: (単に@key{RET}と打って)引数を指定しないと、
 3243: ポイントの直前または周辺にあるS式を@var{tag}引数として使います。
 3244: S式に関しては、@xref{Lists}。
 3246: @c   You don't need to give @kbd{M-.} the full name of the tag; a part
 3247: @c will do.  This is because @kbd{M-.} finds tags in the table which
 3248: @c contain @var{tag} as a substring.  However, it prefers an exact match
 3249: @c to a substring match.  To find other tags that match the same
 3250: @c substring, give @code{find-tag} a numeric argument, as in @kbd{C-u
 3251: @c M-.}; this does not read a tag name, but continues searching the tags
 3252: @c table's text for another tag containing the same substring last used.
 3253: @c If you have a real @key{META} key, @kbd{M-0 M-.}@: is an easier
 3254: @c alternative to @kbd{C-u M-.}.
 3255: コマンド@kbd{M-.}にタグの名前を完全に与える必要はありません。
 3256: その一部分で十分です。
 3257: というのは、@kbd{M-.}は、部分文字列として@var{tag}を含む
 3258: タグをタグテーブルで探すからです。
 3259: もちろん、部分一致よりも全一致のほうが望ましいです。
 3260: 同じ部分文字列に一致する別のタグを探すには、
 3261: @kbd{C-u M-.}のように@code{find-tag}に数引数を指定します。
 3262: こうするとタグ名を聞いてきませんが、
 3263: 最後に使ったものと同じ部分文字列を含む別のタグを
 3264: タグテーブルから探します。
 3265: もし本物の@key{META}キーが使えるのであれば、
 3266: @kbd{C-u M-.}のかわりに@kbd{M-0 M-.}@:と打つほうが簡単でしょう。
 3268: @kindex C-x 4 .
 3269: @findex find-tag-other-window
 3270: @kindex C-x 5 .
 3271: @findex find-tag-other-frame
 3272: @c   Like most commands that can switch buffers, @code{find-tag} has a
 3273: @c variant that displays the new buffer in another window, and one that
 3274: @c makes a new frame for it.  The former is @kbd{C-x 4 .}, which invokes
 3275: @c the command @code{find-tag-other-window}.  The latter is @kbd{C-x 5 .},
 3276: @c which invokes @code{find-tag-other-frame}.
 3277: バッファの切り替えを伴う他のコマンドと同様に、
 3278: @code{find-tag}にも新たなバッファを別のウィンドウに表示したり、
 3279: 新規作成したフレームに表示する変種があります。
 3280: 前者は@kbd{C-x 4 .}であり、コマンド@code{find-tag-other-window}を起動します。
 3281: 後者は@kbd{C-x 5 .}であり、@code{find-tag-other-frame}を起動します。
 3283: @c   To move back to places you've found tags recently, use @kbd{C-u -
 3284: @c M-.}; more generally, @kbd{M-.} with a negative numeric argument.  This
 3285: @c command can take you to another buffer.  @kbd{C-x 4 .} with a negative
 3286: @c argument finds the previous tag location in another window.
 3287: 最近にみつけたタグ位置に戻るには、@kbd{C-u - M-.}を使います。
 3288: より一般的には、@kbd{M-.}に負の数引数を指定します。
 3289: このコマンドは、別のバッファへも移動します。
 3290: @kbd{C-x 4 .}に負の数引数を指定すると、
 3291: 別のウィンドウでまえのタグ位置に戻ります。
 3293: @kindex M-*
 3294: @findex pop-tag-mark
 3295: @vindex find-tag-marker-ring-length
 3296: @c   As well as going back to places you've found tags recently, you can go
 3297: @c back to places @emph{from where} you found them.  Use @kbd{M-*}, which
 3298: @c invokes the command @code{pop-tag-mark}, for this.  Typically you would
 3299: @c find and study the definition of something with @kbd{M-.} and then
 3300: @c return to where you were with @kbd{M-*}.
 3301: 最近にみつけたタグ位置に戻るだけでなく、
 3302: タグを@emph{探したとき}の場所へ戻ることもできます。
 3303: それには、コマンド@code{pop-tag-mark}を起動する@kbd{M-*}を使います。
 3304: 典型的な使い方では、@kbd{M-.}で何かの定義を調べてから、
 3305: @kbd{M-*}でもとの場所に戻ります。
 3307: @c   Both @kbd{C-u - M-.} and @kbd{M-*} allow you to retrace your steps to
 3308: @c a depth determined by the variable @code{find-tag-marker-ring-length}.
 3309: @kbd{C-u - M-.}と@kbd{M-*}のどちらも、
 3310: 変数@code{find-tag-marker-ring-length}で指定される深さまで、
 3311: 辿った経路を引き返せます。
 3313: @findex find-tag-regexp
 3314: @kindex C-M-.
 3315: @c   The command @kbd{C-M-.} (@code{find-tag-regexp}) visits the tags that
 3316: @c match a specified regular expression.  It is just like @kbd{M-.} except
 3317: @c that it does regexp matching instead of substring matching.
 3318: コマンド@kbd{C-M-.}(@code{find-tag-regexp})は、
 3319: 指定した正規表現に一致するタグを訪れます。
 3320: 部分文字列ではなく正規表現に一致するものであることを除けば、
 3321: @kbd{M-.}と同じです。
 3323: @node Tags Search, List Tags, Find Tag, Tags
 3324: @c @subsection Searching and Replacing with Tags Tables
 3325: @subsection タグテーブルを用いた探索と置換
 3327: @c   The commands in this section visit and search all the files listed in the
 3328: @c selected tags table, one by one.  For these commands, the tags table serves
 3329: @c only to specify a sequence of files to search.
 3330: ここで紹介するコマンドは、選択されたタグテーブルに記録されている
 3331: すべてのファイルを1つ1つ訪れては探索を行います。
 3332: これらのコマンドに対しては、タグテーブルは探索対象となる
 3333: 一連のファイルを指定するだけです。
 3335: @table @kbd
 3336: @item M-x tags-search @key{RET} @var{regexp} @key{RET}
 3337: @c Search for @var{regexp} through the files in the selected tags
 3338: @c table.
 3339: 選択されたタグテーブル内の各ファイルから
 3340: 指定された@var{正規表現}を探索する。
 3341: @item M-x tags-query-replace @key{RET} @var{regexp} @key{RET} @var{replacement} @key{RET}
 3342: @c Perform a @code{query-replace-regexp} on each file in the selected tags table.
 3343: 選択されたタグテーブル内の各ファイルに対して、
 3344: @code{query-replace-regexp}を実行する。
 3345: @item M-,
 3346: @c Restart one of the commands above, from the current location of point
 3347: @c (@code{tags-loop-continue}).
 3348: ポイント位置から上記のコマンドのいずれかを再実行する
 3349: (@code{tags-loop-continue})。
 3350: @end table
 3352: @findex tags-search
 3353: @c   @kbd{M-x tags-search} reads a regexp using the minibuffer, then
 3354: @c searches for matches in all the files in the selected tags table, one
 3355: @c file at a time.  It displays the name of the file being searched so you
 3356: @c can follow its progress.  As soon as it finds an occurrence,
 3357: @c @code{tags-search} returns.
 3358: @kbd{M-x tags-search}は、ミニバッファで正規表現を読み取り、
 3359: 選択されたタグテーブル内のすべてのファイル1つ1つについて、
 3360: 正規表現に一致する部分を探します。
 3361: このコマンドは探索しているファイル名を表示するので、
 3362: 進行状況がわかります。
 3363: 正規表現に一致する部分がみつかると、@code{tags-search}はすぐに戻ります。
 3365: @kindex M-,
 3366: @findex tags-loop-continue
 3367: @c   Having found one match, you probably want to find all the rest.  To find
 3368: @c one more match, type @kbd{M-,} (@code{tags-loop-continue}) to resume the
 3369: @c @code{tags-search}.  This searches the rest of the current buffer, followed
 3370: @c by the remaining files of the tags table.@refill
 3371: 一致する部分をみつけたあとに、残りも探したくなるでしょう。
 3372: つぎの一致を探すには、
 3373: @kbd{M-,}(@code{tags-loop-continue})と打って、
 3374: @code{tags-search}を再開します。
 3375: これは、カレントバッファの残りを探索してから、
 3376: タグテーブルの残りのファイルについても探索します。
 3378: @findex tags-query-replace
 3379: @c   @kbd{M-x tags-query-replace} performs a single
 3380: @c @code{query-replace-regexp} through all the files in the tags table.  It
 3381: @c reads a regexp to search for and a string to replace with, just like
 3382: @c ordinary @kbd{M-x query-replace-regexp}.  It searches much like @kbd{M-x
 3383: @c tags-search}, but repeatedly, processing matches according to your
 3384: @c input.  @xref{Replace}, for more information on query replace.
 3385: @kbd{M-x tags-query-replace}は、タグテーブル内のすべてのファイルを対象に、
 3386: @code{query-replace-regexp}を実行します。
 3387: このコマンドは、通常の@kbd{M-x query-replace-regexp}
 3388: (問い合わせ型置換)と同じく、
 3389: 探索すべき正規表現と置換文字列を読み取ります。
 3390: そして、@kbd{M-x tags-search}のように探索を行い、
 3391: 利用者の入力に応じて一致部分を処理することを繰り返します。
 3392: 問い合わせ型置換について詳しくは、@xref{Replace}。
 3394: @c   It is possible to get through all the files in the tags table with a
 3395: @c single invocation of @kbd{M-x tags-query-replace}.  But often it is
 3396: @c useful to exit temporarily, which you can do with any input event that
 3397: @c has no special query replace meaning.  You can resume the query replace
 3398: @c subsequently by typing @kbd{M-,}; this command resumes the last tags
 3399: @c search or replace command that you did.
 3400: @kbd{M-x tags-query-replace}を一度起動するだけで、
 3401: タグテーブル内の全ファイルの置換を行うことができます。
 3402: しかし、一時的に置換作業から抜け出して、
 3403: 問い合わせ型置換とは関係ないことを行えると便利です。
 3404: @kbd{M-,}と打てば、問い合わせ型置換を再開できます。
 3405: このコマンドは、最後に行ったタグの探索コマンドか置換コマンドを
 3406: 再開します。
 3408: @c   The commands in this section carry out much broader searches than the
 3409: @c @code{find-tag} family.  The @code{find-tag} commands search only for
 3410: @c definitions of tags that match your substring or regexp.  The commands
 3411: @c @code{tags-search} and @code{tags-query-replace} find every occurrence
 3412: @c of the regexp, as ordinary search commands and replace commands do in
 3413: @c the current buffer.
 3414: ここで紹介したコマンドは、@code{find-tag}系列のコマンドよりも、
 3415: 幅広い探索を実行します。
 3416: @code{find-tag}コマンドは、指定した部分文字列や正規表現に一致する
 3417: タグの定義だけをみつけます。
 3418: コマンド@code{tags-search}と@code{tags-query-replace}は、
 3419: 通常の探索コマンドや置換コマンドがカレントバッファで行うように、
 3420: 正規表現に一致するあらゆる部分を探し出します。
 3422: @c   These commands create buffers only temporarily for the files that they
 3423: @c have to search (those which are not already visited in Emacs buffers).
 3424: @c Buffers in which no match is found are quickly killed; the others
 3425: @c continue to exist.
 3426: これらのコマンドは、(Emacsバッファにまだ訪れていないものに対しては)
 3427: 探索すべきファイル用に一時的なバッファを作成します。
 3428: 一致部分がみつからなければバッファはただちに消されますが、
 3429: みつかれば存続します。
 3431: @c   It may have struck you that @code{tags-search} is a lot like
 3432: @c @code{grep}.  You can also run @code{grep} itself as an inferior of
 3433: @c Emacs and have Emacs show you the matching lines one by one.  This works
 3434: @c much like running a compilation; finding the source locations of the
 3435: @c @code{grep} matches works like finding the compilation errors.
 3436: @c @xref{Compilation}.
 3437: @code{tags-search}は、@code{grep}プログラムにたいへんよく似ていると
 3438: 思われたかもしれません。
 3439: Emacsの下位プロセスとして@code{grep}を実行して、
 3440: Emacsに一致した行を1つずつ表示させることもできます。
 3441: これは、コンパイルを実行するのと同じように動作します。
 3442: @code{grep}が一致を検出したソース箇所を探すことは、
 3443: コンパイルエラーを探すのと同様に動作します。
 3444: @xref{Compilation}。
 3446: @node List Tags,  , Tags Search, Tags
 3447: @c @subsection Tags Table Inquiries
 3448: @subsection タグテーブルの照会
 3450: @table @kbd
 3451: @item M-x list-tags @key{RET} @var{file} @key{RET}
 3452: @c Display a list of the tags defined in the program file @var{file}.
 3453: プログラムファイル@var{file}で定義されているタグの一覧を表示する。
 3454: @item M-x tags-apropos @key{RET} @var{regexp} @key{RET}
 3455: @c Display a list of all tags matching @var{regexp}.
 3456: @var{regexp}に一致するすべてのタグを表示する。
 3457: @end table
 3459: @findex list-tags
 3460: @c   @kbd{M-x list-tags} reads the name of one of the files described by
 3461: @c the selected tags table, and displays a list of all the tags defined in
 3462: @c that file.  The ``file name'' argument is really just a string to
 3463: @c compare against the file names recorded in the tags table; it is read as
 3464: @c a string rather than as a file name.  Therefore, completion and
 3465: @c defaulting are not available, and you must enter the file name the same
 3466: @c way it appears in the tags table.  Do not include a directory as part of
 3467: @c the file name unless the file name recorded in the tags table includes a
 3468: @c directory.
 3469: @kbd{M-x list-tags}は、選択されたタグテーブルに記載されている
 3470: ファイルのどれか1つのファイル名を読み取り、
 3471: そのファイルで定義されているすべてのタグを表示します。
 3472: 引数の『ファイル名』は、タグテーブルに記録されたファイル名と
 3473: 単純に文字列として比較されます。
 3474: ファイル名というよりは、文字列として読まれます。
 3475: したがって、補完やデフォルトはありませんし、
 3476: タグテーブルに格納されているとおりに正確にファイル名を入力する必要があります。
 3477: タグテーブル内のファイル名にディレクトリが含まれない限り、
 3478: ファイル名にもディレクトリを含めてはいけません。
 3480: @findex tags-apropos
 3481: @c   @kbd{M-x tags-apropos} is like @code{apropos} for tags
 3482: @c (@pxref{Apropos}).  It reads a regexp, then finds all the tags in the
 3483: @c selected tags table whose entries match that regexp, and displays the
 3484: @c tag names found.
 3485: @kbd{M-x tags-appropos}は、タグに対する@code{apropos}にあたります 
 3486: (@pxref{Apropos})。
 3487: このコマンドは、正規表現を読み取り、
 3488: 選択されたタグテーブルの中から正規表現に一致する項目のタグを
 3489: すべてみつけだし、そのタグ名を表示します。
 3491: @c   You can also perform completion in the buffer on the name space of tag
 3492: @c names in the current tags tables.  @xref{Symbol Completion}.
 3493: 現在のタグテーブルに含まれるタグ名を名前空間として、
 3494: バッファ内で補完を行うこともできます。
 3495: @xref{Symbol Completion}。
 3497: @node Emerge, C Modes, Tags, Programs
 3498: @c @section Merging Files with Emerge
 3499: @section emergeを用いたファイルの併合
 3500: @c @cindex Emerge
 3501: @cindex emerge
 3502: @c @cindex merging files
 3503: @cindex ファイルの併合
 3505: @c It's not unusual for programmers to get their signals crossed and modify
 3506: @c the same program in two different directions.  To recover from this
 3507: @c confusion, you need to merge the two versions.  Emerge makes this
 3508: @c easier.  See also @ref{Comparing Files}, for commands to compare
 3509: @c in a more manual fashion, and @ref{Emerge,,, ediff, The Ediff Manual}.
 3510: ちょっとしたミスで、1つのプログラムから2つの別の版を
 3511: 作ってしまうこともあります。
 3512: この混乱した状態を収拾するには、それらを併合する必要があります。
 3513: emergeを使うと、併合作業が容易になります。
 3514: 手動で比較するコマンドについては、@ref{Comparing Files}と
 3515: @ref{Emerge,,, ediff, The Ediff Manual}を参照してください。
 3517: @menu
 3518: * Overview of Emerge::	How to start Emerge.  Basic concepts.
 3519: * Submodes of Emerge::	Fast mode vs. Edit mode.
 3520: 			  Skip Prefers mode and Auto Advance mode.
 3521: * State of Difference::	You do the merge by specifying state A or B
 3522: 			  for each difference.
 3523: * Merge Commands::	Commands for selecting a difference,
 3524: 			  changing states of differences, etc.
 3525: * Exiting Emerge::	What to do when you've finished the merge.
 3526: * Combining in Emerge::	    How to keep both alternatives for a difference.
 3527: * Fine Points of Emerge::   Misc.
 3528: @end menu
 3530: @node Overview of Emerge, Submodes of Emerge, , Emerge
 3531: @c @subsection Overview of Emerge
 3532: @subsection emergeの概要
 3534: @c To start Emerge, run one of these four commands:
 3535: 以下の4つのコマンドのいずれかでemergeを実行します。
 3537: @table @kbd
 3538: @item M-x emerge-files
 3539: @findex emerge-files
 3540: @c Merge two specified files.
 3541: 指定した2つのファイルを併合する。
 3543: @item M-x emerge-files-with-ancestor
 3544: @findex emerge-files-with-ancestor
 3545: @c Merge two specified files, with reference to a common ancestor.
 3546: 共通の祖先を参照しながら、指定した2つのファイルを併合する。
 3548: @item M-x emerge-buffers
 3549: @findex emerge-buffers
 3550: @c Merge two buffers.
 3551: 2つのバッファを併合する。
 3553: @item M-x emerge-buffers-with-ancestor
 3554: @findex emerge-buffers-with-ancestor
 3555: @c Merge two buffers with reference to a common ancestor in a third
 3556: @c buffer.
 3557: 3番目のバッファに入っている共通の祖先を参照しながら、2つのバッファを併合する。
 3558: @end table
 3560: @c @cindex merge buffer (Emerge)
 3561: @c @cindex A and B buffers (Emerge)
 3562: @cindex 併合バッファ(emerge)
 3563: @cindex AバッファとBバッファ(emerge)
 3564: @c   The Emerge commands compare two files or buffers, and display the
 3565: @c comparison in three buffers: one for each input text (the @dfn{A buffer}
 3566: @c and the @dfn{B buffer}), and one (the @dfn{merge buffer}) where merging
 3567: @c takes place.  The merge buffer shows the full merged text, not just the
 3568: @c differences.  Wherever the two input texts differ, you can choose which
 3569: @c one of them to include in the merge buffer.
 3570: emergeコマンドは、2つのファイル、あるいは、2つのバッファを比較して、
 3571: 比較結果を3つのバッファ、つまり、
 3572: 各入力テキストに1つずつ(@dfn{Aバッファ}と@dfn{Bバッファ})と、
 3573: 併合を実施するバッファ(@dfn{併合バッファ})に表示します。
 3574: 併合バッファには、比較によって得られる差分だけでなく、
 3575: 併合したテキスト全体が表示されます。
 3576: 2つの入力テキストが相違している箇所については、
 3577: どちらのテキストを併合バッファに含めるか選択できます。
 3579: @c   The Emerge commands that take input from existing buffers use only the
 3580: @c accessible portions of those buffers, if they are narrowed
 3581: @c (@pxref{Narrowing}).
 3582: 既存のバッファを入力源とするemergeコマンドでは、
 3583: 入力バッファがナロイングされていると、
 3584: バッファの参照可能な部分だけを使います(@pxref{Narrowing})。
 3586: @c   If a common ancestor version is available, from which the two texts to
 3587: @c be merged were both derived, Emerge can use it to guess which
 3588: @c alternative is right.  Wherever one current version agrees with the
 3589: @c ancestor, Emerge presumes that the other current version is a deliberate
 3590: @c change which should be kept in the merged version.  Use the
 3591: @c @samp{with-ancestor} commands if you want to specify a common ancestor
 3592: @c text.  These commands read three file or buffer names---variant A,
 3593: @c variant B, and the common ancestor.
 3594: 併合したい2つのテキストのもとである共通の祖先にあたる版を利用できるときには、
 3595: emergeはそれを使ってどちらの選択肢が正しいのか推測します。
 3596: 一方の入力と祖先との一致部分がどこかにあれば、
 3597: もう一方の入力には併合結果に残すべき意図的な変更がなされていると推測します。
 3598: 共通の祖先のテキストを指定するには、
 3599: 名前に@samp{with-ancestor}の付いたコマンドを使ってください。
 3600: これらのコマンドは、A版、B版、共通の祖先に対応する
 3601: 3つのファイル名かバッファ名を読み取ります。
 3603: @c   After the comparison is done and the buffers are prepared, the
 3604: @c interactive merging starts.  You control the merging by typing special
 3605: @c @dfn{merge commands} in the merge buffer.  The merge buffer shows you a
 3606: @c full merged text, not just differences.  For each run of differences
 3607: @c between the input texts, you can choose which one of them to keep, or
 3608: @c edit them both together.
 3609: 入力を比較してバッファの準備を終えると、つぎは対話的な併合作業が始まります。
 3610: 併合バッファで特別な@dfn{併合コマンド}を打って併合作業を制御します。
 3611: 併合バッファには、単なる差分ではなく併合したテキスト全体が表示されます。
 3612: 入力テキストの各相違箇所に対して、どちら側を残すか選択したり、
 3613: 両者をもとにして編集できます。
 3615: @c   The merge buffer uses a special major mode, Emerge mode, with commands
 3616: @c for making these choices.  But you can also edit the buffer with
 3617: @c ordinary Emacs commands.
 3618: 併合バッファでは、emergeモードと呼ばれる特別なメジャーモードが使われ、
 3619: これらを選択するコマンドがあります。
 3620: もちろん、通常のEmacsコマンドでバッファを編集することもできます。
 3622: @c   At any given time, the attention of Emerge is focused on one
 3623: @c particular difference, called the @dfn{selected} difference.  This
 3624: @c difference is marked off in the three buffers like this:
 3625: emergeの注意は、いつでも@dfn{注目}相違箇所と呼ばれる
 3626: 相違箇所に向けられています。
 3627: 3つのバッファ内では、注目相違点はつぎのように印が付けられます。
 3629: @example
 3630: vvvvvvvvvvvvvvvvvvvv
 3631: @var{text that differs}
 3632: ^^^^^^^^^^^^^^^^^^^^
 3633: @end example
 3635: @noindent
 3636: @c Emerge numbers all the differences sequentially and the mode
 3637: @c line always shows the number of the selected difference.
 3638: emergeはすべての相違箇所に順に番号をふります。
 3639: さらに、モード行にはつねに注目相違箇所の番号が表示されます。
 3641: @c   Normally, the merge buffer starts out with the A version of the text.
 3642: @c But when the A version of a difference agrees with the common ancestor,
 3643: @c then the B version is initially preferred for that difference.
 3644: 通常、併合バッファはA版の内容で始まります。
 3645: しかし、A版の内容が共通の祖先の内容と一致するときには、
 3646: 併合バッファはB版の内容で始まります。
 3648: @c   Emerge leaves the merged text in the merge buffer when you exit.  At
 3649: @c that point, you can save it in a file with @kbd{C-x C-w}.  If you give a
 3650: @c numeric argument to @code{emerge-files} or
 3651: @c @code{emerge-files-with-ancestor}, it reads the name of the output file
 3652: @c using the minibuffer.  (This is the last file name those commands read.)
 3653: @c Then exiting from Emerge saves the merged text in the output file.
 3654: emergeを終えると、併合バッファにはその時点の併合済みテキストが残ります。
 3655: emerge終了時には、@kbd{C-x C-w}でファイルに保存できます。
 3656: @code{emerge-files}や@code{emerge-files-with-ancestor}に
 3657: 数引数を指定すると、ミニバッファで出力ファイル名を読み取ります。
 3658: (どちらの場合でも、これがいちばん最後に聞かれるファイル名。)
 3659: すると、emerge終了時には、併合済みのテキストがその出力ファイルに保存されます。
 3661: @c   Normally, Emerge commands save the output buffer in its file when you
 3662: @c exit.  If you abort Emerge with @kbd{C-]}, the Emerge command does not
 3663: @c save the output buffer, but you can save it yourself if you wish.
 3664: emergeを終えると、通常、emergeコマンドが併合バッファをファイルに保存します。
 3665: emergeを@kbd{C-]}でアボートするとemergeコマンドは併合バッファを保存しませんが、
 3666: 必要ならばユーザー自身で保存できます。
 3668: @node Submodes of Emerge, State of Difference, Overview of Emerge, Emerge
 3669: @c @subsection Submodes of Emerge
 3670: @subsection emergeのサブモード
 3672: @c   You can choose between two modes for giving merge commands: Fast mode
 3673: @c and Edit mode.  In Fast mode, basic merge commands are single
 3674: @c characters, but ordinary Emacs commands are disabled.  This is
 3675: @c convenient if you use only merge commands.  In Edit mode, all merge
 3676: @c commands start with the prefix key @kbd{C-c C-c}, and the normal Emacs
 3677: @c commands are also available.  This allows editing the merge buffer, but
 3678: @c slows down Emerge operations.
 3679: 併合コマンドを指示するためのモードが2つ、つまり、
 3680: 高速モード(Fast mode)と編集モード(Edit mode)があり、どちらかを選べます。
 3681: 高速モードでは、基本的な併合コマンドは1文字で表され、
 3682: 通常のEmacsコマンドは禁止されています。
 3683: 併合コマンドだけを使用するのであれば、高速モードが便利です。
 3684: 編集モードでは、すべての併合コマンドはプレフィックス@kbd{C-c C-c}で始まり、
 3685: 通常のEmacsコマンドも使えます。
 3686: このモードでは、併合バッファを編集できますが、emergeの処理は遅くなります。
 3688: @c   Use @kbd{e} to switch to Edit mode, and @kbd{C-c C-c f} to switch to
 3689: @c Fast mode.  The mode line indicates Edit and Fast modes with @samp{E}
 3690: @c and @samp{F}.
 3691: 編集モードに切り替えるには@kbd{e}を使い、
 3692: 高速モードに切り替えるには@kbd{C-c C-c f}を使います。
 3693: モード行には、編集モードは@samp{E}、高速モードは@samp{F}と表示されます。
 3695: @c   Emerge has two additional submodes that affect how particular merge
 3696: @c commands work: Auto Advance mode and Skip Prefers mode.
 3697: emergeには、特定の併合コマンドの動作に影響を与えるサブモードが
 3698: さらに2つあります。
 3699: 自動前進(auto-advance)モードと
 3700: 優先箇所スキップ(skip-prefers)モードです。
 3702: @c   If Auto Advance mode is in effect, the @kbd{a} and @kbd{b} commands
 3703: @c advance to the next difference.  This lets you go through the merge
 3704: @c faster as long as you simply choose one of the alternatives from the
 3705: @c input.  The mode line indicates Auto Advance mode with @samp{A}.
 3706: 自動前進モードがオンであると、コマンド@kbd{a}と@kbd{b}は、
 3707: 自動的につぎの相違箇所にポイントを進めます。
 3708: このモードでは、どちらかの入力だけを選ぶ状況である限り、高速に併合を行えます。
 3709: モード行には@samp{A}と表示され、自動前進モードであるを示します。
 3711: @c   If Skip Prefers mode is in effect, the @kbd{n} and @kbd{p} commands
 3712: @c skip over differences in states prefer-A and prefer-B (@pxref{State of
 3713: @c Difference}).  Thus you see only differences for which neither version
 3714: @c is presumed ``correct.''  The mode line indicates Skip Prefers mode with
 3715: @c @samp{S}.
 3716: 優先箇所スキップモードがオンであると、
 3717: コマンド@kbd{n}と@kbd{p}は、
 3718: A優先/B優先の状態にある相違箇所をスキップします
 3719: (@pxref{State of Difference})。
 3720: つまり、どちらの版も『正しい』と推定されない相違箇所だけを調べことになります。
 3721: モード行には@samp{S}と表示され、優先箇所スキップモードであることを示します。
 3723: @findex emerge-auto-advance-mode
 3724: @findex emerge-skip-prefers-mode
 3725: @c   Use the command @kbd{s a} (@code{emerge-auto-advance-mode}) to set or
 3726: @c clear Auto Advance mode.  Use @kbd{s s}
 3727: @c (@code{emerge-skip-prefers-mode}) to set or clear Skip Prefers mode.
 3728: @c These commands turn on the mode with a positive argument, turns it off
 3729: @c with a negative or zero argument, and toggle the mode with no argument.
 3730: 自動前進モードをオン/オフするには、
 3731: コマンド@kbd{s a}(@code{emerge-auto-advance-mode})を使います。
 3732: 優先箇所スキップモードをオン/オフするには、
 3733: コマンド@kbd{s s}(@code{emerge-skip-prefers-mode})を使います。
 3734: どちらのコマンドも、正の数引数を指定するとオンにし、
 3735: 負あるいは0の数引数を指定するとオフにし、
 3736: 引数を指定しないとトグル(切り替え)します。
 3738: @node State of Difference, Merge Commands, Submodes of Emerge, Emerge
 3739: @c @subsection State of a Difference
 3740: @subsection 相違箇所の状態
 3742: @c   In the merge buffer, a difference is marked with lines of @samp{v} and
 3743: @c @samp{^} characters.  Each difference has one of these seven states:
 3744: 併合バッファ内では、相違箇所は@samp{v}と@samp{^}の文字だけの行に
 3745: 挟まれて示されます。
 3746: 各相違箇所は、つぎの7つのいずれかの状態になっています。
 3748: @table @asis
 3749: @c @item A
 3750: @item 状態A
 3751: @c The difference is showing the A version.  The @kbd{a} command always
 3752: @c produces this state; the mode line indicates it with @samp{A}.
 3753: この相違箇所はA版の内容である。
 3754: @kbd{a}コマンドは必ずこの状態にする。
 3755: モード行には@samp{A}と表示される。
 3757: @c @item B
 3758: @item 状態B
 3759: @c The difference is showing the B version.  The @kbd{b} command always
 3760: @c produces this state; the mode line indicates it with @samp{B}.
 3761: この相違箇所はB版の内容である。
 3762: @kbd{b}コマンドは必ずこの状態にする。
 3763: モード行には@samp{B}と表示される。
 3765: @c @item default-A
 3766: @c @itemx default-B
 3767: @item デフォルトA
 3768: @itemx デフォルトB
 3769: @c The difference is showing the A or the B state by default, because you
 3770: @c haven't made a choice.  All differences start in the default-A state
 3771: @c (and thus the merge buffer is a copy of the A buffer), except those for
 3772: @c which one alternative is ``preferred'' (see below).
 3773: まだ決心していないので、『デフォルト』で、
 3774: 相違箇所は状態A(A版の内容)か状態B(B版の内容)である。
 3775: どちらかの選択肢が『優先される』(下記参照)場合を除いて、
 3776: 相違箇所はすべてデフォルトAで始まる
 3777: (つまり、併合バッファの内容はAバッファのコピー)。
 3779: @c When you select a difference, its state changes from default-A or
 3780: @c default-B to plain A or B.  Thus, the selected difference never has
 3781: @c state default-A or default-B, and these states are never displayed in
 3782: @c the mode line.
 3783: 相違箇所を選択すると、その状態は、デフォルトAやデフォルトBから
 3784: 状態Aや状態Bに遷移する。
 3785: つまり、一度でも選択した相違箇所は、
 3786: デフォルトAやデフォルトBの状態であることはなく、
 3787: これらの状態はけっしてモード行には表示されない。
 3789: @c The command @kbd{d a} chooses default-A as the default state, and @kbd{d
 3790: @c b} chooses default-B.  This chosen default applies to all differences
 3791: @c which you haven't ever selected and for which no alternative is preferred.
 3792: @c If you are moving through the merge sequentially, the differences you
 3793: @c haven't selected are those following the selected one.  Thus, while
 3794: @c moving sequentially, you can effectively make the A version the default
 3795: @c for some sections of the merge buffer and the B version the default for
 3796: @c others by using @kbd{d a} and @kbd{d b} between sections.
 3797: デフォルトの状態として、
 3798: コマンド@kbd{d a}はデフォルトAを選び、
 3799: @kbd{d b}デフォルトBを選ぶ。
 3800: これらのコマンドで選んだデフォルトの状態は、
 3801: 一度も選択してなく、かつ、どちらの版も優先されない相違箇所に適用される。
 3802: 併合作業を先頭から順に行っている場合、
 3803: 最後に選択した相違箇所に続く相違箇所群が一度も選択されていないものである。
 3804: したがって、先頭から順に進めるのであれば、
 3805: @kbd{d a}と@kbd{d b}を使い分けて、
 3806: 併合バッファのある部分ではA版をデフォルトとし、
 3807: 別の部分ではB版をデフォルトとすることができる。
 3809: @c @item prefer-A
 3810: @c @itemx prefer-B
 3811: @item 優先A
 3812: @itemx 優先B
 3813: @c The difference is showing the A or B state because it is
 3814: @c @dfn{preferred}.  This means that you haven't made an explicit choice,
 3815: @c but one alternative seems likely to be right because the other
 3816: @c alternative agrees with the common ancestor.  Thus, where the A buffer
 3817: @c agrees with the common ancestor, the B version is preferred, because
 3818: @c chances are it is the one that was actually changed.
 3819: どちらかが@dfn{優先され}ているので、
 3820: 相違箇所は状態A(A版の内容)か状態B(B版の内容)である。
 3821: つまり、明示的にはまだ選択していないが、当該箇所では、
 3822: 一方の版が共通の祖先に一致するため、
 3823: 他方の版のほうが正しく思われるのである。
 3824: したがって、Aバッファが共通の祖先と一致する箇所では、
 3825: 実際に変更されたほうが正しいものである可能性があるので、
 3826: B版が優先される。
 3828: @c These two states are displayed in the mode line as @samp{A*} and @samp{B*}.
 3829: これらの2つの状態は、モード行では@samp{A*}や@samp{B*}と表示される。
 3831: @c @item combined
 3832: @item 混合状態
 3833: @c The difference is showing a combination of the A and B states, as a
 3834: @c result of the @kbd{x c} or @kbd{x C} commands.
 3835: @kbd{x c}や@kbd{x C}コマンドの結果、
 3836: 相違箇所は、状態A(A版の内容)と状態B(B版の内容)の混合状態になっている。
 3838: @c Once a difference is in this state, the @kbd{a} and @kbd{b} commands
 3839: @c don't do anything to it unless you give them a numeric argument.
 3840: 相違箇所がいったんこの状態になると、
 3841: コマンド@kbd{a}や@kbd{b}に数引数を指定しない限り、何もしない。
 3843: @c The mode line displays this state as @samp{comb}.
 3844: この状態は、モード行では@samp{comb}と表示される。
 3845: @end table
 3847: @node Merge Commands, Exiting Emerge, State of Difference, Emerge
 3848: @c @subsection Merge Commands
 3849: @subsection 併合コマンド
 3851: @c   Here are the Merge commands for Fast mode; in Edit mode, precede them
 3852: @c with @kbd{C-c C-c}:
 3853: ここでは、高速モードの併合操作コマンドを示します。
 3854: 編集モードでは、これらのコマンドのまえに@kbd{C-c C-c}を付けます。
 3856: @table @kbd
 3857: @item p
 3858: @c Select the previous difference.
 3859: まえの相違箇所を選択する。
 3861: @item n
 3862: @c Select the next difference.
 3863: つぎの相違箇所を選択する。
 3865: @item a
 3866: @c Choose the A version of this difference.
 3867: この相違箇所をA版にする(状態A)。
 3869: @item b
 3870: @c Choose the B version of this difference.
 3871: この相違箇所をB版にする(状態B)。
 3873: @item C-u @var{n} j
 3874: @c Select difference number @var{n}.
 3875: 番号@var{n}の相違箇所を選択する。
 3877: @item .
 3878: @c Select the difference containing point.  You can use this command in the
 3879: @c merge buffer or in the A or B buffer.
 3880: ポイントを含む相違箇所を選択する。
 3881: このコマンドは、併合バッファ、Aバッファ、Bバッファのいずれでも使える。
 3883: @item q
 3884: @c Quit---finish the merge.
 3885: 終了する。
 3886: 併合作業を完了。
 3888: @item C-]
 3889: @c Abort---exit merging and do not save the output.
 3890: アボートする。
 3891: 併合作業をやめ、併合結果も保存しない。
 3893: @item f
 3894: @c Go into Fast mode.  (In Edit mode, this is actually @kbd{C-c C-c f}.)
 3895: 高速モードに移行する。
 3896: (編集モードでは、実際には@kbd{C-c C-c f}コマンド。)
 3898: @item e
 3899: @c Go into Edit mode.
 3900: 編集モードに移行する。
 3902: @item l
 3903: @c Recenter (like @kbd{C-l}) all three windows.
 3904: 3つのウィンドウすべてを(@kbd{C-l}のように)再表示する。
 3906: @item - 
 3907: @c Specify part of a prefix numeric argument.
 3908: 数引数の一部を指定する。
 3910: @item @var{digit}
 3911: @c Also specify part of a prefix numeric argument.
 3912: これも、数引数の一部を指定する。
 3914: @item d a
 3915: @c Choose the A version as the default from here down in
 3916: @c the merge buffer.
 3917: 併合バッファのこれ以降では、A版を選ぶ(デフォルトA)。
 3919: @item d b
 3920: @c Choose the B version as the default from here down in
 3921: @c the merge buffer.
 3922: 併合バッファのこれ以降では、B版を選ぶ(デフォルトB)。
 3924: @item c a
 3925: @c Copy the A version of this difference into the kill ring.
 3926: この相違箇所のA版のテキストをキルリングにコピーする。
 3928: @item c b
 3929: @c Copy the B version of this difference into the kill ring.
 3930: この相違箇所のB版のテキストをキルリングにコピーする。
 3932: @item i a
 3933: @c Insert the A version of this difference at point.
 3934: この相違箇所のA版のテキストをポイント位置に挿入する。
 3936: @item i b
 3937: @c Insert the B version of this difference at point.
 3938: この相違箇所のB版のテキストをポイント位置に挿入する。
 3940: @item m
 3941: @c Put point and mark around the difference.
 3942: 相違箇所の周りにポイントとマークを設定する。
 3944: @item ^
 3945: @c Scroll all three windows down (like @kbd{M-v}).
 3946: 3つのウィンドウすべてを(@kbd{M-v}のように)下にスクロールする。
 3948: @item v
 3949: @c Scroll all three windows up (like @kbd{C-v}).
 3950: 3つのウィンドウすべてを(@kbd{C-v}のように)上にスクロールする。
 3952: @item <
 3953: @c Scroll all three windows left (like @kbd{C-x <}).
 3954: 3つのウィンドウすべてを(@kbd{C-x <}のように)左にスクロールする。
 3956: @item >
 3957: @c Scroll all three windows right (like @kbd{C-x >}).
 3958: 3つのウィンドウすべてを(@kbd{C-x >}のように)右にスクロールする。
 3960: @item |
 3961: @c Reset horizontal scroll on all three windows.
 3962: 3つのウィンドウすべてで、水平方向のスクロール分をリセットする。
 3964: @item x 1
 3965: @c Shrink the merge window to one line.  (Use @kbd{C-u l} to restore it
 3966: @c to full size.)
 3967: 併合バッファを表示しているウィンドウの高さを1行に縮小する。
 3968: (フルサイズに戻すには@kbd{C-u l}を使う。)
 3970: @item x c
 3971: @c Combine the two versions of this difference (@pxref{Combining in
 3972: @c Emerge}).
 3973: この相違箇所の2つの版を混合する(@pxref{Combining in Emerge})。 
 3975: @item x f
 3976: @c Show the names of the files/buffers Emerge is operating on, in a Help
 3977: @c window.  (Use @kbd{C-u l} to restore windows.)
 3978: emergeで作業しているファイル/バッファの名前を、
 3979: ヘルプ用ウィンドウに表示する。
 3980: (ウィンドウをもとの状態に戻すには@kbd{C-u l}を使う。)
 3982: @item x j
 3983: @c Join this difference with the following one.
 3984: @c (@kbd{C-u x j} joins this difference with the previous one.)
 3985: この相違箇所を、つぎの相違箇所と結合する。
 3986: (@kbd{C-u x j}では、まえの相違箇所と結合する。)
 3988: @item x s
 3989: @c Split this difference into two differences.  Before you use this
 3990: @c command, position point in each of the three buffers at the place where
 3991: @c you want to split the difference.
 3992: この相違箇所を2つに分割する。
 3993: このコマンドを使うまえに、3つのバッファそれぞれで、
 3994: 相違箇所を分割したい位置にポイントを移動しておく。
 3996: @item x t
 3997: @c Trim identical lines off the top and bottom of the difference.
 3998: @c Such lines occur when the A and B versions are
 3999: @c identical but differ from the ancestor version.
 4000: 相違箇所の先頭や末尾にある同じ行を取り去る。
 4001: このような行が現れるのは、
 4002: A版とB版は一致しているが、共通の祖先とは一致しない場合。
 4003: @end table
 4005: @node Exiting Emerge, Combining in Emerge, Merge Commands, Emerge
 4006: @c @subsection Exiting Emerge
 4007: @subsection emergeの終了
 4009: @c   The @kbd{q} command (@code{emerge-quit}) finishes the merge, storing
 4010: @c the results into the output file if you specified one.  It restores the
 4011: @c A and B buffers to their proper contents, or kills them if they were
 4012: @c created by Emerge and you haven't changed them.  It also disables the
 4013: @c Emerge commands in the merge buffer, since executing them later could
 4014: @c damage the contents of the various buffers.
 4015: @kbd{q}コマンド(@code{emerge-quit})は、併合を終了し、
 4016: 出力ファイルを指定してあれば、そこに結果を保存します。
 4017: AバッファとBバッファは正しい内容に復元されますが、
 4018: emergeがAバッファとBバッファを作成して、かつ、編集されていなければ、
 4019: それらをキルします。
 4020: さらに、併合バッファでのemergeコマンドを使用禁止にします。
 4021: というのは、これ以降に併合コマンドを実行すると
 4022: さまざまなバッファが悪影響を受ける可能性があるからです。
 4024: @c   @kbd{C-]} aborts the merge.  This means exiting without writing the
 4025: @c output file.  If you didn't specify an output file, then there is no
 4026: @c real difference between aborting and finishing the merge.
 4027: @kbd{C-]}は、併合作業をアボートします。
 4028: つまり、出力ファイルに書き出さずに終ります。
 4029: 出力ファイルを指定していなければ、併合作業をアボートしようが終了しようが、
 4030: 何の違いもありません。
 4032: @c   If the Emerge command was called from another Lisp program, then its
 4033: @c return value is @code{t} for successful completion, or @code{nil} if you
 4034: @c abort.
 4035: 他のLispプログラムからemergeコマンドが呼び出された場合、
 4036: 正しく終了すると@code{t}、アボートしたときは@code{nil}が返されます。
 4038: @node Combining in Emerge, Fine Points of Emerge, Exiting Emerge, Emerge
 4039: @c @subsection Combining the Two Versions
 4040: @subsection 2つの版の混合
 4042: @c   Sometimes you want to keep @emph{both} alternatives for a particular
 4043: @c difference.  To do this, use @kbd{x c}, which edits the merge buffer
 4044: @c like this:
 4045: 相違箇所によっては、@emph{両方}の版を残したいこともあるでしょう。
 4046: そのような場合には、@kbd{x c}を使います。
 4047: すると、併合バッファはつぎのようになります。
 4049: @example
 4050: @group
 4051: #ifdef NEW
 4052: @var{version from A buffer}
 4053: #else /* not NEW */
 4054: @var{version from B buffer}
 4055: #endif /* not NEW */
 4056: @end group
 4057: @end example
 4059: @noindent
 4060: @vindex emerge-combine-versions-template
 4061: @c While this example shows C preprocessor conditionals delimiting the two
 4062: @c alternative versions, you can specify the strings to use by setting
 4063: @c the variable @code{emerge-combine-versions-template} to a string of your
 4064: @c choice.  In the string, @samp{%a} says where to put version A, and
 4065: @c @samp{%b} says where to put version B.  The default setting, which
 4066: @c produces the results shown above, looks like this:
 4067: この例では、2つの版をCのプリプロセッサの条件節で分けていますが、
 4068: 変数@code{emerge-combine-versions-template}に好みの文字列を設定すれば、
 4069: このコマンドで使用する文字列を指定できます。
 4070: この文字列内では、A版のテキストを置く箇所には@samp{%a}を、
 4071: B版のを置く箇所には@samp{%b}を指定します。
 4072: 上に示した結果を生じるデフォルトの設定はつぎのとおりです。
 4074: @example
 4075: @group
 4076: "#ifdef NEW\n%a#else /* not NEW */\n%b#endif /* not NEW */\n"
 4077: @end group
 4078: @end example
 4080: @node Fine Points of Emerge,  , Combining in Emerge, Emerge
 4081: @c @subsection Fine Points of Emerge
 4082: @subsection 細かな注意点
 4084: @c   During the merge, you mustn't try to edit the A and B buffers yourself.
 4085: @c Emerge modifies them temporarily, but ultimately puts them back the way
 4086: @c they were.
 4087: 併合作業中には、AバッファやBバッファを勝手に編集してはいけません。
 4088: emergeは一時的にこれらのバッファの内容を変更しますが、
 4089: 最終的にはもとの状態に戻します。
 4091: @c   You can have any number of merges going at once---just don't use any one
 4092: @c buffer as input to more than one merge at once, since the temporary
 4093: @c changes made in these buffers would get in each other's way.
 4094: 複数の併合処理を同時に進めることもできますが、
 4095: 別の併合処理の入力に同じバッファを使用してはいけません。
 4096: というのは、一時的にせよ、互いに異なる複数の変更が
 4097: 1つのバッファに加えられてしまうからです。
 4099: @c   Starting Emerge can take a long time because it needs to compare the
 4100: @c files fully.  Emacs can't do anything else until @code{diff} finishes.
 4101: @c Perhaps in the future someone will change Emerge to do the comparison in
 4102: @c the background when the input files are large---then you could keep on
 4103: @c doing other things with Emacs until Emerge is ready to accept
 4104: @c commands.
 4105: 入力ファイル全体を比較する必要があるため、
 4106: emergeの開始にはしばらく時間がかかる場合もあります。
 4107: また、@code{diff}コマンドが完了するまで、emergeは何もできません。
 4108: たぶん、そのうち誰かがemergeを変更して、
 4109: 入力ファイルが大きいときにはバックグラウンドで比較を行うようにするでしょう。
 4110: そうすれば、emergeがコマンドを受け付けるようになるまで、
 4111: Emacsで他の作業を続けられます。
 4113: @vindex emerge-startup-hook
 4114: @c   After setting up the merge, Emerge runs the hook
 4115: @c @code{emerge-startup-hook} (@pxref{Hooks}).
 4116: フック@code{emerge-startup-hook}(@pxref{Hooks})が、併合処理の設定の最後
 4117: に実行されます。
 4119: @node C Modes, Fortran, Emerge, Programs
 4120: @c @section C and Related Modes
 4121: @section Cモードと関連するモード
 4122: @c @cindex C mode
 4123: @c @cindex Java mode
 4124: @c @cindex Pike mode
 4125: @c @cindex IDL mode
 4126: @c @cindex CORBA IDL mode
 4127: @c @cindex Objective C mode
 4128: @c @cindex C++ mode
 4129: @c @cindex mode, Java
 4130: @c @cindex mode, C
 4131: @c @cindex mode, Objective C
 4132: @c @cindex mode, CORBA IDL
 4133: @c @cindex mode, Pike
 4134: @cindex Cモード
 4135: @cindex Javaモード
 4136: @cindex Pikeモード
 4137: @cindex IDLモード
 4138: @cindex CORBA IDLモード
 4139: @cindex Objective Cモード
 4140: @cindex C++モード
 4141: @cindex モード、Java
 4142: @cindex モード、C
 4143: @cindex モード、Objective C
 4144: @cindex モード、CORBA IDL
 4145: @cindex モード、Pike
 4147: @c   This section describes special features available in C, C++,
 4148: @c Objective-C, Java, CORBA IDL, and Pike modes.  When we say ``C mode and
 4149: @c related modes,'' those are the modes we mean.
 4150: 本節では、C、C++、Objective-C、Java、CORBA IDL、
 4151: Pike用の各モードで利用可能な特別な機能について述べます。
 4152: 『Cモードと関連するモード』と書いたときには、
 4153: これらのモードを意味します。
 4155: @menu
 4156: * Motion in C::
 4157: * Electric C::
 4158: * Hungry Delete::
 4159: * Other C Commands::
 4160: * Comments in C::
 4161: @end menu
 4163: @node Motion in C, Electric C, , C Modes
 4164: @c @subsection C Mode Motion Commands
 4165: @subsection Cモードの移動コマンド
 4167: @c   This section describes commands for moving point, in C mode and
 4168: @c related modes.
 4169: 本節では、Cモードとその関連モードでポイントを移動する
 4170: コマンドについて述べます。
 4172: @table @code
 4173: @item C-c C-u
 4174: @c @kindex C-c C-u @r{(C mode)}
 4175: @kindex C-c C-u @r{(Cモード)}
 4176: @findex c-up-conditional
 4177: @c Move point back to the containing preprocessor conditional, leaving the
 4178: @c mark behind.  A prefix argument acts as a repeat count.  With a negative
 4179: @c argument, move point forward to the end of the containing
 4180: @c preprocessor conditional.  When going backwards, @code{#elif} is treated
 4181: @c like @code{#else} followed by @code{#if}.  When going forwards,
 4182: @c @code{#elif} is ignored.@refill
 4183: マークをポイント位置に設定し、
 4184: ポイントを含むプリプロセッサの条件節の先頭に後向きにポイントを戻す。
 4185: 数引数は反復回数として働く。
 4186: 負の引数を指定すると、条件節の末尾に前向きにポイントを移動する。
 4187: 後向きに戻る場合、
 4188: @code{#elif}は、@code{#if}が続く@code{#else}のように扱われる。
 4189: 前向きに進む場合、@code{#elif}は無視される
 4190: @footnote{【訳注】@code{#elif}のところで止まってしまう。}。
 4192: @item C-c C-p
 4193: @c @kindex C-c C-p @r{(C mode)}
 4194: @kindex C-c C-p @r{(Cモード)}
 4195: @findex c-backward-conditional
 4196: @c Move point back over a preprocessor conditional, leaving the mark
 4197: @c behind.  A prefix argument acts as a repeat count.  With a negative
 4198: @c argument, move forward.
 4199: マークをポイント位置に設定し、
 4200: プリプロセッサの条件節を横断して後向きにポイントを移動する。
 4201: 数引数は反復回数として働く。
 4202: 負の引数を指定すると、前向きに移動する。
 4204: @item C-c C-n
 4205: @c @kindex C-c C-n @r{(C mode)}
 4206: @kindex C-c C-n @r{(Cモード)}
 4207: @findex c-forward-conditional
 4208: @c Move point forward across a preprocessor conditional, leaving the mark
 4209: @c behind.  A prefix argument acts as a repeat count.  With a negative
 4210: @c argument, move backward.
 4211: マークをポイント位置に設定し、
 4212: プリプロセッサの条件節を横断して前向きにポイントを移動する。
 4213: 数引数は反復回数として働く。
 4214: 負の引数を指定すると、後向きに移動する。
 4216: @item M-a
 4217: @kindex ESC a
 4218: @findex c-beginning-of-statement
 4219: @c Move point to the beginning of the innermost C statement
 4220: @c (@code{c-beginning-of-statement}).  If point is already at the beginning
 4221: @c of a statement, move to the beginning of the preceding statement.  With
 4222: @c prefix argument @var{n}, move back @var{n} @minus{} 1 statements.
 4223: もっとも内側のCの文の先頭にポイントを移動する
 4224: (@code{c-beginning-of-statement})。
 4225: すでに文の先頭にポイントがある場合、直前の文の先頭に移動する。
 4226: 数引数@var{n}を指定すると、@var{n}@minus{}1だけまえの文に移動する。
 4228: @c If point is within a string or comment, or next to a comment (only
 4229: @c whitespace between them), this command moves by sentences instead of
 4230: @c statements.
 4231: ポイントが、文字列やコメントの内側、あるいは、
 4232: コメントのうしろ(コメントのあいだに白文字がある場合のみ)にある場合、
 4233: Cの文ではなく自然言語の文単位で移動する。
 4235: @c When called from a program, this function takes three optional
 4236: @c arguments: the numeric prefix argument, a buffer position limit
 4237: @c (don't move back before that place), and a flag that controls whether
 4238: @c to do sentence motion when inside of a comment.
 4239: プログラムから呼ばれるときには、この関数は、3つの引数、つまり、
 4240: 反復回数、(これよりも後向きには戻らない)移動限界、
 4241: ポイントがコメントの内側にある場合に自然言語の文単位の移動をするかどうか、
 4242: を取るが、これらは省略できる。
 4244: @item M-e
 4245: @kindex ESC e
 4246: @findex c-end-of-statement
 4247: @c Move point to the end of the innermost C statement; like @kbd{M-a}
 4248: @c except that it moves in the other direction (@code{c-end-of-statement}).
 4249: もっとも内側のCの文の末尾にポイントを移動する。
 4250: @kbd{M-a}と同じだが、移動方向が逆(@code{c-end-of-statement})。
 4252: @item M-x c-backward-into-nomenclature
 4253: @findex c-backward-into-nomenclature
 4254: @c Move point backward to beginning of a C++ nomenclature section or word.
 4255: @c With prefix argument @var{n}, move @var{n} times.  If @var{n} is
 4256: @c negative, move forward.  C++ nomenclature means a symbol name in the
 4257: @c style of NamingSymbolsWithMixedCaseAndNoUnderlines; each capital letter
 4258: @c begins a section or word.
 4259: C++の命名語法の部分や単語の先頭に後向きにポイントを移動する。
 4260: 数引数@var{n}を指定すると、@var{n}回移動する。
 4261: @var{n}が負ならば、前向きに移動する。
 4262: C++の命名語法とは、
 4263: NamingSymbolsWithMixedCaseAndNoUnderlinesのような形のシンボル名のこと
 4264: (つまり、大文字で始めた単語を連結したもの)。
 4265: 各大文字が部分や単語の先頭となる。
 4267: @c In the GNU project, we recommend using underscores to separate words
 4268: @c within an identifier in C or C++, rather than using case distinctions.
 4269: GNUプロジェクトでは、
 4270: CやC++の識別子は、大文字小文字で区別するのではなく、
 4271: 単語を下線で区切ることを推奨する。
 4273: @item M-x c-forward-into-nomenclature
 4274: @findex c-forward-into-nomenclature
 4275: @c Move point forward to end of a C++ nomenclature section or word.
 4276: @c With prefix argument @var{n}, move @var{n} times.
 4277: C++の命名語法の部分や単語の末尾に前向きにポイントを移動する。
 4278: 数引数@var{n}を指定すると、@var{n}回移動する。
 4279: @end table
 4281: @node Electric C, Hungry Delete, Motion in C, C Modes
 4282: @c @subsection Electric C Characters
 4283: @subsection エレクトリックC文字
 4285: @c   In C mode and related modes, certain printing characters are
 4286: @c ``electric''---in addition to inserting themselves, they also reindent
 4287: @c the current line and may insert newlines.  This feature is controlled by
 4288: @c the variable @code{c-auto-newline}.  The ``electric'' characters are
 4289: @c @kbd{@{}, @kbd{@}}, @kbd{:}, @kbd{#}, @kbd{;}, @kbd{,}, @kbd{<},
 4290: @c @kbd{>}, @kbd{/}, @kbd{*}, @kbd{(}, and @kbd{)}.
 4291: Cモードとその関連モードでは、ある種の印字文字は『エレクトリック』です。
 4292: つまり、その文字自身を挿入することに加えて、
 4293: 現在行を字下げし直したり、改行も挿入することさえあります。
 4294: この機能は、変数@code{c-auto-newline}で制御されます。
 4295: 『エレクトリック』文字は、@kbd{@{}、@kbd{@}}、@kbd{:}、@kbd{#}、
 4296: @kbd{;}、@kbd{,}、@kbd{<}、@kbd{>}、@kbd{/}、@kbd{*}、@kbd{(}、@kbd{)}です。
 4298: @c   Electric characters insert newlines only when the @dfn{auto-newline}
 4299: @c feature is enabled (indicated by @samp{/a} in the mode line after the
 4300: @c mode name).  This feature is controlled by the variable
 4301: @c @code{c-auto-newline}.  You can turn this feature on or off with the
 4302: @c command @kbd{C-c C-a}:
 4303: @dfn{自動改行}(auto-newline)機能がオン
 4304: (モード行のモード名のあとに@samp{/a}と表示される)の場合に限り、
 4305: エレクトリック文字は改行を挿入します。
 4306: この機能は、変数@code{c-auto-newline}で制御されます。
 4307: コマンド@kbd{C-c C-a}でこの機能をオン/オフできます。
 4309: @table @kbd
 4310: @item C-c C-a
 4311: @c @kindex C-c C-a @r{(C mode)}
 4312: @kindex C-c C-a @r{(Cモード)}
 4313: @findex c-toggle-auto-state
 4314: @c Toggle the auto-newline feature (@code{c-toggle-auto-state}).  With a
 4315: @c prefix argument, this command turns the auto-newline feature on if the
 4316: @c argument is positive, and off if it is negative.
 4317: 自動改行機能をオン/オフする(@code{c-toggle-auto-state})。
 4318: 数引数を指定した場合、正ならば自動改行機能をオンにし、
 4319: 負ならばオフにする。
 4320: @end table
 4322: @c   The colon character is electric because that is appropriate for a
 4323: @c single colon.  But when you want to insert a double colon in C++, the
 4324: @c electric behavior of colon is inconvenient.  You can insert a double
 4325: @c colon with no reindentation or newlines by typing @kbd{C-c :}:
 4326: コロン@kbd{:}はエレクトリックです。
 4327: なぜなら、単独のコロンの入力の解釈としてはそれが適切だからです。
 4328: しかし、C++で2つの連続するコロンを挿入する場合、
 4329: コロンのエレクトリックな動作は不便です。
 4330: @kbd{C-c :}と打てば、字下げも改行の挿入も行わずにコロンを2つ挿入できます。
 4332: @table @kbd
 4333: @item C-c :
 4334: @c @kindex C-c : @r{(C mode)}
 4335: @kindex C-c : @r{(Cモード)}
 4336: @findex c-scope-operator
 4337: @c Insert a double colon scope operator at point, without reindenting the
 4338: @c line or adding any newlines (@code{c-scope-operator}).
 4339: 行の字下げも改行の挿入もせずに、
 4340: スコープ演算子を表すコロン2つをポイント位置に挿入する
 4341: (@code{c-scope-operator})。
 4342: @end table
 4344: @c   The electric @kbd{#} key reindents the line if it appears to be the
 4345: @c beginning of a preprocessor directive.  This happens when the value of
 4346: @c @code{c-electric-pound-behavior} is @code{(alignleft)}.  You can turn
 4347: @c this feature off by setting @code{c-electric-pound-behavior} to
 4348: @c @code{nil}.
 4349: エレクトリックキー@kbd{#}は、
 4350: プリプロセッサ指令の始まりと思われる位置では、行を字下げし直します。
 4351: 変数@code{c-electric-pound-behavior}の値が@code{(alignleft)}のときには、
 4352: このようになります。
 4353: この機能をオフにするには、
 4354: @code{c-electric-pound-behavior}に@code{nil}を設定します。
 4356: @c    The variable @code{c-hanging-braces-alist} controls the insertion of
 4357: @c newlines before and after inserted braces.  It is an association list
 4358: @c with elements of the following form: @code{(@var{syntactic-symbol}
 4359: @c . @var{nl-list})}.  Most of the syntactic symbols that appear in
 4360: @c @code{c-offsets-alist} are meaningful here as well.
 4361: 変数@code{c-hanging-braces-alist}は、
 4362: 挿入された中括弧の前/後への改行の挿入を制御します。
 4363: これは、@code{(@var{syntactic-symbol} . @var{nl-list})}の形の要素
 4364: から成る連想リストです。
 4365: @code{c-offsets-alist}に現れるほとんどの構文シンボルは、
 4366: ここでも意味を持ちます。
 4368: @c    The list @var{nl-list} may contain either of the symbols
 4369: @c @code{before} or @code{after}, or both; or it may be @code{nil}.  When a
 4370: @c brace is inserted, the syntactic context it defines is looked up in
 4371: @c @code{c-hanging-braces-alist}; if it is found, the @var{nl-list} is used
 4372: @c to determine where newlines are inserted: either before the brace,
 4373: @c after, or both.  If not found, the default is to insert a newline both
 4374: @c before and after braces.
 4375: リスト@var{nl-list}は、シンボル@code{before}か@code{after}のいずれか、
 4376: あるいはその両方、もしくは@code{nil}を含みます。
 4377: 中括弧が挿入されるときには、その中括弧が定義する構文上の文脈を
 4378: @code{c-hanging-braces-alist}から探します。
 4379: みつかれば、@var{nl-list}を使って
 4380: 中括弧の前/後/前後のどこに改行を挿入するか決定します。
 4381: みつからなければ、デフォルトとして中括弧の前後に改行を挿入します。
 4383: @c    The variable @code{c-hanging-colons-alist} controls the insertion of
 4384: @c newlines before and after inserted colons.  It is an association list
 4385: @c with elements of the following form: @code{(@var{syntactic-symbol}
 4386: @c . @var{nl-list})}.  The list @var{nl-list} may contain either of the
 4387: @c symbols @code{before} or @code{after}, or both; or it may be @code{nil}.
 4388: 変数@code{c-hanging-colons-alist}は、
 4389: 挿入されたコロンの前/後への改行の挿入を制御します。
 4390: これは、@code{(@var{syntactic-symbol} . @var{nl-list})}の形の要素
 4391: から成る連想リストです。
 4392: リスト@var{nl-list}は、シンボル@code{before}か@code{after}のいずれか、
 4393: あるいはその両方、もしくは@code{nil}を含みます。
 4395: @c    When a colon is inserted, the syntactic symbol it defines is looked
 4396: @c up in this list, and if found, the @var{nl-list} is used to determine
 4397: @c where newlines are inserted: either before the brace, after, or both.
 4398: @c If the syntactic symbol is not found in this list, no newlines are
 4399: @c inserted.
 4400: コロンが挿入されるときには、そのコロンが定義する構文シンボルを
 4401: この連想リストから探します。
 4402: みつかれば、@var{nl-list}を使って
 4403: コロンの前/後のどこに改行を挿入するか決定します。
 4404: みつからなければ、改行を挿入しません。
 4406: @c    Electric characters can also delete newlines automatically when the
 4407: @c auto-newline feature is enabled.  This feature makes auto-newline more
 4408: @c acceptable, by deleting the newlines in the most common cases where you
 4409: @c do not want them.  Emacs can recognize several cases in which deleting a
 4410: @c newline might be desirable; by setting the variable
 4411: @c @code{c-cleanup-list}, you can specify @emph{which} of these cases that
 4412: @c should happen.  The variable's value is a list of symbols, each
 4413: @c describing one case for possible deletion of a newline.  Here are the
 4414: @c meaningful symbols, and their meanings:
 4415: 自動改行機能がオンのときには、エレクトリック文字は自動的に改行を削除します。
 4416: この機能により、
 4417: 改行が不要だと思われるもっとも一般的な場面で改行を削除するので、
 4418: 自動改行機能をユーザーにより受け入れやすくしています。
 4419: Emacsは改行を削除することが望ましいいくつかの場面を認識できますが、
 4420: 変数@code{c-cleanup-list}を設定すれば、@emph{どの}場面で行うか指定できます。
 4421: この変数の値はシンボルのリストです。
 4422: 各要素は、改行を削除してよい場面を1つ指定します。
 4423: 以下に指定できるシンボルとその意味を示します。
 4425: @table @code
 4426: @item brace-catch-brace
 4427: @c Clean up @samp{@} catch (@var{condition}) @{} constructs by placing the
 4428: @c entire construct on a single line.  The clean-up occurs when you type
 4429: @c the @samp{@{}, if there is nothing between the braces aside from
 4430: @c @code{catch} and @var{condition}.
 4431: @samp{@} catch (@var{condition}) @{}の構造全体を1行に再配置する。
 4432: @code{catch}や@var{condition}以外に中括弧のあいだになにもないときに
 4433: @samp{@{}を打つと再配置する。
 4435: @item brace-else-brace
 4436: @c Clean up @samp{@} else @{} constructs by placing the entire construct on
 4437: @c a single line.  The clean-up occurs when you type the @samp{@{} after
 4438: @c the @code{else}, but only if there is nothing but white space between
 4439: @c the braces and the @code{else}.
 4440: @samp{@} else @{}の構造全体を1行に再配置する。
 4441: @code{else}に続けて@samp{@{}を打ったときに再配置するが、
 4442: 中括弧と@code{else}のあいだに空白以外の文字がない場合に限る。
 4444: @item brace-elseif-brace
 4445: @c Clean up @samp{@} else if (@dots{}) @{} constructs by placing the entire
 4446: @c construct on a single line.  The clean-up occurs when you type the
 4447: @c @samp{@{}, if there is nothing but white space between the @samp{@}} and
 4448: @c @samp{@{} aside from the keywords and the @code{if}-condition.
 4449: @samp{@} else if (@dots{}) @{}の構造全体を1行に配置する。
 4450: @samp{@{}を打ったときに再配置するが、
 4451: キーワードと@code{if}の条件式を除いて、
 4452: @samp{@}}と@samp{@{}のあいだに空白以外の文字がない場合に限る。
 4454: @item empty-defun-braces
 4455: @c Clean up empty defun braces by placing the braces on the same
 4456: @c line.  Clean-up occurs when you type the closing brace.
 4457: 空の関数定義の中括弧、@samp{@{}と@samp{@}}を同じ行に再配置する。
 4458: 閉じ中括弧@samp{@}}を打ったときに再配置する。
 4460: @item defun-close-semi
 4461: @c Clean up the semicolon after a @code{struct} or similar type
 4462: @c declaration, by placing the semicolon on the same line as the closing
 4463: @c brace.  Clean-up occurs when you type the semicolon.
 4464: @code{struct}や同様の型宣言のあとのセミコロンを閉じ中括弧と同じ行に再配置する。
 4465: セミコロンを打ったときに再配置する。
 4467: @item list-close-comma
 4468: @c Clean up commas following braces in array and aggregate
 4469: @c initializers.  Clean-up occurs when you type the comma.
 4470: 配列/合成体の初期化式の中の閉じ中括弧とそれに続くコンマを同じ行に再配置する。
 4471: コンマを打ったときに再配置する。
 4473: @item scope-operator
 4474: @c Clean up double colons which may designate a C++ scope operator, by
 4475: @c placing the colons together.  Clean-up occurs when you type the second
 4476: @c colon, but only when the two colons are separated by nothing but
 4477: @c whitespace.
 4478: C++のスコープ演算子を表している可能性がある2つのコロンを一緒にする。
 4479: 2つめのコロンを打ったときに一緒にするが、
 4480: コロンのあいだに白文字以外の文字がない場合に限る。
 4481: @end table
 4483: @node Hungry Delete, Other C Commands, Electric C, C Modes
 4484: @c @subsection Hungry Delete Feature in C
 4485: @subsection Cの欲張りな削除機能
 4487: @c   When the @dfn{hungry-delete} feature is enabled (indicated by
 4488: @c @samp{/h} or @samp{/ah} in the mode line after the mode name), a single
 4489: @c @key{DEL} command deletes all preceding whitespace, not just one space.
 4490: @c To turn this feature on or off, use @kbd{C-c C-d}:
 4491: @dfn{欲張りな削除}機能をオン
 4492: (モード行のモード名のあとに@samp{/h}か@samp{/ah}で表示される)にすると、
 4493: 1つの@key{DEL}コマンドで、直前の空白1つだけでなく、白文字すべてを削除します。
 4494: この機能をオン/オフにするには、@kbd{C-c C-d}を使います。
 4496: @table @kbd
 4497: @item C-c C-d
 4498: @c @kindex C-c C-d @r{(C mode)}
 4499: @kindex C-c C-d @r{(Cモード)}
 4500: @findex c-toggle-hungry-state
 4501: @c Toggle the hungry-delete feature (@code{c-toggle-hungry-state}).  With a
 4502: @c prefix argument, this command turns the hungry-delete feature on if the
 4503: @c argument is positive, and off if it is negative.
 4504: 欲張り削除機能(@code{c-toggle-hungry-state})をオン/オフする。
 4505: 数引数を指定した場合、正ならば欲張り削除機能をオンにし、
 4506: 負ならばオフにする。
 4508: @item C-c C-t
 4509: @c @kindex C-c C-t @r{(C mode)}
 4510: @kindex C-c C-t @r{(Cモード)}
 4511: @findex c-toggle-auto-hungry-state
 4512: @c Toggle the auto-newline and hungry-delete features, both at once
 4513: @c (@code{c-toggle-auto-hungry-state}).
 4514: 自動改行機能と欲張り削除機能を同時にオン/オフする 
 4515: (@code{c-toggle-auto-hungry-state})。
 4516: @end table
 4518: @vindex c-hungry-delete-key
 4519: @c    The variable @code{c-hungry-delete-key} controls whether the
 4520: @c hungry-delete feature is enabled.
 4521: 変数@code{c-hungry-delete-key}は、
 4522: 欲張り削除機能がオンかオフかを制御します。
 4524: @node Other C Commands, Comments in C, Hungry Delete, C Modes
 4525: @c @subsection Other Commands for C Mode
 4526: @subsection Cモードのその他のコマンド
 4528: @table @kbd
 4529: @item C-M-h
 4530: @findex c-mark-function
 4531: @c @kindex C-M-h @r{(C mode)}
 4532: @kindex C-M-h @r{(Cモード)}
 4533: @c Put mark at the end of a function definition, and put point at the
 4534: @c beginning (@code{c-mark-function}).
 4535: 関数定義の末尾にマークを設定し、先頭にポイントを置く
 4536: (@code{c-mark-function})。
 4538: @item M-q
 4539: @c @kindex M-q @r{(C mode)}
 4540: @kindex M-q @r{(Cモード)}
 4541: @findex c-fill-paragraph
 4542: @c Fill a paragraph, handling C and C++ comments (@code{c-fill-paragraph}).
 4543: @c If any part of the current line is a comment or within a comment, this
 4544: @c command fills the comment or the paragraph of it that point is in,
 4545: @c preserving the comment indentation and comment delimiters.
 4546: CやC++のコメントを考慮して、段落を詰め込む
 4547: (@code{c-fill-paragraph})。
 4548: 現在行にコメントがあったり、現在行がコメントの内側なら、
 4549: コメントの字下げとコメント区切りを保存したまま、
 4550: ポイント位置のコメントや段落を詰め込む。
 4552: @item C-c C-e
 4553: @c @cindex macro expansion in C
 4554: @c @cindex expansion of C macros
 4555: @cindex Cのマクロ展開
 4556: @cindex 展開、Cのマクロ
 4557: @findex c-macro-expand
 4558: @c @kindex C-c C-e @r{(C mode)}
 4559: @kindex C-c C-e @r{(Cモード)}
 4560: @c Run the C preprocessor on the text in the region, and show the result,
 4561: @c which includes the expansion of all the macro calls
 4562: @c (@code{c-macro-expand}).  The buffer text before the region is also
 4563: @c included in preprocessing, for the sake of macros defined there, but the
 4564: @c output from this part isn't shown.
 4565: リージョン内のテキストに対してCプリプロセッサを実行し、
 4566: マクロ呼び出しを展開した結果を表示する(@code{c-macro-expand})。
 4567: リージョンのまえにあるテキストにマクロ定義があることもあるので、
 4568: それらもプリプロセッサに渡されるが、その部分の出力は表示しない。
 4570: @c When you are debugging C code that uses macros, sometimes it is hard to
 4571: @c figure out precisely how the macros expand.  With this command, you
 4572: @c don't have to figure it out; you can see the expansions.
 4573: マクロを用いたCのコードをデバッグするとき、
 4574: どのようにマクロが展開されるか正確に理解するのが難しいことがある。
 4575: このコマンドを使えば、マクロ展開のことを考える必要はない。
 4576: 展開結果を目にすることができる。
 4578: @item C-c C-\
 4579: @findex c-backslash-region
 4580: @c @kindex C-c C-\ @r{(C mode)}
 4581: @kindex C-c C-\ @r{(Cモード)}
 4582: @c Insert or align @samp{\} characters at the ends of the lines of the
 4583: @c region (@code{c-backslash-region}).  This is useful after writing or
 4584: @c editing a C macro definition.
 4585: リージョン内の行末に@samp{\}文字を挿入したり、
 4586: 行末の@samp{\}の位置揃えを行う(@code{c-backslash-region})。
 4587: Cのマクロ定義を書いたり編集したあとに便利なコマンド。
 4589: @c If a line already ends in @samp{\}, this command adjusts the amount of
 4590: @c whitespace before it.  Otherwise, it inserts a new @samp{\}.  However,
 4591: @c the last line in the region is treated specially; no @samp{\} is
 4592: @c inserted on that line, and any @samp{\} there is deleted.
 4593: 行末がすでに@samp{\}で終っているなら、そのまえに置く白文字の個数を調整する。
 4594: そうでなければ、新たに@samp{\}を挿入する。
 4595: ただし、リージョン内の最後の行は特別扱いする。
 4596: その行に@samp{\}を挿入することはなく、また、@samp{\}がある場合には削除する。
 4598: @item M-x cpp-highlight-buffer
 4599: @c @cindex preprocessor highlighting
 4600: @cindex プリプロセッサ強調表示
 4601: @findex cpp-highlight-buffer
 4602: @c Highlight parts of the text according to its preprocessor conditionals.
 4603: @c This command displays another buffer named @samp{*CPP Edit*}, which
 4604: @c serves as a graphic menu for selecting how to display particular kinds
 4605: @c of conditionals and their contents.  After changing various settings,
 4606: @c click on @samp{[A]pply these settings} (or go to that buffer and type
 4607: @c @kbd{a}) to rehighlight the C mode buffer accordingly.
 4608: プリプロセッサ指令の条件節に従って、テキストの一部を強調表示する。
 4609: このコマンドは@samp{*CPP Edit*}という名前のバッファを表示する。
 4610: このバッファは、特定のプリプロセッサ条件とその内容をどのように表示するかを
 4611: 選択するグラフィックメニュー。
 4612: さまざま設定を変更したあとで、@samp{[A]pply these settings}をクリックする
 4613: (あるいは、そのバッファへ移動して@kbd{a}と打つ)と、
 4614: 設定に応じてCモードのバッファを強調表示し直す。
 4616: @item C-c C-s
 4617: @findex c-show-syntactic-information
 4618: @c @kindex C-c C-s @r{(C mode)}
 4619: @kindex C-c C-s @r{(Cモード)}
 4620: @c Display the syntactic information about the current source line
 4621: @c (@code{c-show-syntactic-information}).  This is the information that
 4622: @c directs how the line is indented.
 4623: 現在のソース行に関する構文上の情報を表示する
 4624: (@code{c-show-syntactic-information})。
 4625: この情報は行の字下げを指示する。
 4626: @end table
 4628: @node Comments in C,  , Other C Commands, C Modes
 4629: @c @subsection Comments in C Modes
 4630: @subsection Cモードのコメント
 4632: @c    C mode and related modes use a number of variables for controlling
 4633: @c comment format.
 4634: Cモードとその関連モードでは、
 4635: コメントの整形にいくつかの変数を使います。
 4637: @table @code
 4638: @item c-comment-only-line-offset
 4639: @vindex c-comment-only-line-offset
 4640: @c Extra offset for line which contains only the start of a comment.  It
 4641: @c can be either an integer or a cons cell of the form
 4642: @c @code{(@var{non-anchored-offset} . @var{anchored-offset})}, where
 4643: @c @var{non-anchored-offset} is the amount of offset given to
 4644: @c non-column-zero anchored comment-only lines, and @var{anchored-offset}
 4645: @c is the amount of offset to give column-zero anchored comment-only lines.
 4646: @c Just an integer as value is equivalent to @code{(@var{val} . 0)}.
 4647: コメント開始部分だけを含んだ行に与える余分のオフセット。
 4648: この変数の値は整数、あるいは
 4649: @code{(@var{non-anchored-offset} . @var{anchored-offset})}の形の
 4650: コンスセルのどちらでもかまわない。
 4651: ここで、@var{non-anchored-offset}は、
 4652: 1桁目以降から始まるコメントに与えるオフセット。
 4653: @var{anchored-offset}は、0桁目から始まるコメントに与えるオフセット。
 4654: 整数値だけの場合は、@code{(@var{val} . 0)}と等価。
 4656: @item c-comment-start-regexp
 4657: @vindex c-comment-start-regexp
 4658: @c This buffer-local variable specifies how to recognize the start of a comment.
 4659: コメント開始の識別方法を指定するバッファにローカルな変数。
 4661: @item c-hanging-comment-ender-p
 4662: @vindex c-hanging-comment-ender-p
 4663: @c If this variable is @code{nil}, @code{c-fill-paragraph} leaves the
 4664: @c comment terminator of a block comment on a line by itself.  The default
 4665: @c value is @code{t}, which puts the comment-end delimiter @samp{*/} at the
 4666: @c end of the last line of the comment text.
 4667: この変数が@code{nil}であると、@code{c-fill-paragraph}は、
 4668: ブロックコメントのコメント終了区切りだけの行を作る。
 4669: デフォルト値は@code{t}で、
 4670: コメント終了区切り@samp{*/}をコメントの最後の行の末尾に置く。
 4672: @item c-hanging-comment-starter-p
 4673: @vindex c-hanging-comment-starter-p
 4674: @c If this variable is @code{nil}, @code{c-fill-paragraph} leaves the
 4675: @c starting delimiter of a block comment on a line by itself.  The default
 4676: @c value is @code{t}, which puts the comment-start delimiter @samp{/*} at
 4677: @c the beginning of the first line of the comment text.
 4678: この変数が@code{nil}であると、@code{c-fill-paragraph}は、
 4679: ブロックコメントのコメント開始区切りだけの行を作る。
 4680: デフォルト値は@code{t}で、
 4681: コメント開始区切り@samp{/*}をコメントの最初の行の先頭に置く。
 4682: @end table
 4684: @node Fortran, Asm Mode, C Modes, Programs
 4685: @c @section Fortran Mode
 4686: @section Fortranモード
 4687: @c @cindex Fortran mode
 4688: @c @cindex mode, Fortran
 4689: @cindex Fortranモード
 4690: @cindex モード、Fortran
 4692: @c   Fortran mode provides special motion commands for Fortran statements and
 4693: @c subprograms, and indentation commands that understand Fortran conventions
 4694: @c of nesting, line numbers and continuation statements.  Fortran mode has
 4695: @c its own Auto Fill mode that breaks long lines into proper Fortran
 4696: @c continuation lines.
 4697: Fortranモードには、Fortranの文と副プログラム向けの特別な移動コマンド、
 4698: Fortranの入れ子、行番号と継続文の約束事に従う字下げコマンドがあります。
 4699: Fortranモードには、長い行を適切なFortranの継続行に分ける
 4700: 専用の自動詰め込み(fortran-auto-fill)モードがあります。
 4702: @c   Special commands for comments are provided because Fortran comments
 4703: @c are unlike those of other languages.  Built-in abbrevs optionally save
 4704: @c typing when you insert Fortran keywords.
 4705: Fortranのコメントは他の言語のコメントとは異なっているので、
 4706: コメントに対する特別なコマンドもあります。
 4707: Fortranのキーワードを入力するときの打鍵量を減らせる、
 4708: 組み込みの略語もあります。
 4710: @findex fortran-mode
 4711: @c   Use @kbd{M-x fortran-mode} to switch to this major mode.  This command
 4712: @c runs the hook @code{fortran-mode-hook} (@pxref{Hooks}).
 4713: Fortran用のメジャーモードに切り替えるには、@kbd{M-x fortran-mode}を使います。
 4714: このコマンドは、フック@code{fortran-mode-hook}を実行します(@pxref{Hooks})。
 4716: @menu
 4717: * Motion: Fortran Motion.	 Moving point by statements or subprograms.
 4718: * Indent: Fortran Indent.	 Indentation commands for Fortran.
 4719: * Comments: Fortran Comments.	 Inserting and aligning comments.
 4720: * Autofill: Fortran Autofill.	 Auto fill minor mode for Fortran.
 4721: * Columns: Fortran Columns.	 Measuring columns for valid Fortran.
 4722: * Abbrev: Fortran Abbrev.	 Built-in abbrevs for Fortran keywords.
 4723: * Misc: Fortran Misc.            Other Fortran mode features.
 4724: @end menu
 4726: @node Fortran Motion, Fortran Indent, , Fortran
 4727: @c @subsection Motion Commands
 4728: @subsection 移動コマンド
 4730: @c   Fortran mode provides special commands to move by subprograms (functions
 4731: @c and subroutines) and by statements.  There is also a command to put the
 4732: @c region around one subprogram, convenient for killing it or moving it.
 4733: Fortran モードには、副プログラム(関数やサブルーチン)や文を単位とて
 4734: 移動するための特別なコマンドがあります。
 4735: また、副プログラムを囲むリージョンを設定するコマンドもあり、
 4736: 副プログラムをキルしたり移動したりするのに便利です。
 4738: @c @kindex C-M-a @r{(Fortran mode)}
 4739: @c @kindex C-M-e @r{(Fortran mode)}
 4740: @c @kindex C-M-h @r{(Fortran mode)}
 4741: @c @kindex C-c C-p @r{(Fortran mode)}
 4742: @c @kindex C-c C-n @r{(Fortran mode)}
 4743: @kindex C-M-a @r{(Fortranモード)}
 4744: @kindex C-M-e @r{(Fortranモード)}
 4745: @kindex C-M-h @r{(Fortranモード)}
 4746: @kindex C-c C-p @r{(Fortranモード)}
 4747: @kindex C-c C-n @r{(Fortranモード)}
 4748: @findex beginning-of-fortran-subprogram
 4749: @findex end-of-fortran-subprogram
 4750: @findex mark-fortran-subprogram
 4751: @findex fortran-previous-statement
 4752: @findex fortran-next-statement
 4754: @table @kbd
 4755: @item C-M-a
 4756: @c Move to beginning of subprogram
 4757: @c (@code{beginning-of-fortran-subprogram}).
 4758: 副プログラムの先頭に移動する(@code{beginning-of-fortran-subprogram})。
 4759: @item C-M-e
 4760: @c Move to end of subprogram (@code{end-of-fortran-subprogram}).
 4761: 副プログラムの末尾に移動する(@code{end-of-fortran-subprogram})。
 4762: @item C-M-h
 4763: @c Put point at beginning of subprogram and mark at end
 4764: @c (@code{mark-fortran-subprogram}).
 4765: 副プログラムの先頭にポイントを置き、末尾にマークを設定する
 4766: (@code{mark-fortran-subprogram})。
 4767: @item C-c C-n
 4768: @c Move to beginning of current or next statement
 4769: @c (@code{fortran-next-statement}).
 4770: 現在の文かつぎの文の先頭に移動する(@code{fortran-next-statement})。
 4771: @item C-c C-p
 4772: @c Move to beginning of current or previous statement
 4773: @c (@code{fortran-previous-statement}).
 4774: 現在の文かまえの文の先頭に移動する
 4775: (@code{fortran-previous-statement})。
 4776: @end table
 4778: @node Fortran Indent, Fortran Comments, Fortran Motion, Fortran
 4779: @c @subsection Fortran Indentation
 4780: @subsection Fortranの字下げ
 4782: @c   Special commands and features are needed for indenting Fortran code in
 4783: @c order to make sure various syntactic entities (line numbers, comment line
 4784: @c indicators and continuation line flags) appear in the columns that are
 4785: @c required for standard Fortran.
 4786: Fortranのコードでは、構文上の各種要素(行番号、コメント行指示子、
 4787: 継続マーク)は標準Fortranが要求する桁に現れるようにしなくてはいけないので、
 4788: 字下げに関する特別なコマンドと機能が必要です。
 4790: @menu
 4791: * Commands: ForIndent Commands.  Commands for indenting Fortran.
 4792: * Contline: ForIndent Cont.      How continuation lines indent.
 4793: * Numbers:  ForIndent Num.       How line numbers auto-indent.
 4794: * Conv:     ForIndent Conv.      Conventions you must obey to avoid trouble.
 4795: * Vars:     ForIndent Vars.      Variables controlling Fortran indent style.
 4796: @end menu
 4798: @node ForIndent Commands, ForIndent Cont, , Fortran Indent
 4799: @c @subsubsection Fortran Indentation Commands
 4800: @subsubsection Fortranの字下げコマンド
 4802: @table @kbd
 4803: @item @key{TAB}
 4804: @c Indent the current line (@code{fortran-indent-line}).
 4805: 現在行を字下げする(@code{fortran-indent-line})。
 4806: @item C-j
 4807: @c Indent the current and start a new indented line
 4808: @c (@code{fortran-indent-new-line}).
 4809: 現在行を字下げしてから、字下げした新たな行を始める
 4810: (@code{fortran-indent-new-line})。
 4811: @item C-M-j
 4812: @c Break the current line and set up a continuation line.
 4813: ポイント位置で現在行を分割し、継続行を設定する。
 4814: @item M-^
 4815: @c Join this line to the previous line.
 4816: 現在行と直前の行を繋げる。
 4817: @item C-M-q
 4818: @c Indent all the lines of the subprogram point is in
 4819: @c (@code{fortran-indent-subprogram}).
 4820: ポイントを含む副プログラムの行をすべて字下げする
 4821: (@code{fortran-indent-subprogram})。
 4822: @end table
 4824: @findex fortran-indent-line
 4825: @c   Fortran mode redefines @key{TAB} to reindent the current line for
 4826: @c Fortran (@code{fortran-indent-line}).  This command indents line numbers
 4827: @c and continuation markers to their required columns, and independently
 4828: @c indents the body of the statement based on its nesting in the program.
 4829: Fortranモードでは、Fortranの行を字下げするように@key{TAB}を再定義します
 4830: (@code{fortran-indent-line})。
 4831: このコマンドは、行番号と継続マークを要求される桁位置に字下げしたうえ、
 4832: それとは独立にプログラム中の入れ子に基づいて文本体を字下げします。
 4834: @c @kindex C-j @r{(Fortran mode)}
 4835: @kindex C-j @r{(Fortranモード)}
 4836: @findex fortran-indent-new-line
 4837: @c   The key @kbd{C-j} runs the command @code{fortran-indent-new-line},
 4838: @c which reindents the current line then makes and indents a new line.
 4839: @c This command is useful to reindent the closing statement of @samp{do}
 4840: @c loops and other blocks before starting a new line.
 4841: キー@kbd{C-j}は@code{fortran-indent-new-line}を実行します。
 4842: これは、現在行を字下げしてから、新たな行を作成して字下げします。
 4843: 新たな行を始めるまえに、@samp{do}ループやその他のブロックを
 4844: 閉じる文を字下げし直すのに便利です。
 4846: @c @kindex C-M-q @r{(Fortran mode)}
 4847: @kindex C-M-q @r{(Fortranモード)}
 4848: @findex fortran-indent-subprogram
 4849: @c   The key @kbd{C-M-q} runs @code{fortran-indent-subprogram}, a command
 4850: @c to reindent all the lines of the Fortran subprogram (function or
 4851: @c subroutine) containing point.
 4852: キー@kbd{C-M-q}は、ポイントを含むFortranの副プログラム
 4853: (関数やサブルーチン)の行すべてを字下げする
 4854: コマンド@code{fortran-indent-subprogram}を実行します。
 4856: @c @kindex C-M-j @r{(Fortran mode)}
 4857: @kindex C-M-j @r{(Fortranモード)}
 4858: @findex fortran-split-line
 4859: @c   The key @kbd{C-M-j} runs @code{fortran-split-line}, which splits
 4860: @c a line in the appropriate fashion for Fortran.  In a non-comment line,
 4861: @c the second half becomes a continuation line and is indented
 4862: @c accordingly.  In a comment line, both halves become separate comment
 4863: @c lines.
 4864: キー@kbd{C-M-j}は、適切な方法でFortranの行を分割するコマンド
 4865: @code{fortran-split-line}を実行します。
 4866: コメント行でなければ、後半部を継続行にし、それに応じて字下げします。
 4867: コメント行ならば、前後半部分とも独立したコメント行になります。
 4869: @c @kindex M-^ @r{(Fortran mode)}
 4870: @kindex M-^ @r{(Fortranモード)}
 4871: @findex fortran-join-line
 4872: @c   @kbd{M-^} runs the command @code{fortran-join-line}, which is more or
 4873: @c less the inverse of @code{fortran-split-line}.  It joins the current
 4874: @c line to the previous line in a suitable way for Fortran code.
 4875: @kbd{M-^}は、@code{fortran-split-line}の逆操作を行う
 4876: コマンド@code{fortran-join-line}を実行します。
 4877: 現在行と直前の行を、Fortranコードとして適切に繋げます。
 4879: @node ForIndent Cont, ForIndent Num, ForIndent Commands, Fortran Indent
 4880: @c @subsubsection Continuation Lines
 4881: @subsubsection 継続行
 4882: @c @cindex Fortran continuation lines
 4883: @cindex Fortranの継続行
 4885: @vindex fortran-continuation-string
 4886: @c   Most modern Fortran compilers allow two ways of writing continuation
 4887: @c lines.  If the first non-space character on a line is in column 5, then
 4888: @c that line is a continuation of the previous line.  We call this
 4889: @c @dfn{fixed format}.  (In GNU Emacs we always count columns from 0.)  The
 4890: @c variable @code{fortran-continuation-string} specifies what character to
 4891: @c put on column 5.  A line that starts with a tab character followed by
 4892: @c any digit except @samp{0} is also a continuation line.  We call this
 4893: @c style of continuation @dfn{tab format}.
 4894: 近代的なほとんどのFortranコンパイラには、
 4895: 継続行の記述方法が2つ用意されています。
 4896: ある行の空白でない最初の文字が5桁目にあれば、先行する行の継続行です。
 4897: このスタイルを@dfn{固定フォーマット}と呼びます。
 4898: (GNU Emacsでは、桁位置はつねに0から数える。)
 4899: 変数@code{fortran-continuation-string}は、5桁目に置く文字を指定します。
 4900: タブ文字で始まり@samp{0}以外の数字が続く行も継続行です。
 4901: このスタイルを@dfn{タブフォーマット}と呼びます。
 4903: @c @vindex indent-tabs-mode @r{(Fortran mode)}
 4904: @vindex indent-tabs-mode @r{(Fortranモード)}
 4905: @c   Fortran mode can make either style of continuation line, but you
 4906: @c must specify which one you prefer.  The value of the variable
 4907: @c @code{indent-tabs-mode} controls the choice: @code{nil} for fixed
 4908: @c format, and non-@code{nil} for tab format.  You can tell which style
 4909: @c is presently in effect by the presence or absence of the string
 4910: @c @samp{Tab} in the mode line.
 4911: Fortranモードではどちらのスタイルの継続行も利用できますが、
 4912: 希望するほうを指定する必要があります。
 4913: 変数@code{indent-tabs-mode}の値で希望を指定します。
 4914: @code{nil}ならば固定フォーマット、
 4915: @code{nil}以外ならばタブフォーマットになります。
 4916: モード行に文字列@samp{Tab}があるかどうかで、
 4917: 現在使用しているスタイルがわかります。
 4919: @c   If the text on a line starts with the conventional Fortran
 4920: @c continuation marker @samp{$}, or if it begins with any non-whitespace
 4921: @c character in column 5, Fortran mode treats it as a continuation line.
 4922: @c When you indent a continuation line with @key{TAB}, it converts the line
 4923: @c to the current continuation style.  When you split a Fortran statement
 4924: @c with @kbd{C-M-j}, the continuation marker on the newline is created
 4925: @c according to the continuation style.
 4926: Fortranモードでは、テキストが慣用的なFortranの継続マーク@samp{$}で始まる、
 4927: あるいは、
 4928: 5桁目から白文字以外の文字で始まる場合には、その行を継続行として扱います。
 4929: @key{TAB}で継続行を字下げすると、
 4930: 選択されている継続行のスタイルに変換します。
 4931: @kbd{C-M-j}でFortranの文を分割すると、
 4932: 継続行のスタイルに応じて新たな行には継続マークを付けます。
 4934: @c   The setting of continuation style affects several other aspects of
 4935: @c editing in Fortran mode.  In fixed format mode, the minimum column
 4936: @c number for the body of a statement is 6.  Lines inside of Fortran
 4937: @c blocks that are indented to larger column numbers always use only the
 4938: @c space character for whitespace.  In tab format mode, the minimum
 4939: @c column number for the statement body is 8, and the whitespace before
 4940: @c column 8 must always consist of one tab character.
 4941: 継続行のスタイルは、Fortranモードでの編集に関わる
 4942: その他の側面にも影響します。
 4943: 固定フォーマットでは、文本体を置く最小桁位置は6になります。
 4944: Fortranのブロックの内側にある行を7桁目以降に字下げするときには、
 4945: 白文字には空白文字を使います。
 4946: 一方、タブフォーマットでは、文本体を置く最小桁位置は8で、
 4947: 8桁目よりまえの白文字はつねにタブ文字です。
 4949: @vindex fortran-tab-mode-default
 4950: @vindex fortran-analyze-depth
 4951: @c   When you enter Fortran mode for an existing file, it tries to deduce the
 4952: @c proper continuation style automatically from the file contents.  The first
 4953: @c line that begins with either a tab character or six spaces determines the
 4954: @c choice.  The variable @code{fortran-analyze-depth} specifies how many lines
 4955: @c to consider (at the beginning of the file); if none of those lines
 4956: @c indicates a style, then the variable @code{fortran-tab-mode-default}
 4957: @c specifies the style.  If it is @code{nil}, that specifies fixed format, and
 4958: @c non-@code{nil} specifies tab format.
 4959: 既存のファイルに対してFortranモードに入ると、
 4960: その内容から自動的に適切な継続行のスタイルを推測しようとします。
 4961: タブ文字か空白6個で始まる最初の行でスタイルを判断します。
 4962: 変数@code{fortran-analyze-depth}で、
 4963: (ファイルの先頭から)何行分をスタイル判断に使用するか指定します。
 4964: この範囲内にスタイルを示すような行がみつからなければ、
 4965: 変数@code{fortran-tab-mode-default}がスタイルを指定します。
 4966: @code{nil}なら固定フォーマット、@code{nil}以外ならタブフォーマットです。
 4968: @node ForIndent Num, ForIndent Conv, ForIndent Cont, Fortran Indent
 4969: @c @subsubsection Line Numbers
 4970: @subsubsection 行番号
 4972: @c   If a number is the first non-whitespace in the line, Fortran
 4973: @c indentation assumes it is a line number and moves it to columns 0
 4974: @c through 4.  (Columns always count from 0 in GNU Emacs.)
 4975: ある行の白文字以外の最初の文字が数字であれば、
 4976: Fortranの字下げではそれを行番号とみなして0桁目から4桁目のあいだに移動します。
 4977: (GNU Emacsでは、桁位置はつねに0から始まる。)
 4979: @vindex fortran-line-number-indent
 4980: @c   Line numbers of four digits or less are normally indented one space.
 4981: @c The variable @code{fortran-line-number-indent} controls this; it
 4982: @c specifies the maximum indentation a line number can have.  Line numbers
 4983: @c are indented to right-justify them to end in column 4 unless that would
 4984: @c require more than this maximum indentation.  The default value of the
 4985: @c variable is 1.
 4986: 通常、4桁以下の行番号は空白1個で字下げします。
 4987: 変数@code{fortran-line-number-indent}でこの字下げ幅を制御します。
 4988: この変数の値は、行番号の最大字下げ幅を表します。
 4989: 最大字下げ幅まで字下げできなくなると、
 4990: 行番号の最後の桁が4桁目になるように右揃えで字下げします。
 4991: この変数のデフォルト値は1です。
 4993: @vindex fortran-electric-line-number
 4994: @c   Simply inserting a line number is enough to indent it according to
 4995: @c these rules.  As each digit is inserted, the indentation is recomputed.
 4996: @c To turn off this feature, set the variable
 4997: @c @code{fortran-electric-line-number} to @code{nil}.  Then inserting line
 4998: @c numbers is like inserting anything else.
 4999: これらの規則に従って行番号を字下げするには、
 5000: 行番号を挿入するだけで十分です。
 5001: 行番号の各桁が挿入されるたびに、字下げ幅を再計算します。
 5002: この機能をオフにするには、
 5003: 変数@code{fortran-electric-line-number}に@code{nil}を設定します。
 5004: こうすると、行番号の挿入はその他の文字の挿入と同様に行われます。
 5006: @node ForIndent Conv, ForIndent Vars, ForIndent Num, Fortran Indent
 5007: @c @subsubsection Syntactic Conventions
 5008: @subsubsection 構文上の規約
 5010: @c   Fortran mode assumes that you follow certain conventions that simplify
 5011: @c the task of understanding a Fortran program well enough to indent it
 5012: @c properly:
 5013: Fortranモードでは、適切な字下げをするためのFortranプログラムの解釈を
 5014: 簡単にするために、以下の規約に従っているものと仮定します。
 5016: @itemize @bullet
 5017: @item
 5018: @c Two nested @samp{do} loops never share a @samp{continue} statement.
 5019: 2つの入れ子になった@samp{do}ループは、
 5020: けっして@samp{continue}文を共有しない。
 5022: @item
 5023: @c Fortran keywords such as @samp{if}, @samp{else}, @samp{then}, @samp{do}
 5024: @c and others are written without embedded whitespace or line breaks.
 5025: @samp{if}、@samp{else}、@samp{then}、@samp{do}といった
 5026: Fortranのキーワードは、あいだに空白があったり、途中で行分けされない。
 5028: @c Fortran compilers generally ignore whitespace outside of string
 5029: @c constants, but Fortran mode does not recognize these keywords if they
 5030: @c are not contiguous.  Constructs such as @samp{else if} or @samp{end do}
 5031: @c are acceptable, but the second word should be on the same line as the
 5032: @c first and not on a continuation line.
 5033: 一般にFortranコンパイラは文字列定数の外側にある空白を無視するが、
 5034: Fortranモードは途中に空白が入っているキーワードを認識しない。
 5035: @samp{else if}や@samp{end do}のような書き方は許されるが、
 5036: 2つの単語を同じ行に置いた場合に限る。
 5037: 継続行に分かれていると認識しない。
 5038: @end itemize
 5040: @noindent
 5041: @c If you fail to follow these conventions, the indentation commands may
 5042: @c indent some lines unaesthetically.  However, a correct Fortran program
 5043: @c retains its meaning when reindented even if the conventions are not
 5044: @c followed.
 5045: 以上の規約に従っていない場合には、行を美しく字下げできないこともあります。
 5046: しかしながら、たとえ規約に従っていなくても、
 5047: 正しいFortranプログラムであれば字下げによって意味が変わることはありません。
 5049: @node ForIndent Vars,  , ForIndent Conv, Fortran Indent
 5050: @c @subsubsection Variables for Fortran Indentation
 5051: @subsubsection Fortranの字下げのための変数
 5053: @vindex fortran-do-indent
 5054: @vindex fortran-if-indent
 5055: @vindex fortran-structure-indent
 5056: @vindex fortran-continuation-indent
 5057: @vindex fortran-check-all-num@dots{}
 5058: @vindex fortran-minimum-statement-indent@dots{}
 5059: @c   Several additional variables control how Fortran indentation works:
 5060: Fortranの字下げ動作に影響する変数がいくつかあります。
 5062: @table @code
 5063: @item fortran-do-indent
 5064: @c Extra indentation within each level of @samp{do} statement (default 3).
 5065: @samp{do}文の各レベルごとに追加する字下げ幅(デフォルトは3)。
 5067: @item fortran-if-indent
 5068: @c Extra indentation within each level of @samp{if} statement (default 3).
 5069: @c This value is also used for extra indentation within each level of the
 5070: @c Fortran 90 @samp{where} statement.
 5071: @samp{if}文の各レベルごとに追加する字下げ幅(デフォルトは3)。
 5072: この値は、Fortran 90の@samp{where}文の字下げにも使われる。
 5074: @item fortran-structure-indent
 5075: @c Extra indentation within each level of @samp{structure}, @samp{union}, or
 5076: @c @samp{map} statements (default 3).
 5077: @samp{structure}、@samp{union}、@samp{map}の各文の各レベルごとに
 5078: 追加する字下げ幅(デフォルトは3)。
 5080: @item fortran-continuation-indent
 5081: @c Extra indentation for bodies of continuation lines (default 5).
 5082: 継続行の文本体に追加する字下げ幅(デフォルトは5)。
 5084: @item fortran-check-all-num-for-matching-do
 5085: @c If this is @code{nil}, indentation assumes that each @samp{do} statement
 5086: @c ends on a @samp{continue} statement.  Therefore, when computing
 5087: @c indentation for a statement other than @samp{continue}, it can save time
 5088: @c by not checking for a @samp{do} statement ending there.  If this is
 5089: @c non-@code{nil}, indenting any numbered statement must check for a
 5090: @c @samp{do} that ends there.  The default is @code{nil}.
 5091: この変数が@code{nil}なら、字下げ処理では、
 5092: @samp{do}文は@samp{continue}文で終っていると仮定する。
 5093: こうすると、@samp{continue}以外の文の字下げを計算するときに、
 5094: 当該文が@samp{do}文を終えるかどうか検査しなくてよいので、
 5095: 時間を節約できる。
 5096: この変数が@code{nil}以外であれば、
 5097: 行番号が付いた文の字下げを計算するときには、
 5098: 当該文が@samp{do}文を終えるかどうか検査する必要がある。
 5099: デフォルト値は@code{nil}。
 5101: @item fortran-blink-matching-if
 5102: @c If this is @code{t}, indenting an @samp{endif} statement moves the
 5103: @c cursor momentarily to the matching @samp{if} statement to show where it
 5104: @c is.  The default is @code{nil}.
 5105: この変数が@code{t}なら、@samp{endif}文の字下げを行うときに、
 5106: 対応する@samp{if}文を示すために一時的にカーソルを移動する。
 5107: デフォルト値は@code{nil}。
 5109: @item fortran-minimum-statement-indent-fixed
 5110: @c Minimum indentation for fortran statements when using fixed format
 5111: @c continuation line style.  Statement bodies are never indented less than
 5112: @c this much.  The default is 6.
 5113: 固定フォーマットの継続行スタイルを採用したときの、文に対する最小字下げ幅。
 5114: 文本体の字下げ幅がこの値より小さくなることはない。
 5115: デフォルト値は6。
 5117: @item fortran-minimum-statement-indent-tab
 5118: @c Minimum indentation for fortran statements for tab format continuation line
 5119: @c style.  Statement bodies are never indented less than this much.  The
 5120: @c default is 8.
 5121: タブフォーマットの継続行スタイルを採用したときの、文に対する最小字下げ幅。
 5122: 文本体の字下げ幅がこの値より小さくなることはない。
 5123: デフォルト値は8。
 5124: @end table
 5126: @node Fortran Comments, Fortran Autofill, Fortran Indent, Fortran
 5127: @c @subsection Fortran Comments
 5128: @subsection Fortranのコメント
 5130: @c   The usual Emacs comment commands assume that a comment can follow a line
 5131: @c of code.  In Fortran, the standard comment syntax requires an entire line
 5132: @c to be just a comment.  Therefore, Fortran mode replaces the standard Emacs
 5133: @c comment commands and defines some new variables.
 5134: Emacsの通常のコメント用コマンドは、コメントをコードのあとにも置けると仮定します。
 5135: Fortranでは、標準的なコメントの構文は、1つの行全体を必要とします。
 5136: そのため、Fortranモードでは、
 5137: Emacsの通常のコメント用コマンドを置き換え、新たな変数をいくつか定義しています。
 5139: @c   Fortran mode can also handle a nonstandard comment syntax where comments
 5140: @c start with @samp{!} and can follow other text.  Because only some Fortran
 5141: @c compilers accept this syntax, Fortran mode will not insert such comments
 5142: @c unless you have said in advance to do so.  To do this, set the variable
 5143: @c @code{comment-start} to @samp{"!"} (@pxref{Variables}).
 5144: Fortranモードでは、文字@samp{!}で始まり他のテキストのあとにも置ける
 5145: 非標準的なコメントの構文も扱えます。
 5146: しかし、この構文を受け付けるFortranコンパイラは限られるため、
 5147: まえもって指定しておかない限り、
 5148: Fortranモードは非標準のコメントを使いません。
 5149: このスタイルのコメントを使うには、
 5150: 変数@code{comment-start}に@samp{"!"}を設定します(@pxref{Variables})。
 5152: @table @kbd
 5153: @item M-;
 5154: @c Align comment or insert new comment (@code{fortran-comment-indent}).
 5155: コメントの位置を揃えたり、新たなコメントを挿入する
 5156: (@code{fortran-indent-comment})。
 5158: @item C-x ;
 5159: @c Applies to nonstandard @samp{!} comments only.
 5160: 非標準の@samp{!}コメントだけに作用する。
 5162: @item C-c ;
 5163: @c Turn all lines of the region into comments, or (with argument) turn them back
 5164: @c into real code (@code{fortran-comment-region}).
 5165: リージョン内のすべての行をコメントにする。
 5166: あるいは、(引数を指定すると)コメントをコードに戻す
 5167: (@code{fortran-comment-region})。
 5168: @end table
 5170: @c   @kbd{M-;} in Fortran mode is redefined as the command
 5171: @c @code{fortran-comment-indent}.  Like the usual @kbd{M-;} command, this
 5172: @c recognizes any kind of existing comment and aligns its text appropriately;
 5173: @c if there is no existing comment, a comment is inserted and aligned.  But
 5174: @c inserting and aligning comments are not the same in Fortran mode as in
 5175: @c other modes.
 5176: Fortranモードの@kbd{M-;}は、
 5177: コマンド@code{fortran-indent-comment}に再定義されています。
 5178: 通常の@kbd{M-;}と同じく、既存のコメントを認識して、
 5179: そのテキストの桁位置を揃えます。
 5180: コメントがなければ、コメントを挿入して桁位置を揃えます。
 5181: しかし、Fortranモードのコメントの挿入と揃え方は、
 5182: 他のモードと同じではありません。
 5184: @c   When a new comment must be inserted, if the current line is blank, a
 5185: @c full-line comment is inserted.  On a non-blank line, a nonstandard @samp{!}
 5186: @c comment is inserted if you have said you want to use them.  Otherwise a
 5187: @c full-line comment is inserted on a new line before the current line.
 5188: 新たにコメントを挿入する場合、
 5189: 現在行が空行のときは(1行全体を占める)行コメントを挿入します。
 5190: 空行でないとき、非標準のコメントを使うように指定してあれば
 5191: 非標準の@samp{!}コメントを挿入します。
 5192: いずれでもないときには、現在行のまえに行コメントを挿入します。
 5194: @c   Nonstandard @samp{!} comments are aligned like comments in other
 5195: @c languages, but full-line comments are different.  In a standard full-line
 5196: @c comment, the comment delimiter itself must always appear in column zero.
 5197: @c What can be aligned is the text within the comment.  You can choose from
 5198: @c three styles of alignment by setting the variable
 5199: @c @code{fortran-comment-indent-style} to one of these values:
 5200: 非標準の@samp{!}コメントは他の言語のコメントと同じように揃えられますが、
 5201: 行コメントの場合はようすが異なります。
 5202: 標準の行コメントでは、コメント区切りはつねに0桁目にある必要があります。
 5203: コメント内部のテキストだけを揃えます。
 5204: @code{fortran-comment-indent-style}を設定して、
 5205: 3種類の揃え方を選べます。
 5207: @vindex fortran-comment-indent-style
 5208: @vindex fortran-comment-line-extra-indent
 5209: @table @code
 5210: @item fixed
 5211: @c Align the text at a fixed column, which is the sum of
 5212: @c @code{fortran-comment-line-extra-indent} and the minimum statement
 5213: @c indentation.  This is the default.
 5214: @code{fortran-comment-line-extra-indent}と文に対する最小字下げ幅を合計し
 5215: た桁位置にテキストを揃える。
 5216: デフォルトはこれ。
 5218: @c The minimum statement indentation is
 5219: @c @code{fortran-minimum-statement-indent-fixed} for fixed format
 5220: @c continuation line style and @code{fortran-minimum-statement-indent-tab}
 5221: @c for tab format style.
 5222: 文の最小字下げ幅は、
 5223: 固定フォーマットの継続行スタイルの場合には
 5224: @code{fortran-minimum-statement-indent-fixed}の値、
 5225: タブフォーマットの場合には@code{fortran-minimum-statement-indent-tab}の値。
 5227: @item relative
 5228: @c Align the text as if it were a line of code, but with an additional
 5229: @c @code{fortran-comment-line-extra-indent} columns of indentation.
 5230: コード行であるかのように揃えるが、
 5231: @code{fortran-comment-line-extra-indent}だけ余計に桁をずらす。
 5233: @item nil
 5234: @c Don't move text in full-line comments automatically at all.
 5235: 行コメントのテキストを勝手に動かさない。
 5236: @end table
 5238: @vindex fortran-comment-indent-char
 5239: @c   In addition, you can specify the character to be used to indent within
 5240: @c full-line comments by setting the variable
 5241: @c @code{fortran-comment-indent-char} to the single-character string you want
 5242: @c to use.
 5243: また、行コメントの字下げ文字を変更したければ、
 5244: 変数@code{fortran-comment-indent-char}に好みの1文字を設定してください。
 5246: @vindex comment-line-start
 5247: @vindex comment-line-start-skip
 5248: @c   Fortran mode introduces two variables @code{comment-line-start} and
 5249: @c @code{comment-line-start-skip}, which play for full-line comments the same
 5250: @c roles played by @code{comment-start} and @code{comment-start-skip} for
 5251: @c ordinary text-following comments.  Normally these are set properly by
 5252: @c Fortran mode, so you do not need to change them.
 5253: Fortranモードには、@code{comment-line-start}と
 5254: @code{comment-line-start-skip}の2つの変数が新たに導入されています。
 5255: これらは、コードのあとに置く通常のコメントに対する@code{comment-start}と
 5256: @code{comment-start-skip}と同様の役割を、行コメントに対して果たします。
 5257: どちらもFortranモードが適切に設定するので、
 5258: 変更する必要はありません。
 5260: @c   The normal Emacs comment command @kbd{C-x ;} has not been redefined.  If
 5261: @c you use @samp{!} comments, this command can be used with them.  Otherwise
 5262: @c it is useless in Fortran mode.
 5263: Emacsの通常のコメント用コマンド@kbd{C-x ;}は、再定義されていません。
 5264: このコマンドは@samp{!}コメントを扱えます。
 5265: @samp{!}コメントを使っていない場合には、
 5266: このコマンドはFortranモードでは役に立ちません。
 5268: @c @kindex C-c ; @r{(Fortran mode)}
 5269: @kindex C-c ; @r{(Fortranモード)}
 5270: @findex fortran-comment-region
 5271: @vindex fortran-comment-region
 5272: @c   The command @kbd{C-c ;} (@code{fortran-comment-region}) turns all the
 5273: @c lines of the region into comments by inserting the string @samp{C$$$} at
 5274: @c the front of each one.  With a numeric argument, it turns the region
 5275: @c back into live code by deleting @samp{C$$$} from the front of each line
 5276: @c in it.  The string used for these comments can be controlled by setting
 5277: @c the variable @code{fortran-comment-region}.  Note that here we have an
 5278: @c example of a command and a variable with the same name; these two uses
 5279: @c of the name never conflict because in Lisp and in Emacs it is always
 5280: @c clear from the context which one is meant.
 5281: コマンド@kbd{C-c ;}(@code{fortran-comment-region})は、
 5282: リージョン内のすべての行の先頭に@samp{C$$$}を挿入して
 5283: コメントに変えます。
 5284: 数引数を指定すると、行の先頭から@samp{C$$$}を削除して、
 5285: リージョンを生きたコードに戻します。
 5286: これらのコメントに使う文字列は、
 5287: 変数@code{fortran-comment-region}の設定で制御できます。
 5288: ところで、ここではコマンドと変数に同じ名前が使われています。
 5289: LispやEmacsにおいては、使用される文脈から
 5290: コマンドと変数をつねに区別できるので、
 5291: このような名前の使い方が問題を起こすことはありません。
 5293: @node Fortran Autofill, Fortran Columns, Fortran Comments, Fortran
 5294: @c @subsection Fortran Auto Fill Mode
 5295: @subsection Fortran専用自動詰め込み(fortran-auto-fill)モード
 5297: @c   Fortran Auto Fill mode is a minor mode which automatically splits
 5298: @c Fortran statements as you insert them when they become too wide.
 5299: @c Splitting a statement involves making continuation lines using
 5300: @c @code{fortran-continuation-string} (@pxref{ForIndent Cont}).  This
 5301: @c splitting happens when you type @key{SPC}, @key{RET}, or @key{TAB}, and
 5302: @c also in the Fortran indentation commands.
 5303: Fortran専用自動詰め込み(fortran-auto-fill)モードは、
 5304: 挿入したFortranの文が長くなりすぎると自動的に文を分割するマイナモードです。
 5305: 文を分割するには、
 5306: @code{fortran-continuation-string}(@pxref{ForIndent Cont})を用いて
 5307: 継続行を作ります。
 5308: @key{SPC}、@key{RET}、@key{TAB}を打ったときや、
 5309: 字下げコマンドを使ったときに分割されます。
 5311: @findex fortran-auto-fill-mode
 5312: @c   @kbd{M-x fortran-auto-fill-mode} turns Fortran Auto Fill mode on if it
 5313: @c was off, or off if it was on.  This command works the same as @kbd{M-x
 5314: @c auto-fill-mode} does for normal Auto Fill mode (@pxref{Filling}).  A
 5315: @c positive numeric argument turns Fortran Auto Fill mode on, and a
 5316: @c negative argument turns it off.  You can see when Fortran Auto Fill mode
 5317: @c is in effect by the presence of the word @samp{Fill} in the mode line,
 5318: @c inside the parentheses.  Fortran Auto Fill mode is a minor mode, turned
 5319: @c on or off for each buffer individually.  @xref{Minor Modes}.
 5320: @kbd{M-x fortran-auto-fill-mode}は、
 5321: Fortran専用自動詰め込み(fortran-auto-fill)モードがオンならばオフにし、
 5322: オフならばオンにします。
 5323: このコマンドは、通常の自動詰め込み(auto-fill)モード
 5324: (@pxref{Filling})である@kbd{M-x auto-fill-mode}が行うのと
 5325: 同じように働きます。
 5326: 正の数引数を指定すると、
 5327: Fortran専用自動詰め込み(fortran-auto-fill)モードをオンにし、
 5328: 負であればオフにします。
 5329: このモードのオン/オフは、モード行の括弧の中に@samp{Fill}が
 5330: あるかどうかで判断できます。
 5331: Fortran専用自動詰め込み(fortran-auto-fill)モードはマイナモードなので、
 5332: 各バッファごとに独立にオン/オフにできます。
 5333: @xref{Minor Modes}。
 5335: @vindex fortran-break-before-delimiters
 5336: @c    Fortran Auto Fill mode breaks lines at spaces or delimiters when the
 5337: @c lines get longer than the desired width (the value of @code{fill-column}).
 5338: @c The delimiters that Fortran Auto Fill mode may break at are @samp{,},
 5339: @c @samp{'}, @samp{+}, @samp{-}, @samp{/}, @samp{*}, @samp{=}, and @samp{)}.
 5340: @c The line break comes after the delimiter if the variable
 5341: @c @code{fortran-break-before-delimiters} is @code{nil}.  Otherwise (and by
 5342: @c default), the break comes before the delimiter.
 5343: Fortran専用自動詰め込み(fortran-auto-fill)モードは、
 5344: 行の長さが規定の幅(@code{fill-column}の値)を越えると、
 5345: 空白や区切りの位置で行を分割します。
 5346: Fortran専用自動詰め込み(fortran-auto-fill)が分割する区切りは、
 5347: @samp{,}、@samp{'}、@samp{+}、@samp{-}、@samp{/}、@samp{*}、
 5348: @samp{=}、@samp{)}です。
 5349: 変数@code{fortran-break-before-delimiters}が@code{nil}の場合には、
 5350: 区切りのうしろで分割します。
 5351: それ以外(デフォルトでもある)では、区切りのまえで分割します。
 5353: @c   By default, Fortran Auto Fill mode is not enabled.  If you want this
 5354: @c feature turned on permanently, add a hook function to
 5355: @c @code{fortran-mode-hook} to execute @code{(fortran-auto-fill-mode 1)}.
 5356: @c @xref{Hooks}.
 5357: デフォルトではFortran専用自動詰め込み(fortran-auto-fill)モードはオフです。
 5358: この機能を恒常的に使いたければ、
 5359: @code{(fortran-auto-fill-mode 1)}を実行するフック関数を
 5360: @code{fortran-mode-hook}に追加してください。
 5361: @xref{Hooks}。
 5363: @node Fortran Columns, Fortran Abbrev, Fortran Autofill, Fortran
 5364: @c @subsection Checking Columns in Fortran
 5365: @subsection 桁位置の確認
 5367: @table @kbd
 5368: @item C-c C-r
 5369: @c Display a ``column ruler'' momentarily above the current line
 5370: @c (@code{fortran-column-ruler}).
 5371: 現在行の上にしばらくのあいだ『桁定規』を表示する
 5372: (@code{fortran-column-ruler})。
 5373: @item C-c C-w
 5374: @c Split the current window horizontally temporarily so that it is 72
 5375: @c columns wide.  This may help you avoid making lines longer than the
 5376: @c 72-character limit that some Fortran compilers impose
 5377: @c (@code{fortran-window-create-momentarily}).
 5378: 現在のウィンドウを一時的に分割して幅を72桁にする。
 5379: 一部のFortranコンパイラは1行を72文字以内に制限しているので、
 5380: このコマンドを使用すれば1行が長くなりすぎることを防げる
 5381: (@code{fortran-window-create-momentarily})。
 5382: @end table
 5384: @c @kindex C-c C-r @r{(Fortran mode)}
 5385: @kindex C-c C-r @r{(Fortranモード)}
 5386: @findex fortran-column-ruler
 5387: @vindex fortran-column-ruler
 5388: @c   The command @kbd{C-c C-r} (@code{fortran-column-ruler}) shows a column
 5389: @c ruler momentarily above the current line.  The comment ruler is two lines
 5390: @c of text that show you the locations of columns with special significance in
 5391: @c Fortran programs.  Square brackets show the limits of the columns for line
 5392: @c numbers, and curly brackets show the limits of the columns for the
 5393: @c statement body.  Column numbers appear above them.
 5394: コマンド@kbd{C-c C-r}(@code{fortran-column-ruler})は、
 5395: 桁定規をしばらくのあいだ、現在行の上に表示します。
 5396: 桁定規は、Fortranプログラムにおいて特別な意味をもつ桁位置を表す
 5397: 2行のテキストです。
 5398: 2行目の角括弧と中括弧で、それぞれ、行番号と文の本体の範囲を表します。
 5399: 桁番号は(それらの上の)1行目に表示されます。
 5401: @c   Note that the column numbers count from zero, as always in GNU Emacs.
 5402: @c As a result, the numbers may be one less than those you are familiar
 5403: @c with; but the positions they indicate in the line are standard for
 5404: @c Fortran.
 5405: GNU Emacsでは桁番号をつねに0から数えることに注意してください。
 5406: その結果、桁定規に示される桁番号は、
 5407: 慣れ親しんだものより1だけ小さくなります。
 5408: しかし、それらが表す位置はFortranの標準に従ったものです。
 5410: @c   The text used to display the column ruler depends on the value of 
 5411: @c the variable @code{indent-tabs-mode}.  If @code{indent-tabs-mode} is
 5412: @c @code{nil}, then the value of the variable
 5413: @c @code{fortran-column-ruler-fixed} is used as the column ruler.
 5414: @c Otherwise, the variable @code{fortran-column-ruler-tab} is displayed.
 5415: @c By changing these variables, you can change the column ruler display.
 5416: 桁定規の表示に用いるテキストは、
 5417: 変数@code{indent-tabs-mode}の値に依存します。
 5418: この変数の値が@code{nil}ならば、
 5419: 変数@code{fortran-column-ruler-fixed}の値を桁定規の表示に使います。
 5420: @code{nil}以外であれば、変数
 5421: @code{fortran-column-ruler-tab}の内容を表示に使います。
 5422: これらの変数の内容を変更すれば、桁定規の表示を変更できます。
 5424: @c @kindex C-c C-w @r{(Fortran mode)}
 5425: @kindex C-c C-w @r{(Fortranモード)}
 5426: @findex fortran-window-create
 5427: @c   For even more help, use @kbd{C-c C-w} (@code{fortran-window-create}), a
 5428: @c command which splits the current window horizontally, making a window 72
 5429: @c columns wide.  By editing in this window you can immediately see when you
 5430: @c make a line too wide to be correct Fortran.
 5431: さらに桁合わせを支援するために、
 5432: @kbd{C-c C-w}(@code{fortran-window-create})は、
 5433: 現在のウィンドウを幅が72桁になるように横位置で分割します。
 5434: このウィンドウで編集すれば、
 5435: 正しいFortranのプログラムとしては長すぎる行を即座に発見できます。
 5437: @node Fortran Abbrev, Fortran Misc, Fortran Columns, Fortran
 5438: @c @subsection Fortran Keyword Abbrevs
 5439: @subsection Fortranのキーワードの略語
 5441: @c   Fortran mode provides many built-in abbrevs for common keywords and
 5442: @c declarations.  These are the same sort of abbrev that you can define
 5443: @c yourself.  To use them, you must turn on Abbrev mode.  @xref{Abbrevs}.
 5444: Fortranモードには、一般的なキーワードや宣言に対する
 5445: 数多くの組み込み略語があります。
 5446: これらは、ユーザー自身が定義できる略語と同じ種類のものです。
 5447: それらを使うには、略語(abbrev)モードをオンにします。
 5448: @xref{Abbrevs}。
 5450: @c   The built-in abbrevs are unusual in one way: they all start with a
 5451: @c semicolon.  You cannot normally use semicolon in an abbrev, but Fortran
 5452: @c mode makes this possible by changing the syntax of semicolon to ``word
 5453: @c constituent.''
 5454: 組み込み略語は他の略語と1つの点で変わっています。
 5455: すべてセミコロンで始まります。
 5456: 通常は略語にはセミコロンを使えませんが、
 5457: Fortranモードでは、セミコロンの構文上の意味を『単語を構成する文字』に
 5458: 変更することで、これを可能にしています。
 5460: @c   For example, one built-in Fortran abbrev is @samp{;c} for
 5461: @c @samp{continue}.  If you insert @samp{;c} and then insert a punctuation
 5462: @c character such as a space or a newline, the @samp{;c} expands automatically
 5463: @c to @samp{continue}, provided Abbrev mode is enabled.@refill
 5464: たとえば、@samp{continue}に対する組み込みFortran略語は@samp{;c}です。
 5465: 略語(abbrev)モードがオンのときに、
 5466: @samp{;c}を挿入してから空白や改行といった句読点文字を挿入すると、
 5467: @samp{;c}は自動的に@samp{continue}と展開されます。
 5469: @c   Type @samp{;?} or @samp{;C-h} to display a list of all the built-in
 5470: @c Fortran abbrevs and what they stand for.
 5471: 組み込みFortran略語とその展開形の一覧を表示するには、
 5472: @samp{;?}あるいは@samp{;C-h}と打ちます。
 5474: @node Fortran Misc,  , Fortran Abbrev, Fortran
 5475: @c @subsection Other Fortran Mode Commands
 5476: @subsection Fortranモードのその他のコマンド
 5478: @table @kbd
 5479: @item C-x n d
 5480: @c Narrow to the current Fortran subprogram.
 5481: 現在のFortranの副プログラムにナロイングする。
 5482: @end table
 5484: @c @kindex C-x n d @r{(Fortran mode)}
 5485: @kindex C-x n d @r{(Fortranモード)}
 5486: @findex fortran-narrow-to-subprogram
 5487: @c   Fortran mode redefines the key @kbd{C-x n d} to run the command
 5488: @c @code{fortran-narrow-to-subprogram}, which is the Fortran analogue
 5489: @c of the key's usual definition.  It narrows the buffer to the subprogram
 5490: @c containing point.
 5491: Fortranモードでは、
 5492: キー@kbd{C-x n d}はコマンド@code{fortran-narrow-to-subprogram}を実行するように
 5493: 再定義しています。
 5494: このコマンドは、キーの通常の定義をFrotran風にしたものです。
 5495: バッファをポイントを含む副プログラムにナロイングします。
 5497: @node Asm Mode,  , Fortran, Programs
 5498: @c @section Asm Mode
 5499: @section asmモード
 5501: @c @cindex Asm mode
 5502: @cindex asmモード
 5503: @cindex モード、Asm
 5504: @c Asm mode is a major mode for editing files of assembler code.  It
 5505: @c defines these commands:
 5506: asmモードは、アセンブリコードのファイルを編集するためのメジャーモードです。
 5507: つぎのコマンドが定義されています。
 5509: @table @kbd
 5510: @item @key{TAB}
 5511: @c @code{tab-to-tab-stop}.
 5512: @code{tab-to-tab-stop}。
 5513: @item C-j
 5514: @c Insert a newline and then indent using @code{tab-to-tab-stop}.
 5515: 改行を挿入し、@code{tab-to-tab-stop}で字下げする。
 5516: @item :
 5517: @c Insert a colon and then remove the indentation from before the label
 5518: @c preceding colon.  Then do @code{tab-to-tab-stop}.
 5519: コロンを挿入し、コロンに先行するラベルのまえの字下げを取り除く。
 5520: そして、@code{tab-to-tab-stop}を行う。
 5521: @item ;
 5522: @c Insert or align a comment.
 5523: コメントの挿入/位置揃えを行う。
 5524: @end table
 5526: @c   The variable @code{asm-comment-char} specifies which character
 5527: @c starts comments in assembler syntax.
 5528: 変数@code{asm-comment-char}は、
 5529: アセンブラ構文でコメントを開始する文字を指定します。

FreeBSD-CVSweb <>