File:  [Local Repository] / gnujdoc / emacs-20.6 / custom-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/13
    5: @c =           ref 修正                = 2000/02/13
    6: @c =============================================================
    7: @c This is part of the Emacs manual.
    8: @c Copyright (C) 1985, 86, 87, 93, 94, 95, 1997 Free Software Foundation, Inc.
    9: @c See file emacs.texi for copying conditions.
   10: @node Customization, Quitting, Amusements, Top
   11: @c @chapter Customization
   12: @c @cindex customization
   13: @chapter カスタマイズ
   14: @cindex カスタマイズ
   15: 
   16: @c   This chapter talks about various topics relevant to adapting the
   17: @c behavior of Emacs in minor ways.  See @cite{The Emacs Lisp Reference
   18: @c Manual} for how to make more far-reaching changes.
   19: 本章では、Emacsの動作を(あまり大幅でなく)カスタマイズする方法に
   20: ついて説明します。
   21: もっと大幅な変更を行いたい場合には
   22: @cite{The Emacs Lisp Reference Manual}を参照してください。
   23: 
   24: @c   All kinds of customization affect only the particular Emacs session
   25: @c that you do them in.  They are completely lost when you kill the Emacs
   26: @c session, and have no effect on other Emacs sessions you may run at the
   27: @c same time or later.  The only way an Emacs session can affect anything
   28: @c outside of it is by writing a file; in particular, the only way to make
   29: @c a customization ``permanent'' is to put something in your @file{.emacs}
   30: @c file or other appropriate file to do the customization in each session.
   31: @c @xref{Init File}.
   32: カスタマイズは、Emacsの1つのセッションの中だけで効果を持ちます。
   33: Emacsを終了するとカスタマイズの効果は失われますし、
   34: 同時にあるいはあとで別のEmacsを立ち上げた場合にも何の影響も及ぼしません。
   35: あるEmacsのセッションがセッションを超えて影響するためには、
   36: ファイルに書くしかありません。
   37: 特に、カスタマイズを『恒久化』したい場合には、
   38: 個人の@file{.emacs}ファイルや
   39: その他の関連するファイルに適切な内容を書き込んでおき、
   40: セッションごとにカスタマイズが行われるようにします。
   41: @xref{Init File}。
   42: 
   43: @menu
   44: * Minor Modes::		Each minor mode is one feature you can turn on
   45: 			  independently of any others.
   46: * Variables::		Many Emacs commands examine Emacs variables
   47: 			  to decide what to do; by setting variables,
   48: 			  you can control their functioning.
   49: * Keyboard Macros::	A keyboard macro records a sequence of
   50: 			  keystrokes to be replayed with a single
   51: 			  command. 
   52: * Key Bindings::	The keymaps say what command each key runs.
   53: 			  By changing them, you can "redefine keys".
   54: * Keyboard Translations::
   55:                         If your keyboard passes an undesired code
   56: 			   for a key, you can tell Emacs to
   57: 			   substitute another code. 
   58: * Syntax::		The syntax table controls how words and
   59: 			   expressions are parsed.
   60: * Init File::		How to write common customizations in the
   61: 			  @file{.emacs} file. 
   62: @end menu
   63: 
   64: @node Minor Modes, Variables, , Customization
   65: @c @section Minor Modes
   66: @c @cindex minor modes
   67: @c @cindex mode, minor
   68: @section マイナモード(minor mode)
   69: @cindex マイナモード(minor mode)
   70: @cindex モード、マイナ
   71: 
   72: @c   Minor modes are optional features which you can turn on or off.  For
   73: @c example, Auto Fill mode is a minor mode in which @key{SPC} breaks lines
   74: @c between words as you type.  All the minor modes are independent of each
   75: @c other and of the selected major mode.  Most minor modes say in the mode
   76: @c line when they are on; for example, @samp{Fill} in the mode line means
   77: @c that Auto Fill mode is on.
   78: マイナモードは、個別にオン/オフ可能な機能です。
   79: たとえば、マイナモードである自動詰め込み(auto-fill)モードをオンにすると、
   80: @key{SPC}で自動的に(単語の切れ目で)行分けします。
   81: すべてのマイナモードは互いに独立ですし、
   82: どのメジャーモードとも独立です。
   83: ほとんどのマイナモードは、それがオンであることをモード行に表示します。
   84: たとえば、モード行に@samp{Fill}と表示されていれば、
   85: 自動詰め込み(auto-fill)モードがオンであることを意味します。
   86: 
   87: @c   Append @code{-mode} to the name of a minor mode to get the name of a
   88: @c command function that turns the mode on or off.  Thus, the command to
   89: @c enable or disable Auto Fill mode is called @kbd{M-x auto-fill-mode}.  These
   90: @c commands are usually invoked with @kbd{M-x}, but you can bind keys to them
   91: @c if you wish.  With no argument, the function turns the mode on if it was
   92: @c off and off if it was on.  This is known as @dfn{toggling}.  A positive
   93: @c argument always turns the mode on, and an explicit zero argument or a
   94: @c negative argument always turns it off.
   95: マイナモード名のうしろに@code{-mode}を付け加えると、
   96: そのモードをオン/オフするコマンド関数の名前になります。
   97: したがって、自動詰め込み(auto-fill)モードをオン/オフするコマンドは
   98: @kbd{M-x auto-fill-mode}ということになります。
   99: これらのコマンドは通常@kbd{M-x}を使って起動しますが、
  100: どれかのキーにバインドすることもできます。
  101: 引数を指定しないと、これらのコマンドはモードがオフのときはオンに、
  102: オンのときはオフに切り替えます。
  103: これを@dfn{トグルする}と呼びます。
  104: これに対し、正の引数を指定するとつねにモードをオンにしますし、
  105: 明示的に0の引数を指定するか、または負の引数を指定すると
  106: つねにモードをオフにします。
  107: 
  108: @c   Enabling or disabling some minor modes applies only to the current
  109: @c buffer; each buffer is independent of the other buffers.  Therefore, you
  110: @c can enable the mode in particular buffers and disable it in others.  The
  111: @c per-buffer minor modes include Abbrev mode, Auto Fill mode, Auto Save
  112: @c mode, Font-Lock mode, Hscroll mode, ISO Accents mode, Outline minor
  113: @c mode, Overwrite mode, and Binary Overwrite mode.
  114: いくつかのマイナモードのオン/オフは、カレントバッファに対してのみ適用され、
  115: 他のバッファには影響しません。
  116: つまり、あるバッファであるモードをオンにし、
  117: 別のバッファではそのモードをオフにできるわけです。
  118: このような、バッファごとにオン/オフできるマイナモードとしては、
  119: 略語(abbrev)モード、自動詰め込み(auto-fill)モード、
  120: 自動保存(auto-save)モード、フォントロック(font-lock)モード、
  121: ISOアクセント(iso-sccents)モード、アウトライン(outline)マイナモード、
  122: 上書き(overwrite)モード、バイナリ上書き(binary-overwrite)モードがあります。
  123: 
  124: @c   Abbrev mode allows you to define abbreviations that automatically expand
  125: @c as you type them.  For example, @samp{amd} might expand to @samp{abbrev
  126: @c mode}.  @xref{Abbrevs}, for full information.
  127: 略語(abbrev)モードでは、
  128: 略語を打ち込むと自動的に展開されるような略語を定義できます。
  129: たとえば、@samp{amd}を@samp{abbrev mode}と展開させます。
  130: 詳しくは、@xref{Abbrevs}。
  131: 
  132: @c   Auto Fill mode allows you to enter filled text without breaking lines
  133: @c explicitly.  Emacs inserts newlines as necessary to prevent lines from
  134: @c becoming too long.  @xref{Filling}.
  135: 自動詰め込み(auto-fill)モードでは、いちいち改行で行分けしなくても
  136: テキストを詰め込んで入力できます。
  137: 行が長くなりすぎないようにEmacsが適宜改行を挿入します。
  138: @xref{Filling}。
  139: 
  140: @c   Auto Save mode causes the contents of a buffer to be saved
  141: @c periodically to reduce the amount of work you can lose in case of a
  142: @c system crash.  @xref{Auto Save}.
  143: 自動保存(auto-save)モードはバッファの内容を定期的に保存することで、
  144: システムクラッシュが起きたとき紛失してしまう作業の量を少なくします。
  145: @xref{Auto Save}。
  146: 
  147: @c   Enriched mode enables editing and saving of formatted text.
  148: @c @xref{Formatted Text}.
  149: エンリッチ(enriched)モードは、整形済みテキストの編集を可能にします。
  150: @xref{Formatted Text}。
  151: 
  152: @c   Flyspell mode automatically highlights misspelled words.
  153: @c @xref{Spelling}.
  154: フライスペル(flyspell)モードは、
  155: 綴りに誤りのある単語を自動的に強調表示します。
  156: 
  157: @c   Font-Lock mode automatically highlights certain textual units found in
  158: @c programs, such as comments, strings, and function names being defined.
  159: @c This requires a window system that can display multiple fonts.
  160: @c @xref{Faces}.
  161: フォントロック(font-lock)モードは、コメント、文字列、定義中の関数名などの
  162: プログラム中の決まった単位を自動的に強調表示します。
  163: これには、複数のフォントを表示できるウィンドウシステムが必要です。
  164: @xref{Faces}。
  165: 
  166: @c   Hscroll mode performs horizontal scrolling automatically
  167: @c to keep point on the screen.  @xref{Horizontal Scrolling}.
  168: 水平スクロール(hscroll)モードは、ポイントが画面内に留まるように、
  169: 自動的に水平スクロールを行います。
  170: @xref{Horizontal Scrolling}。
  171: 
  172: @c   ISO Accents mode makes the characters @samp{`}, @samp{'}, @samp{"},
  173: @c @samp{^}, @samp{/} and @samp{~} combine with the following letter, to
  174: @c produce an accented letter in the ISO Latin-1 character set.
  175: @c @xref{Single-Byte European Support}.
  176: ISOアクセント(iso-accents)モードは、@samp{`}、@samp{'}、 @samp{"}、
  177: @samp{^}、@samp{/}、@samp{~}とこれらに続くつぎの文字を結合して、
  178: ISO Latin-1文字集合のアクセント付き文字を作り出します。
  179: @xref{Single-Byte European Support}。
  180: 
  181: @c   Outline minor mode provides the same facilities as the major mode
  182: @c called Outline mode; but since it is a minor mode instead, you can
  183: @c combine it with any major mode.  @xref{Outline Mode}.
  184: アウトラインマイナ(outline-minor)モードは、メジャーモードである
  185: アウトライン(outline)モードと同じ機能を提供します。
  186: しかし、マイナモードなので任意のメジャーモードと一緒に使えます。
  187: @xref{Outline Mode}。
  188: 
  189: @c @cindex Overwrite mode
  190: @c @cindex mode, Overwrite
  191: @cindex 上書きモード(Overwrite mode)
  192: @cindex モード、Overwrite
  193: @findex overwrite-mode
  194: @findex binary-overwrite-mode
  195: @c   Overwrite mode causes ordinary printing characters to replace existing
  196: @c text instead of shoving it to the right.  For example, if point is in
  197: @c front of the @samp{B} in @samp{FOOBAR}, then in Overwrite mode typing a
  198: @c @kbd{G} changes it to @samp{FOOGAR}, instead of producing @samp{FOOGBAR}
  199: @c as usual.  In Overwrite mode, the command @kbd{C-q} inserts the next
  200: @c character whatever it may be, even if it is a digit---this gives you a
  201: @c way to insert a character instead of replacing an existing character.
  202: 上書き(overwrite)モードでは、入力された図形文字は既存の文字を右に押しやる
  203: かわりにその文字を置き換えます。
  204: たとえば、ポイントが@samp{FOOBAR}の@samp{B}のまえにあるときに
  205: @kbd{G}を打つと@samp{FOOGAR}となります。
  206: 通常のモードであれば@samp{FOOGBAR}となります。
  207: 上書き(overwrite)モードでコマンド@kbd{C-q}を打つと、
  208: そのつぎの文字が何であっても(数字であっても)その文字を挿入します。
  209: つまり、上書き(overwrite)モードの中で文字を挿入するには
  210: この方法を使います。
  211: 
  212: @c   Binary Overwrite mode is a variant of Overwrite mode for editing
  213: @c binary files; it treats newlines and tabs like other characters, so that
  214: @c they overwrite other characters and can be overwritten by them.
  215: バイナリ上書き(binary-overwrite)モードは上書き(overwrite)モードの変形で、
  216: バイナリファイル編集用です。
  217: このモードでは、改行やタブも他の文字と同じに扱われるので、
  218: 他の文字をこれらの文字で上書きすることも、
  219: これらの文字を他の文字で上書きすることもできます。
  220: 
  221: @c   The following minor modes normally apply to all buffers at once.
  222: @c Since each is enabled or disabled by the value of a variable, you
  223: @c @emph{can} set them differently for particular buffers, by explicitly
  224: @c making the corresponding variables local in those buffers.
  225: @c @xref{Locals}.
  226: 以下で説明するマイナモードは、すべてのバッファに一斉に適用されます。
  227: ただし、これらは変数の値に応じてオン/オフされますから、
  228: その変数をバッファにローカルな変数にすれば、
  229: バッファごとに独立にオン/オフすることも可能です。
  230: @xref{Locals}。
  231: 
  232: @c   Icomplete mode displays an indication of available completions when
  233: @c you are in the minibuffer and completion is active.  @xref{Completion
  234: @c Options}.
  235: 補完示唆(icomplete)モードは、ミニバッファで入力中に補完機能が働いているとき、
  236: どのような補完候補があるかを表示します。
  237: @xref{Completion Options}。
  238: 
  239: @c   Line Number mode enables continuous display in the mode line of the
  240: @c line number of point.  @xref{Mode Line}.
  241: 行番号(line-number)モードは、
  242: ポイントのある行の行番号を絶えずモード行に表示します。
  243: @xref{Mode Line}。
  244: 
  245: @c   Resize-Minibuffer mode makes the minibuffer expand as necessary to
  246: @c hold the text that you put in it.  @xref{Minibuffer Edit}.
  247: ミニバッファリサイズ(resize-minibuffer)モードは、
  248: 打ち込んだテキスト量に応じて自動的にミニバッファを広げます。
  249: @xref{Minibuffer Edit}。
  250: 
  251: @c   Scroll Bar mode gives each window a scroll bar (@pxref{Scroll Bars}).
  252: @c Menu Bar mode gives each frame a menu bar (@pxref{Menu Bars}).  Both of
  253: @c these modes are enabled by default when you use the X Window System.
  254: スクロールバー(scroll-bar)モードは、各ウィンドウにスクロールバーを付けます
  255: (@pxref{Scroll Bars})。
  256: メニューバー(menu-bar)モードは、各フレームにメニューバーを付けます
  257: (@pxref{Menu Bars})。
  258: どちらのモードも、Xウィンドウシステムを使っているときは
  259: デフォルトでオンになっています。
  260: 
  261: @c   In Transient Mark mode, every change in the buffer contents
  262: @c ``deactivates'' the mark, so that commands that operate on the region
  263: @c will get an error.  This means you must either set the mark, or
  264: @c explicitly ``reactivate'' it, before each command that uses the region.
  265: @c The advantage of Transient Mark mode is that Emacs can display the
  266: @c region highlighted (currently only when using X).  @xref{Setting Mark}.
  267: 暫定マーク(transient-mark)モードでは、
  268: バッファの内容を変更するとマークは『不活性』になるので、
  269: そのあとでリージョンを対象とするコマンドを使うとエラーになります。
  270: つまり、リージョンを対象とするコマンドを使うまえに、
  271: 改めてマークを設定するか、不活性になったマークを『再度活性』にします。
  272: 暫定マーク(transient-mark)モードの利点は、
  273: (今のところXウィンドウシステムを使っているときのみ)
  274: Emacsがリージョンを強調表示することです。
  275: @xref{Setting Mark}。
  276: 
  277: @c   For most minor modes, the command name is also the name of a variable
  278: @c which directly controls the mode.  The mode is enabled whenever this
  279: @c variable's value is non-@code{nil}, and the minor-mode command works by
  280: @c setting the variable.  For example, the command
  281: @c @code{outline-minor-mode} works by setting the value of
  282: @c @code{outline-minor-mode} as a variable; it is this variable that
  283: @c directly turns Outline minor mode on and off.  To check whether a given
  284: @c minor mode works this way, use @kbd{C-h v} to ask for documentation on
  285: @c the variable name.
  286: ほとんどのマイナモードには、コマンド名と同じ名前の変数があり、
  287: その変数でモードを直接制御しています。
  288: つまり、その変数の値が@code{nil}以外ならモードはオンであり、
  289: 各マイナモードコマンドは変数の値を設定する動作をします。
  290: たとえば、コマンド@code{outline-minor-mode}は、
  291: 変数@code{outline-minor-mode}の値を設定する動作を行います。
  292: つまり、この変数が、直接、上書き(overwrite)モードをオン/オフしているのです。
  293: あるマイナモードがこのように動作するかどうかは、
  294: @kbd{C-h v}を使ってその変数の説明文字列を参照してください。
  295: 
  296: @c   These minor-mode variables provide a good way for Lisp programs to turn
  297: @c minor modes on and off; they are also useful in a file's local variables
  298: @c list.  But please think twice before setting minor modes with a local
  299: @c variables list, because most minor modes are matter of user
  300: @c preference---other users editing the same file might not want the same
  301: @c minor modes you prefer.
  302: これらのマイナモード変数は、Lispプログラムからモードを
  303: オン/オフするのに有用です。
  304: また、ファイルのローカル変数リストとして指定するのも便利です。
  305: ただし、ローカル変数リストで設定する場合には、よく考えてください。
  306: というのは、ほとんどのマイナモードはユーザーの好みの問題であり、
  307: 同じファイルを編集する別のユーザーは好みが違うかもしれません。
  308: 
  309: @node Variables, Keyboard Macros, Minor Modes, Customization
  310: @c @section Variables
  311: @c @cindex variable
  312: @c @cindex option, user
  313: @c @cindex user option
  314: @section 変数
  315: @cindex 変数
  316: @cindex ユーザーオプション
  317: 
  318: @c   A @dfn{variable} is a Lisp symbol which has a value.  The symbol's
  319: @c name is also called the name of the variable.  A variable name can
  320: @c contain any characters that can appear in a file, but conventionally
  321: @c variable names consist of words separated by hyphens.  A variable can
  322: @c have a documentation string which describes what kind of value it should
  323: @c have and how the value will be used.
  324: @dfn{変数}は値を持つLispシンボル(記号)です。
  325: そのシンボルの名前のことを、変数名とも呼びます。
  326: 変数名はファイルに入れられるどのような文字でも含むことができますが、
  327: 習慣的には、変数名は英単語をハイフンでつなげたものです。
  328: 変数には、その変数がどのような値を持ち、
  329: どのように使われるかを記述した説明文字列を持たせることができます。
  330: 
  331: @c   Lisp allows any variable to have any kind of value, but most variables
  332: @c that Emacs uses require a value of a certain type.  Often the value should
  333: @c always be a string, or should always be a number.  Sometimes we say that a
  334: @c certain feature is turned on if a variable is ``non-@code{nil},'' meaning
  335: @c that if the variable's value is @code{nil}, the feature is off, but the
  336: @c feature is on for @emph{any} other value.  The conventional value to use to
  337: @c turn on the feature---since you have to pick one particular value when you
  338: @c set the variable---is @code{t}.
  339: Lispではどの変数にどのような値でも格納できますが、
  340: Emacsの中ではほとんどの変数はどのような値を持つかが決まっています。
  341: たとえば、ある変数はつねに文字列である、別の変数は数値であるといった具合です。
  342: また、「これこれの機能はこの変数が@code{nil}以外のときにオンになる」
  343: といういい方もします。
  344: その場合は、その変数に@code{nil}が格納されているときはその機能はオフですが、
  345: それ以外の@emph{どんな}値が格納されているときでもその機能はオンになります。
  346: ですが、ある機能をオンにするために使う値として
  347: 何か選ばなければなりませんから、@code{t}という値を使うのが習慣です。
  348: 
  349: @c   Emacs uses many Lisp variables for internal record keeping, as any
  350: @c Lisp program must, but the most interesting variables for you are the
  351: @c ones that exist for the sake of customization.  Emacs does not (usually)
  352: @c change the values of these variables; instead, you set the values, and
  353: @c thereby alter and control the behavior of certain Emacs commands.  These
  354: @c variables are called @dfn{user options}.  Most user options are
  355: @c documented in this manual, and appear in the Variable Index
  356: @c (@pxref{Variable Index}).
  357: Emacsは一般のLispプログラムと同様、
  358: 内部で情報を保持するために数多くの変数を使いますが、
  359: ユーザーにとって特に興味深い変数というのは、
  360: もっぱらカスタマイズ向けに用意された変数だといえます。
  361: Emacsは(通常は)そのような変数の値を変更しません。
  362: かわりに、ユーザーが値を設定すると、
  363: その値に応じてさまざまなEmacsコマンドのふるまいを
  364: 変更したり制御したりできるのです。
  365: これらの変数のことを@dfn{ユーザーオプション}といいます。
  366: ほとんどのユーザーオプションはこのマニュアルに記載してありますし、
  367: 変数索引(@pxref{Variable Index})にも記載してあります。
  368: 
  369: @c   One example of a variable which is a user option is @code{fill-column}, which
  370: @c specifies the position of the right margin (as a number of characters from
  371: @c the left margin) to be used by the fill commands (@pxref{Filling}).
  372: ユーザーオプションであるような変数の例として@code{fill-column}があります。
  373: この変数は、詰め込みコマンド(@pxref{Filling})が使う
  374: 右端の桁位置を(左端から何文字右かを表す数値として)保持します。
  375: 
  376: @menu
  377: * Examining::	        Examining or setting one variable's value.
  378: * Easy Customization::
  379:                         Convenient and easy customization of variables.
  380: * Hooks::	        Hook variables let you specify programs for parts
  381: 		          of Emacs to run on particular occasions.
  382: * Locals::	        Per-buffer values of variables.
  383: * File Variables::      How files can specify variable values.
  384: @end menu
  385: 
  386: @node Examining, Easy Customization, , Variables
  387: @c @subsection Examining and Setting Variables
  388: @c @cindex setting variables
  389: @subsection 変数の設定と参照
  390: @cindex 変数の設定
  391: 
  392: @table @kbd
  393: @item C-h v @var{var} @key{RET}
  394: @c Display the value and documentation of variable @var{var}
  395: @c (@code{describe-variable}).
  396: 変数@var{var}の値と説明文字列を表示する
  397: (@code{describe-variable})。
  398: @item M-x set-variable @key{RET} @var{var} @key{RET} @var{value} @key{RET}
  399: @c Change the value of variable @var{var} to @var{value}.
  400: 変数@var{var}の値を@var{value}に変更する。
  401: @end table
  402: 
  403: @c   To examine the value of a single variable, use @kbd{C-h v}
  404: @c (@code{describe-variable}), which reads a variable name using the
  405: @c minibuffer, with completion.  It displays both the value and the
  406: @c documentation of the variable.  For example,
  407: 特定の変数の値を見るには、@kbd{C-h v}(@code{describe-variables})を使います。
  408: このコマンドは、ミニバッファで補完機能付きで変数名を読み取ります。
  409: 変数の値と説明文字列の双方を表示します。
  410: たとえば、
  411: 
  412: @example
  413: C-h v fill-column @key{RET}
  414: @end example
  415: 
  416: @noindent
  417: @c displays something like this:
  418: とすると、つぎのように表示されます。
  419: 
  420: @smallexample
  421: fill-column's value is 75
  422: 
  423: Documentation:
  424: *Column beyond which automatic line-wrapping should happen.
  425: Automatically becomes buffer-local when set in any fashion.
  426: @end smallexample
  427: 
  428: @noindent
  429: @c The star at the beginning of the documentation indicates that this
  430: @c variable is a user option.  @kbd{C-h v} is not restricted to user
  431: @c options; it allows any variable name.
  432: 説明文の先頭にある@kbd{*}は、
  433: この変数がユーザーオプションであることを示します。
  434: @kbd{C-h v}は、ユーザーオプションに限らず任意の変数を扱えます。
  435: 
  436: @findex set-variable
  437: @c   The most convenient way to set a specific user option is with @kbd{M-x
  438: @c set-variable}.  This reads the variable name with the minibuffer (with
  439: @c completion), and then reads a Lisp expression for the new value using
  440: @c the minibuffer a second time.  For example,
  441: ユーザーオプションを設定するいちばん簡単な方法は@kbd{M-x set-variable}を
  442: 使うことです。
  443: このコマンドは、まずミニバッファで(補完機能付きで)変数名を読み取り、
  444: つぎにミニバッファで変数に設定するLisp式を読み取ります。
  445: たとえば、
  446: 
  447: @example
  448: M-x set-variable @key{RET} fill-column @key{RET} 75 @key{RET}
  449: @end example
  450: 
  451: @noindent
  452: @c sets @code{fill-column} to 75.
  453: とすると、@code{fill-column}に75を設定します。
  454: 
  455: @c  @kbd{M-x set-variable} is limited to user option variables, but you can
  456: @c set any variable with a Lisp expression, using the function @code{setq}.
  457: @c Here is a @code{setq} expression to set @code{fill-column}:
  458: @kbd{M-x set-variable}はユーザーオプションに対してだけ使えます。
  459: これに対し、@code{setq}を使えばどの変数にでも値が設定できます。
  460: たとえば、@code{setq}を使って@code{fill-column}に
  461: 設定するにはつぎのようにします。
  462: 
  463: @example
  464: (setq fill-column 75)
  465: @end example
  466: 
  467: @c   To execute an expression like this one, go to the @samp{*scratch*}
  468: @c buffer, type in the expression, and then type @kbd{C-j}.  @xref{Lisp
  469: @c Interaction}.
  470: このような式を実行するには、@samp{*scratch*}バッファにいき、
  471: 式を打ち込んでから@kbd{C-j}を打ちます。
  472: @xref{Lisp Interaction}。
  473: 
  474: @c   Setting variables, like all means of customizing Emacs except where
  475: @c otherwise stated, affects only the current Emacs session.
  476: 変数を設定することは、特記していない限り、
  477: 他のカスタマイズ方法と同様に、現在のEmacsセッションだけに影響します。
  478: 
  479: @node Easy Customization, Hooks, Examining, Variables
  480: @c @subsection Easy Customization Interface
  481: @subsection 簡便なカスタマイズ方法
  482: 
  483: @findex customize
  484: @c @cindex customization buffer
  485: @cindex カスタマイズバッファ
  486: @c   A convenient way to find the user option variables that you want to
  487: @c change, and then change them, is with @kbd{M-x customize}.  This command
  488: @c creates a @dfn{customization buffer} with which you can browse through
  489: @c the Emacs user options in a logically organized structure, then edit and
  490: @c set their values.  You can also use the customization buffer to save
  491: @c settings permanently.  (Not all Emacs user options are included in this
  492: @c structure as of yet, but we are adding the rest.)
  493: 変更したいユーザーオプション変数をみつけて値を変更する便利な方法は、
  494: @kbd{M-x customize}を使うことです。
  495: このコマンドは@dfn{カスタマイズバッファ}を作成し、
  496: そのバッファ内では論理的な順序に並べたEmacsのユーザーオプションを
  497: 眺めてまわることができますし、さらに値を編集して設定できます。
  498: また、カスタマイズバッファを使えば設定を恒久的なものとして
  499: 保存もできます。
  500: (まだこの機能で扱えないユーザーオプションもあるが、
  501: それらも扱えるように現在作業中。)
  502: 
  503: @menu
  504: * Groups: Customization Groups.
  505:                              How options are classified in a structure.
  506: * Changing an Option::       How to edit a value and set an option.
  507: * Face Customization::       How to edit the attributes of a face.
  508: * Specific Customization::   Making a customization buffer for specific
  509:                                 options, faces, or groups.
  510: @end menu
  511: 
  512: @node Customization Groups, Changing an Option, , Easy Customization
  513: @c @subsubsection Customization Groups
  514: @c @cindex customization groups
  515: @subsubsection カスタマイズグループ
  516: @cindex カスタマイズグループ
  517: 
  518: @c   For customization purposes, user options are organized into
  519: @c @dfn{groups} to help you find them.  Groups are collected into bigger
  520: @c groups, all the way up to a master group called @code{Emacs}.
  521: カスタマイズのために、ユーザーオプションを@dfn{グループ}に
  522: まとめてみつけやすくしてあります。
  523: グループはさらに大きなグループにまとめられていて、
  524: いちばん大きな(すべてのグループを含む)グループは
  525: @code{Emacs}という名前です。
  526: 
  527: @c   @kbd{M-x customize} creates a customization buffer that shows the
  528: @c top-level @code{Emacs} group and the second-level groups immediately
  529: @c under it.  It looks like this, in part:
  530: @kbd{M-x customize}は、トップレベルの@code{Emacs}グループ
  531: およびその直下の(第2レベルの)グループを表示した
  532: カスタマイズバッファを作成します。
  533: その表示はつぎのようになります。
  534: 
  535: @smallexample
  536: /- Emacs group: ---------------------------------------------------\
  537:       [State]: visible group members are all at standard settings.
  538:    Customization of the One True Editor.
  539:    See also [Manual].
  540: 
  541: Editing group: [Go to Group] 
  542: Basic text editing facilities.
  543: 
  544: External group: [Go to Group] 
  545: Interfacing to external utilities.
  546: 
  547: @var{more second-level groups}
  548: 
  549: \- Emacs group end ------------------------------------------------/
  550: 
  551: @end smallexample
  552: 
  553: @noindent
  554: @c This says that the buffer displays the contents of the @code{Emacs}
  555: @c group.  The other groups are listed because they are its contents.  But
  556: @c they are listed differently, without indentation and dashes, because
  557: @c @emph{their} contents are not included.  Each group has a single-line
  558: @c documentation string; the @code{Emacs} group also has a @samp{[State]}
  559: @c line.
  560: この表示の先頭部分は、
  561: このバッファが@code{Emacs}グループの内容を表示していることを記しています。
  562: 残りのグループが表示されるのは、
  563: それらが@code{Emacs}グループに含まれているからです。
  564: ただし、それらは字下げや「-」なしで表示されていて、
  565: 表示にはそれらのグループの内容が含まれては@emph{いない}ことを示しています。
  566: 各グループの表示には1行の説明文字列が付随しています。
  567: また、@code{Emacs}グループについては@samp{[State]}行が付随しています。
  568: 
  569: @c @cindex editable fields (customization buffer)
  570: @c @cindex active fields (customization buffer)
  571: @cindex 編集可能フィールド(カスタマイズバッファ)
  572: @cindex アクティブフィールド(カスタマイズバッファ)
  573: @c   Most of the text in the customization buffer is read-only, but it
  574: @c typically includes some @dfn{editable fields} that you can edit.  There
  575: @c are also @dfn{active fields}; this means a field that does something
  576: @c when you @dfn{invoke} it.  To invoke an active field, either click on it
  577: @c with @kbd{Mouse-1}, or move point to it and type @key{RET}.
  578: カスタマイズバッファ内のテキストのほとんどは変更できませんが、
  579: 一部分は@dfn{編集可能フィールド}になっていて、変更できます。
  580: また、@dfn{アクティブフィールド}という、
  581: その場所を@dfn{起動}するとなんらかの動作を行うような場所もあります。
  582: アクティブフィールドを起動するには、
  583: @kbd{Mouse-1}でそこをクリックするか、
  584: またはそこにポイントを持っていって@key{RET}を打ちます。
  585: 
  586: @c   For example, the phrase @samp{[Go to Group]} that appears in a
  587: @c second-level group is an active field.  Invoking the @samp{[Go to
  588: @c Group]} field for a group creates a new customization buffer, which
  589: @c shows that group and its contents.  This field is a kind of hypertext
  590: @c link to another group.
  591: たとえば、第2レベルグループ中の@samp{[Go to Group]}と記された部分は
  592: アクティブフィールドです。
  593: @samp{[Go to Group]}のフィールドを起動すると、
  594: そのグループとそのグループの内容を表示する
  595: 新しいカスタマイズバッファが作られ、
  596: そのグループと中身が表示されます。
  597: このフィールドは他のグループへのハイパーテキストリンクの一種です。
  598: 
  599: @c   The @code{Emacs} group does not include any user options itself, but
  600: @c other groups do.  By examining various groups, you will eventually find
  601: @c the options and faces that belong to the feature you are interested in
  602: @c customizing.  Then you can use the customization buffer to set them.
  603: @code{Emacs}グループそのものはユーザーオプションを1つも含んでいませんが、
  604: 他のグループにはあります。
  605: さまざまなグループを眺めてみると、
  606: 興味を持ってカスタマイズしてみようと思うような機能に属する
  607: オプションやフェイスをみつけることができるでしょう。
  608: 
  609: @findex customize-browse
  610: @c   You can view the structure of customization groups on a larger scale
  611: @c with @kbd{M-x customize-browse}.  This command creates a special kind of
  612: @c customization buffer which shows only the names of the groups (and
  613: @c options and faces), and their structure.
  614: カスタマイズグループ群の構造を概観するには、
  615: @kbd{M-x customize-browse}を使います。
  616: このコマンドは、グループ名(とオプションやフェイス)と
  617: それらの構造だけを表示する特別なカスタマイズバッファを作ります。
  618: 
  619: @c   In this buffer, you can show the contents of a group by invoking
  620: @c @samp{[+]}.  When the group contents are visible, this button changes to
  621: @c @samp{[-]}; invoking that hides the group contents.
  622: このバッファ中では、グループの中身を見るには@samp{[+]}のところを起動します。
  623: グループの中身が見えるようになると、このボタンは@samp{[-]}に変わります。
  624: これを起動すると中身を(もとどおり)隠します。
  625: 
  626: @c   Each group, option or face name in this buffer has an active field
  627: @c which says @samp{[Group]}, @samp{[Option]} or @samp{[Face]}.  Invoking
  628: @c that active field creates an ordinary customization buffer showing just
  629: @c that group and its contents, just that option, or just that face.
  630: @c This is the way to set values in it.
  631: 各グループ、オプション、フェイスにはそれぞれ@samp{[Group]}、
  632: @samp{[Option]}、@samp{[Face]}と記されたアクティブフィールドがあります。
  633: それらを起動すると、そのグループ/オプション/フェイスのみを表示した
  634: 通常のカスタマイズバッファが作成されます。
  635: そのバッファで値を設定します。
  636: 
  637: @node Changing an Option, Face Customization, Customization Groups, Easy Customization
  638: @c @subsubsection Changing an Option
  639: @subsubsection オプションの変更
  640: 
  641: @c   Here is an example of what a user option looks like in the
  642: @c customization buffer:
  643: カスタマイズバッファでユーザーオプションがどのように見えるか、
  644: 例をあげましょう。
  645: 
  646: @smallexample
  647: Kill Ring Max: [Hide] 30
  648:    [State]: this option is unchanged from its standard setting.
  649: Maximum length of kill ring before oldest elements are thrown away.
  650: @end smallexample
  651: 
  652: @c   The text following @samp{[Hide]}, @samp{30} in this case, indicates
  653: @c the current value of the option.  If you see @samp{[Show]} instead of
  654: @c @samp{[Hide]}, it means that the value is hidden; the customization
  655: @c buffer initially hides values that take up several lines.  Invoke
  656: @c @samp{[Show]} to show the value.
  657: @samp{[Hide]}に続くテキスト、つまり、@samp{30}がオプションの現在の値を
  658: 示しています。
  659: @samp{[Hide]}ではなく@samp{[Show]}と表示されていれば、
  660: 値は隠されています。
  661: カスタマイズバッファでは、複数行にわたるような値は最初は隠されていて、
  662: @samp{[Show]}を起動すると表示されます。
  663: 
  664: @c   The line after the option name indicates the @dfn{customization state}
  665: @c of the option: in the example above, it says you have not changed the
  666: @c option yet.  The word @samp{[State]} at the beginning of this line is
  667: @c active; you can get a menu of various operations by invoking it with
  668: @c @kbd{Mouse-1} or @key{RET}.  These operations are essential for
  669: @c customizing the variable.
  670: オプション名に続く行はオプションの@dfn{カスタマイズ状態}を示しています。
  671: 上の例では、まだ変更していないと表示されています。
  672: 行頭の@samp{[State]}のところがアクティブフィールドで、
  673: ここを@kbd{Mouse-1}か@key{RET}で起動するとさまざまな操作を
  674: 示すメニューが表示されます。
  675: これらの操作は変数をカスタマイズするうえでとても重要です。
  676: 
  677: @c   The line after the @samp{[State]} line displays the beginning of the
  678: @c option's documentation string.  If there are more lines of
  679: @c documentation, this line ends with @samp{[More]}; invoke this to show
  680: @c the full documentation string.
  681: @samp{[State]}のつぎの行には、
  682: そのオプションの説明文字列の先頭部分が表示されます。
  683: 1行に収まらない場合には、行末に@samp{[More]}と表示されます。
  684: これを起動すると説明文字列全体が表示されます。
  685: 
  686: @c   To enter a new value for @samp{Kill Ring Max}, move point to the value
  687: @c and edit it textually.  For example, you can type @kbd{M-d}, then insert
  688: @c another number.
  689: @samp{Kill Ring Max}に新しい値を設定するには、
  690: ポイントを値の位置へ持っていって直接文字列を変更します。
  691: たとえば、@kbd{M-d}で現在の値を削除してから、
  692: 設定する数値を打ち込めばよいのです。
  693: 
  694: @c   When you begin to alter the text, you will see the @samp{[State]} line
  695: @c change to say that you have edited the value:
  696: 文字列を変更し始めると、@samp{[State]}行の表示が変わって、
  697: 値が編集されていることを示すようになります。
  698: 
  699: @smallexample
  700: [State]: you have edited the value as text, but not set the option.
  701: @end smallexample
  702: 
  703: @c @cindex setting option value
  704: @c   Editing the value does not actually set the option variable.  To do
  705: @c that, you must @dfn{set} the option.  To do this, invoke the word
  706: @c @samp{[State]} and choose @samp{Set for Current Session}.
  707: @cindex オプションの値の設定
  708: 文字列を変更しただけでは、まだオプション変数の値は設定されません。
  709: 値を@dfn{設定する}には、@samp{[State]}のところを起動して、
  710: @samp{Set for Current Session}を選択します。
  711: 
  712: @c   The state of the option changes visibly when you set it:
  713: 値を設定すると、オプションの状態表示も対応して変わります。
  714: 
  715: @smallexample
  716: [State]: you have set this option, but not saved it for future sessions.
  717: @end smallexample
  718: 
  719: @c    You don't have to worry about specifying a value that is not valid;
  720: @c setting the option checks for validity and will not really install an
  721: @c unacceptable value.
  722: 正しくない値を設定してしまう心配はありません。
  723: というのは、オプションの設定時には、値の正しさを検査して、
  724: 正しくない値は設定できないようになっています。
  725: 
  726: @c @kindex M-TAB @r{(customization buffer)}
  727: @kindex M-TAB @r{(カスタマイズバッファ)}
  728: @findex widget-complete
  729: @c   While editing a value or field that is a file name, directory name,
  730: @c command name, or anything else for which completion is defined, you can
  731: @c type @kbd{M-@key{TAB}} (@code{widget-complete}) to do completion.
  732: ディレクトリ名、ファイル名、コマンド名である値やフィールドを編集するとき、
  733: および、その他何であれ補完が定義されているものを編集するときは、
  734: @kbd{M-@key{TAB}}(@code{widget-complete})を打てば補完できます。
  735: 
  736: @c   Some options have a small fixed set of possible legitimate values.
  737: @c These options don't let you edit the value textually.  Instead, an
  738: @c active field @samp{[Value Menu]} appears before the value; invoke this
  739: @c field to edit the value.  For a boolean ``on or off'' value, the active
  740: @c field says @samp{[Toggle]}, and it changes to the other value.
  741: @c @samp{[Value Menu]} and @samp{[Toggle]} edit the buffer; the changes
  742: @c take effect when you use the @samp{Set for Current Session} operation.
  743: いくつかのオプションでは、正しい値としては決まった少数のものだけを使えます。
  744: そのようなオプションは、テキストとしては編集できません。
  745: かわりに@samp{[Value Menu]}というアクティブフィールドが値のまえに現れます。
  746: 『オンかオフ』だけの真偽値を持つオプションでは、
  747: アクティブフィールドは@samp{[Toggle]}と表示されていて、
  748: そこを起動するたびに値を反転できます。
  749: @samp{[Value Menu]}も@samp{[Toggle]}もバッファを変更するだけです。
  750: 値が実際に設定されるのは@samp{Set for Current Session}を起動したときです。
  751: 
  752: @c   Some options have values with complex structure.  For example, the
  753: @c value of @code{load-path} is a list of directories.  Here is how it
  754: @c appears in the customization buffer:
  755: いくつかのオプションは、込み入った構造の値を持ちます。
  756: たとえば、@code{load-path}は値としてディレクトリのリストを持ちます。
  757: これをカスタマイズバッファに表示すると、つぎのようになります。
  758: 
  759: @smallexample
  760: Load Path:
  761: [INS] [DEL] [Current dir?]: /usr/local/share/emacs/20.3/site-lisp
  762: [INS] [DEL] [Current dir?]: /usr/local/share/emacs/site-lisp
  763: [INS] [DEL] [Current dir?]: /usr/local/share/emacs/20.3/leim
  764: [INS] [DEL] [Current dir?]: /usr/local/share/emacs/20.3/lisp
  765: [INS] [DEL] [Current dir?]: /build/emacs/e20/lisp
  766: [INS] [DEL] [Current dir?]: /build/emacs/e20/lisp/gnus
  767: [INS]
  768:    [State]: this item has been changed outside the customization buffer.
  769: List of directories to search for files to load....
  770: @end smallexample
  771: 
  772: @noindent
  773: @c Each directory in the list appears on a separate line, and each line has
  774: @c several editable or active fields.
  775: リスト中の各ディレクトリがそれぞれ別の行に表示され、
  776: 各行にはいくつかの編集可能/アクティブフィールドがあります。
  777: 
  778: @c   You can edit any of the directory names.  To delete a directory from
  779: @c the list, invoke @samp{[DEL]} on that line.  To insert a new directory in
  780: @c the list, invoke @samp{[INS]} at the point where you want to insert it.
  781: どのディレクトリ名も直接編集できます。
  782: リストからディレクトリを削除するには、
  783: その行の@samp{[DEL]}を起動します。
  784: リストに新しいディレクトリを追加するには、
  785: 挿入したい箇所の@samp{[INS]}を起動します。
  786: 
  787: @c   You can also invoke @samp{[Current dir?]} to switch between including
  788: @c a specific named directory in the path, and including @code{nil} in the
  789: @c path.  (@code{nil} in a search path means ``try the current
  790: @c directory.'')
  791: @samp{[Current dir?]}を起動すると、パスに特定のディレクトリを含めるのか、
  792: または、@code{nil}を含めるのかを切り替えられます。
  793: (探索パスにおける@code{nil}は、
  794: 『カレントディレクトリを探せ』という意味。)
  795: 
  796: @c @kindex TAB @r{(customization buffer)}
  797: @c @kindex S-TAB @r{(customization buffer)}
  798: @kindex TAB @r{(カスタマイズバッファ)}
  799: @kindex S-TAB @r{(カスタマイズバッファ)}
  800: @findex widget-forward
  801: @findex widget-backward
  802: @c   Two special commands, @key{TAB} and @kbd{S-@key{TAB}}, are useful for
  803: @c moving through the customization buffer.  @key{TAB}
  804: @c (@code{widget-forward}) moves forward to the next active or editable
  805: @c field; @kbd{S-@key{TAB}} (@code{widget-backward}) moves backward to the
  806: @c previous active or editable field.
  807: 2つの特別なコマンド、@key{TAB}と@kbd{S-@key{TAB}}は、
  808: カスタマイズバッファ内での移動に役立ちます。
  809: @key{TAB}(@code{widget-forward})はつぎの
  810: アクティブ/編集可能フィールドへ移動します。
  811: @kbd{S-@key{TAB}}(@code{widget-backward})は、
  812: 1つまえのアクティブ/編集可能フィールドへ移動します。
  813: 
  814: @c   Typing @key{RET} on an editable field also moves forward, just like
  815: @c @key{TAB}.  The reason for this is that people have a tendency to type
  816: @c @key{RET} when they are finished editing a field.  If you have occasion
  817: @c to insert a newline in an editable field, use @kbd{C-o} or @kbd{C-q
  818: @c C-j}.
  819: 編集可能フィールドで@key{RET}を打つと、
  820: @key{TAB}と同様につぎのフィールドへ進みます。
  821: なぜそうなっているかというと、編集可能フィールドを
  822: 編集し終えると最後に@key{RET}を打つ人が多いからです。
  823: 編集可能フィールドに改行文字を入るには、
  824: @kbd{C-o}か@kbd{C-q C-j}と打ちます。
  825: 
  826: @c @cindex saving option value
  827: @c   Setting the option changes its value in the current Emacs session;
  828: @c @dfn{saving} the value changes it for future sessions as well.  This
  829: @c works by writing code into your @file{~/.emacs} file so as to set the
  830: @c option variable again each time you start Emacs.  To save the option,
  831: @c invoke @samp{[State]} and select the @samp{Save for Future Sessions}
  832: @c operation.
  833: @cindex オプションの値の保存
  834: オプションを設定すると、その値は現在のEmacsセッションだけに有効です。
  835: その値を@dfn{保存}すると、将来のセッションでも有効になります。
  836: 保存を行うと、個人の@file{~/.emacs}ファイルにコードが追加されて、
  837: つぎにEmacsを起動したときにオプション変数の値を設定するようになります。
  838: オプションを保存するには、@samp{[State]}を起動して
  839: @samp{Save for Future Sessions}を選びます。
  840: 
  841: @c   You can also restore the option to its standard value by invoking
  842: @c @samp{[State]} and selecting the @samp{Reset to Standard Settings}
  843: @c operation.  There are actually three reset operations:
  844: オプションを標準値に戻したければ、@samp{[State]}を起動して
  845: @samp{Reset to Standard Settings}を選びます。
  846: 実際にはつぎの3種類のリセット操作があります。
  847: 
  848: @table @samp
  849: @item Reset
  850: @c If you have made some modifications and not yet set the option,
  851: @c this restores the text in the customization buffer to match
  852: @c the actual value.
  853: なんらかの修正を行ったが、まだオプションを設定していなければ、
  854: この操作により、カスタマイズバッファ上のテキストを
  855: オプションの現在値と一致させられる。
  856: 
  857: @item Reset to Saved
  858: @c This restores the value of the option to the last saved value,
  859: @c and updates the text accordingly.
  860: この操作では、オプションの値を最後に保存した値に戻し、
  861: カスタマイズバッファ上のテキストもその値に合わせる。
  862: 
  863: @item Reset to Standard Settings
  864: @c This sets the option to its standard value, and updates the text
  865: @c accordingly.  This also eliminates any saved value for the option,
  866: @c so that you will get the standard value in future Emacs sessions.
  867: この操作では、オプションを標準値に設定し、
  868: カスタマイズバッファ上のテキストもその値に合わせる。
  869: さらに、以前にそのオプションについて保存した値もすべてもとに戻されるので、
  870: 将来のEmacsセッションでもすべて標準値が使われるようになる。
  871: @end table
  872: 
  873: @c   The state of a group indicates whether anything in that group has been
  874: @c edited, set or saved.  You can select @samp{Set for Current Session},
  875: @c @samp{Save for Future Sessions} and the various kinds of @samp{Reset}
  876: @c operation for the group; these operations on the group apply to all
  877: @c options in the group and its subgroups.
  878: グループの@samp{[State]}はそのグループに属するもののどれかが
  879: 編集された/設定された/保存されたことを示します。
  880: @samp{Set for Current Session}、@samp{Save for Future Sessions}、
  881: および各種の@samp{Reset}をグループ全体に対して適用できます。
  882: これらの操作はグループおよびそのサブグループに属するすべての
  883: オプションに対して適用されます。
  884: 
  885: @c   Near the top of the customization buffer there are two lines
  886: @c containing several active fields:
  887: カスタマイズバッファの先頭付近には、
  888: いくつかのアクティブフィールドを含んだつぎのような行があります。
  889: 
  890: @smallexample
  891:  [Set for Current Session] [Save for Future Sessions]
  892:  [Reset] [Reset to Saved] [Reset to Standard]   [Bury Buffer]
  893: @end smallexample
  894: 
  895: @noindent
  896: @c Invoking @samp{[Bury Buffer]} buries this customization buffer.  Each of
  897: @c the other fields performs an operation---set, save or reset---on each of
  898: @c the items in the buffer that could meaningfully be set, saved or reset.
  899: @samp{[Bury Buffer]}を起動すると、カスタマイズバッファを消します。
  900: 他のフィールドは、そのバッファに含まれている項目それぞれについてそれぞれ、
  901: 設定、保存、リセットを(それらの操作が適用可能なら)実行します。
  902: 
  903: @node Face Customization, Specific Customization, Changing an Option, Easy Customization
  904: @c @subsubsection Customizing Faces
  905: @subsubsection フェイスのカスタマイズ
  906: @c @cindex customizing faces
  907: @c @cindex bold font
  908: @c @cindex italic font
  909: @c @cindex fonts and faces
  910: @cindex フェイスのカスタマイズ
  911: @cindex ボールドフォント
  912: @cindex イタリックフォント
  913: @cindex フォントとフェイス
  914: 
  915: @c   In addition to user options, some customization groups also include
  916: @c faces.  When you show the contents of a group, both the user options and
  917: @c the faces in the group appear in the customization buffer.  Here is an
  918: @c example of how a face looks:
  919: いくつかのカスタマイズグループは、
  920: ユーザーオプションに加えてフェイスも含みます。
  921: グループの内容を表示したとき、
  922: オプションとフェイスの両方がカスタマイズバッファに現れます。
  923: フェイスの見え方は、たとえばつぎのようになります。
  924: 
  925: @smallexample
  926: Custom Changed Face: (sample)
  927:    [State]: this face is unchanged from its standard setting.
  928: Face used when the customize item has been changed.
  929: Attributes: [ ] Bold: [toggle] off
  930:             [X] Italic: [toggle] on
  931:             [ ] Underline: [toggle] off
  932:             [ ] Inverse-Video: [toggle] on
  933:             [ ] Foreground: black (sample)
  934:             [ ] Background: white (sample)
  935:             [ ] Stipple:  
  936: @end smallexample
  937: 
  938: @c   Each face attribute has its own line.  The @samp{[@var{x}]} field
  939: @c before the attribute name indicates whether the attribute is
  940: @c @dfn{enabled}; @samp{X} means that it is.  You can enable or disable the
  941: @c attribute by invoking that field.  When the attribute is enabled, you
  942: @c can change the attribute value in the usual ways.
  943: フェイスの各属性はそれぞれが1行を占めます。
  944: 属性のまえの@samp{[@var{x}]}というフィールドは、
  945: その属性が@dfn{オンになっている}かどうかを表示しています。
  946: @samp{X}が表示されていればオンになっています。
  947: そのフィールドを起動することでオン/オフを反転できます。
  948: 属性がオンになっている場合は、
  949: その属性の値をオプションと同様にして変更できす。
  950: 
  951: @c   On a black-and-white display, the colors you can use for the
  952: @c background are @samp{black}, @samp{white}, @samp{gray}, @samp{gray1},
  953: @c and @samp{gray3}.  Emacs supports these shades of gray by using
  954: @c background stipple patterns instead of a color.
  955: 白黒ディスプレイでは、背景に設定可能な表示色は@samp{black}、
  956: @samp{white}、@samp{gray}、@samp{gray1}、@samp{gray3}のいずれかです。
  957: Emacsは表示色のかわりにドットパターンで灰色の階調を表します。
  958: 
  959: @c   Setting, saving and resetting a face work like the same operations for
  960: @c options (@pxref{Changing an Option}).
  961: フェイスを設定/保存/リセットするのは、オプションと同様にしてできます
  962: (@pxref{Changing an Option})。
  963: 
  964: @c   A face can specify different appearances for different types of
  965: @c display.  For example, a face can make text red on a color display, but
  966: @c use a bold font on a monochrome display.  To specify multiple
  967: @c appearances for a face, select @samp{Show Display Types} in the menu you
  968: @c get from invoking @samp{[State]}.
  969: フェイスでは、ディスプレイの種別ごとに異なる見え方を指定できます。
  970: たとえば、あるフェイスをカラーディスプレイでは赤で表示し、
  971: 白黒ディスプレイではかわりにボールド体で表示するようにできます。
  972: あるフェイスに複数の見え方を指定するには、
  973: @samp{[State]}メニューを表示させて@samp{Show Display Types}を選びます。
  974: 
  975: @findex modify-face
  976: @c   Another more basic way to set the attributes of a specific face is
  977: @c with @kbd{M-x modify-face}.  This command reads the name of a face, then
  978: @c reads the attributes one by one.  For the color and stipple attributes,
  979: @c the attribute's current value is the default---type just @key{RET} if
  980: @c you don't want to change that attribute.  Type @samp{none} if you want
  981: @c to clear out the attribute.
  982: フェイスの属性を設定するもっと基本的な方法は、
  983: @kbd{M-x modify-face}を使うことです。
  984: このコマンドは、まずフェイスの名前を聞いてきて、
  985: 続いて属性を1つずつ順に聞いてきます。
  986: 表示色やパターンの属性では、その属性の現在の値がデフォルトになっています。
  987: これらを変更したくなければ、単に、@key{RET}を打てばよいのです。
  988: 属性を空にしたければ@samp{none}と打ちます。
  989: 
  990: @node Specific Customization,  , Face Customization, Easy Customization
  991: @c @subsubsection Customizing Specific Items
  992: @subsubsection 特定項目のカスタマイズ
  993: 
  994: @c   Instead of finding the options you want to change by moving down
  995: @c through the structure of groups, you can specify the particular option,
  996: @c face or group that you want to customize.
  997: グループ構造を1段ずつ降りていって目指すオプションを探すかわりに、
  998: カスタマイズしたいオプション/フェイス/グループの名前を
  999: 直接に指定することもできます。
 1000: 
 1001: @table @kbd
 1002: @item M-x customize-option @key{RET} @var{option} @key{RET}
 1003: @c Set up a customization buffer with just one option, @var{option}.
 1004: 指定したオプション@var{option}だけを含むカスタマイズバッファを開く。
 1005: @item M-x customize-face @key{RET} @var{face} @key{RET}
 1006: @c Set up a customization buffer with just one face, @var{face}.
 1007: 指定したフェイス@var{face}だけを含むカスタマイズバッファを開く。
 1008: @item M-x customize-group @key{RET} @var{group} @key{RET}
 1009: @c Set up a customization buffer with just one group, @var{group}.
 1010: 指定したグループ@var{group}だけを含むカスタマイズバッファを開く。
 1011: @item M-x customize-apropos @key{RET} @var{regexp} @key{RET}
 1012: @c Set up a customization buffer with all the options, faces and groups
 1013: @c that match @var{regexp}.
 1014: 指定した正規表現@var{regexp}に一致するすべての
 1015: オプション/フェイス/グループを含むカスタマイズバッファを開く。
 1016: @item M-x customize-changed-options @key{RET} @var{version} @key{RET}
 1017: @c Set up a customization buffer with all the options, faces and groups
 1018: @c whose meaning has changed since Emacs version @var{version}.
 1019: Emacsのバージョン@var{version}以降に意味が変更されたすべての
 1020: オプション/フェイス/グループを含むカスタマイズバッファを開く。
 1021: @item M-x customize-saved 
 1022: @c Set up a customization buffer containing all options and faces that you
 1023: @c have saved with customization buffers.
 1024: カスタマイズバッファで保存したすべてのオプションとフェイスを含む
 1025: カスタマイズバッファを開く。
 1026: @item M-x customize-customized
 1027: @c Set up a customization buffer containing all options and faces that you
 1028: @c have customized but not saved.
 1029: カスタマイズしたが、まだ保存していないすべてのオプションとフェイスを含む
 1030: カスタマイズバッファを開く。
 1031: @end table
 1032: 
 1033: @findex customize-option
 1034: @c   If you want to alter a particular user option variable with the
 1035: @c customization buffer, and you know its name, you can use the command
 1036: @c @kbd{M-x customize-option} and specify the option name.  This sets up
 1037: @c the customization buffer with just one option---the one that you asked
 1038: @c for.  Editing, setting and saving the value work as described above, but
 1039: @c only for the specified option.
 1040: 名前のわかっているオプション変数をカスタマイズバッファで変更したい場合は、
 1041: コマンド@kbd{M-x customize-option}で直接名前を指定します。
 1042: これにより、そのオプションだけを含むカスタマイズバッファが現れます。
 1043: 編集/設定/保存はこれまで説明したとおりに行いますが、
 1044: 設定の対象になるのは指定したオプションだけです。
 1045: 
 1046: @findex customize-face
 1047: @c   Likewise, you can modify a specific face, chosen by name, using
 1048: @c @kbd{M-x customize-face}.
 1049: 同様にして、@kbd{M-x customize-face}ではフェイス名を指定して変更できます。
 1050: 
 1051: @findex customize-group
 1052: @c   You can also set up the customization buffer with a specific group,
 1053: @c using @kbd{M-x customize-group}.  The immediate contents of the chosen
 1054: @c group, including option variables, faces, and other groups, all appear
 1055: @c as well.  However, these subgroups' own contents start out hidden.  You
 1056: @c can show their contents in the usual way, by invoking @samp{[Show]}.
 1057: 同様に、@kbd{M-x customize-group}ではグループ名を指定して
 1058: カスタマイズバッファを開くことができます。
 1059: そのカスタマイズバッファには、指定したグループに直接含まれているオプション、
 1060: フェイス、他の(下位の)グループが現れます。
 1061: ただし、サブグループの内容は最初は隠されています。
 1062: それらを表示したい場合は、通常どおり@samp{[Show]}を起動します。
 1063: 
 1064: @findex customize-apropos
 1065: @c   To control more precisely what to customize, you can use @kbd{M-x
 1066: @c customize-apropos}.  You specify a regular expression as argument; then
 1067: @c all options, faces and groups whose names match this regular expression
 1068: @c are set up in the customization buffer.  If you specify an empty regular
 1069: @c expression, this includes @emph{all} groups, options and faces in the
 1070: @c customization buffer (but that takes a long time).
 1071: @kbd{M-x customize-apropos}を使うと、
 1072: カスタマイズするものをもっと細かく制御できます。
 1073: このコマンドでは引数として正規表現を指定し、
 1074: それに一致するすべてのオプション/フェイス/グループを
 1075: 含んだカスタマイズバッファが現れます。
 1076: 空の正規表現を指定すると、@emph{すべての}オプション/フェイス/グループを
 1077: 含むカスタマイズバッファができます
 1078: (ただしすごく時間がかかる)。
 1079: 
 1080: @findex customize-changed-options
 1081: @c   When you upgrade to a new Emacs version, you might want to customize
 1082: @c new options and options whose meanings or default values have changed.
 1083: @c To do this, use @kbd{M-x customize-changed-options} and specify a
 1084: @c previous Emacs version number using the minibuffer.  It creates a
 1085: @c customization buffer which shows all the options (and groups) whose
 1086: @c definitions have been changed since the specified version.
 1087: Emacsの新版へ更新したときには、新しいオプション、
 1088: 意味やデフォルト値が変更されたオプションをカスタマイズしたいはずです。
 1089: それには、@kbd{M-x customize-changed-options}を使い、
 1090: ミニバッファで以前の版のEmacsのバージョン番号を指定します。
 1091: すると、指定したバージョン以降に定義が変更された
 1092: すべてのオプション(とグループ)を含んだカスタマイズバッファを作ります。
 1093: 
 1094: @findex customize-saved
 1095: @findex customize-customized
 1096: @c   If you change option values and then decide the change was a mistake,
 1097: @c you can use two special commands to revisit your previous changes.  Use
 1098: @c @kbd{customize-saved} to look at the options and faces that you have
 1099: @c saved.  Use @kbd{M-x customize-customized} to look at the options and
 1100: @c faces that you have set but not saved.
 1101: オプションを変更したあとでまちがったと気づいたときは、
 1102: 変更したものを再検討するために2つのコマンドが使えます。
 1103: 保存してしまったオプションについては@kbd{customize-saved}を、
 1104: 変更したけれどまだ保存していないオプションについては
 1105: @kbd{M-x customize-customized}を使います。
 1106: 
 1107: @node Hooks, Locals, Easy Customization, Variables
 1108: @c @subsection Hooks
 1109: @subsection フック
 1110: @c @cindex hook
 1111: @cindex フック
 1112: 
 1113: @c   A @dfn{hook} is a variable where you can store a function or functions
 1114: @c to be called on a particular occasion by an existing program.  Emacs
 1115: @c provides a number of hooks for the sake of customization.
 1116: @dfn{フック}とはある特定の状況で既存のプログラムから呼び出される
 1117: 関数/関数群を格納しておく変数をいいます。
 1118: Emacsには、カスタマイズ用のフックが数多くあります。
 1119: 
 1120: @c   Most of the hooks in Emacs are @dfn{normal hooks}.  These variables
 1121: @c contain lists of functions to be called with no arguments.  The reason
 1122: @c most hooks are normal hooks is so that you can use them in a uniform
 1123: @c way.  Every variable in Emacs whose name ends in @samp{-hook} is a
 1124: @c normal hook.
 1125: Emacs中のほとんどのフックは@dfn{ノーマルフック}です。
 1126: これらの変数は、引数なしで呼び出される関数のリストを保持します。
 1127: ほとんどのフックがノーマルフックなのは、それらを統一的に扱えるからです。
 1128: Emacsでは、@samp{-hook}で終わる名前の変数はすべてノーマルフックです。
 1129: 
 1130: @c   Most major modes run hooks as the last step of initialization.  This
 1131: @c makes it easy for a user to customize the behavior of the mode, by
 1132: @c overriding the local variable assignments already made by the mode.  But
 1133: @c hooks may also be used in other contexts.  For example, the hook
 1134: @c @code{suspend-hook} runs just before Emacs suspends itself
 1135: @c (@pxref{Exiting}).
 1136: ほとんどのメジャーモードは初期設定の最終段階でフックを実行します。
 1137: モードが設定したローカル変数をフックで変更すればよいので、
 1138: モードのふるまいをユーザーがカスタマイズすることが容易になります。
 1139: しかし、フックはそれ以外の場面でも使われます。
 1140: たとえば、@code{suspend-hook}は、Emacsが休止する直前に実行されます
 1141: (@pxref{Exiting})。
 1142: 
 1143: @c   The recommended way to add a hook function to a normal hook is by
 1144: @c calling @code{add-hook}.  You can use any valid Lisp function as the
 1145: @c hook function.  For example, here's how to set up a hook to turn on Auto
 1146: @c Fill mode when entering Text mode and other modes based on Text mode:
 1147: ノーマルフックにフック関数を追加するお勧めのやり方は、
 1148: @code{add-hook}を呼ぶことです。
 1149: フック関数としては任意のLisp関数を使えます。
 1150: たとえば、テキスト(text)モードやテキスト(text)モードを
 1151: 基にしているモードにおいて、
 1152: 自動的に自動詰め込み(auto-fill)モードをオンにするにはつぎのようにします
 1153: 
 1154: @example
 1155: (add-hook 'text-mode-hook 'turn-on-auto-fill)
 1156: @end example
 1157: 
 1158: @c   The next example shows how to use a hook to customize the indentation
 1159: @c of C code.  (People often have strong personal preferences for one
 1160: @c format compared to another.)  Here the hook function is an anonymous
 1161: @c lambda expression.
 1162: つぎの例は、Cコードの字下げをカスタマイズするのにフックを
 1163: 使う方法を示します。
 1164: (誰でも字下げには独自の好みがある)。
 1165: ここでは、フック関数は名前のないラムダ式です。
 1166: 
 1167: @example
 1168: @group
 1169: (setq my-c-style
 1170:   '((c-comment-only-line-offset . 4)
 1171: @end group
 1172: @group
 1173:     (c-cleanup-list . (scope-operator
 1174: 		       empty-defun-braces
 1175: 		       defun-close-semi))
 1176: @end group
 1177: @group
 1178:     (c-offsets-alist . ((arglist-close . c-lineup-arglist)
 1179: 			(substatement-open . 0)))))
 1180: @end group
 1181: 
 1182: @group
 1183: (add-hook 'c-mode-common-hook
 1184:   (function (lambda ()
 1185:     (c-add-style "my-style" my-c-style t))))
 1186: @end group
 1187: @end example
 1188: 
 1189: @c   It is best to design your hook functions so that the order in which
 1190: @c they are executed does not matter.  Any dependence on the order is
 1191: @c ``asking for trouble.''  However, the order is predictable: the most
 1192: @c recently added hook functions are executed first.
 1193: どの順番で実行されても大丈夫なようにフック関数を設計するのが最良です。
 1194: 実行順序に依存するのは、『事故を呼び込む』ようなものです。
 1195: しかし、順番は予測できます。
 1196: もっとも最近に追加したフック関数ほど先に実行されます。
 1197: 
 1198: @node Locals, File Variables, Hooks, Variables
 1199: @c @subsection Local Variables
 1200: @subsection ローカル変数
 1201: 
 1202: @table @kbd
 1203: @item M-x make-local-variable @key{RET} @var{var} @key{RET}
 1204: @c Make variable @var{var} have a local value in the current buffer.
 1205: 変数@var{var}がカレントバッファでローカルに値を持つようにする。
 1206: @item M-x kill-local-variable @key{RET} @var{var} @key{RET}
 1207: @c Make variable @var{var} use its global value in the current buffer.
 1208: 変数@var{var}がカレントバッファではグローバル値を使うようにする。
 1209: @item M-x make-variable-buffer-local @key{RET} @var{var} @key{RET}
 1210: @c Mark variable @var{var} so that setting it will make it local to the
 1211: @c buffer that is current at that time.
 1212: 変数@var{var}を、値を設定したときにその時点のカレントバッファでローカル
 1213: に値を持つようにする。
 1214: @end table
 1215: 
 1216: @c @cindex local variables
 1217: @cindex ローカル変数
 1218: @c   Almost any variable can be made @dfn{local} to a specific Emacs
 1219: @c buffer.  This means that its value in that buffer is independent of its
 1220: @c value in other buffers.  A few variables are always local in every
 1221: @c buffer.  Every other Emacs variable has a @dfn{global} value which is in
 1222: @c effect in all buffers that have not made the variable local.
 1223: ほとんどの変数はEmacsバッファに対して@dfn{ローカル}にできます。
 1224: つまり、その変数のバッファ中での値は他のバッファでの値とは
 1225: 独立になります。
 1226: いくつかの変数はつねにすべてのバッファにおいてローカルです。
 1227: それ以外の変数はすべて、@dfn{グローバル}な値、
 1228: つまりその変数をローカルにしていないすべてのバッファにおいて
 1229: 共有される値を持ちます。
 1230: 
 1231: @findex make-local-variable
 1232: @c   @kbd{M-x make-local-variable} reads the name of a variable and makes it
 1233: @c local to the current buffer.  Further changes in this buffer will not
 1234: @c affect others, and further changes in the global value will not affect this
 1235: @c buffer.
 1236: @kbd{M-x make-local-variable}は変数名を受け取り、
 1237: その変数をカレントバッファにおいてローカルにします。
 1238: それ以降、このバッファ内でその変数を変更しても
 1239: 他のバッファには影響しませんし、
 1240: その変数のグローバルな値を変更してもこのバッファ内での値には影響しません。
 1241: 
 1242: @findex make-variable-buffer-local
 1243: @c @cindex per-buffer variables
 1244: @cindex バッファごとの変数
 1245: @c   @kbd{M-x make-variable-buffer-local} reads the name of a variable and
 1246: @c changes the future behavior of the variable so that it will become local
 1247: @c automatically when it is set.  More precisely, once a variable has been
 1248: @c marked in this way, the usual ways of setting the variable automatically
 1249: @c do @code{make-local-variable} first.  We call such variables
 1250: @c @dfn{per-buffer} variables.
 1251: @kbd{M-x make-variable-buffer-local}は、変数名を受け取り、
 1252: 値が設定されるとその変数が自動的にローカルになるようにします。
 1253: もっと正確にいえば、このように特別な印を変数に付けておくと、
 1254: 通常の方法で変数に値を設定するときにはつねにまず
 1255: @code{make-local-variable}が実行されるようになるのです。
 1256: このような変数を@dfn{バッファごとの変数}と呼びます。
 1257: 
 1258: @c   Major modes (@pxref{Major Modes}) always make variables local to the
 1259: @c buffer before setting the variables.  This is why changing major modes
 1260: @c in one buffer has no effect on other buffers.  Minor modes also work by
 1261: @c setting variables---normally, each minor mode has one controlling
 1262: @c variable which is non-@code{nil} when the mode is enabled (@pxref{Minor
 1263: @c Modes}).  For most minor modes, the controlling variable is per buffer.
 1264: メジャーモード(@pxref{Major Modes})では、
 1265: 変数を設定するまえにつねにローカルにします。
 1266: このため、あるバッファでメジャーモードを変更しても
 1267: 他のバッファには影響が及びません。
 1268: マイナモード(@pxref{Minor Modes})も同様で、通常、
 1269: マイナモードごとにオン/オフを制御する変数があり、
 1270: その変数が@code{nil}以外のときにそのマイナモードはオンになります。
 1271: ほとんどのマイナモードでは、その制御用変数はバッファごとの変数です。
 1272: 
 1273: @c   Emacs contains a number of variables that are always per-buffer.
 1274: @c These include @code{abbrev-mode}, @code{auto-fill-function},
 1275: @c @code{case-fold-search}, @code{comment-column}, @code{ctl-arrow},
 1276: @c @code{fill-column}, @code{fill-prefix}, @code{indent-tabs-mode},
 1277: @c @code{left-margin}, @code{mode-line-format}, @code{overwrite-mode},
 1278: @c @code{selective-display-ellipses}, @code{selective-display},
 1279: @c @code{tab-width}, and @code{truncate-lines}.  Some other variables are
 1280: @c always local in every buffer, but they are used for internal
 1281: @c purposes.@refill
 1282: Emacsには、つねにバッファごとの変数であるような変数が数多くあります。
 1283: @code{abbrev-mode}、@code{auto-fill-function}、@code{case-fold-search}、
 1284: @code{comment-column}、@code{ctl-arrow}、@code{fill-column}、
 1285: @code{fill-prefix}、@code{indent-tabs-mode}、@code{left-margin}、
 1286: @code{mode-line-format}、@code{overwrite-mode}、
 1287: @code{selective-display-ellipses}、@code{selective-display}、
 1288: @code{tab-width}、@code{truncate-lines}がそのような変数です。
 1289: これ以外にもつねに各バッファでローカルな変数はありますが、
 1290: それらは内部作業用の変数です。
 1291: 
 1292: @c   A few variables cannot be local to a buffer because they are always
 1293: @c local to each display instead (@pxref{Multiple Displays}).  If you try to
 1294: @c make one of these variables buffer-local, you'll get an error message.
 1295: いくつかの変数はディスプレイに対してローカルになっているため、
 1296: バッファに対してローカルにはできません
 1297: (@pxref{Multiple Displays})。
 1298: これらの変数をバッファにローカルにしようとすると、
 1299: エラーメッセージが表示されます。
 1300: 
 1301: @findex kill-local-variable
 1302: @c   @kbd{M-x kill-local-variable} reads the name of a variable and makes
 1303: @c it cease to be local to the current buffer.  The global value of the
 1304: @c variable henceforth is in effect in this buffer.  Setting the major mode
 1305: @c kills all the local variables of the buffer except for a few variables
 1306: @c specially marked as @dfn{permanent locals}.
 1307: @kbd{M-x kill-local-variable}は、変数名を受け取り、
 1308: その変数をカレントバッファに対してローカルでなくします。
 1309: それ以降そのバッファでは、その変数のグローバルな値が使われます。
 1310: メジャーモードを設定すると、@dfn{つねにローカル}と印が付いた少数の特別な
 1311: 変数を除いて、そのバッファにローカルなすべての変数をローカルでなくします。
 1312: 
 1313: @findex setq-default
 1314: @c   To set the global value of a variable, regardless of whether the
 1315: @c variable has a local value in the current buffer, you can use the Lisp
 1316: @c construct @code{setq-default}.  This construct is used just like
 1317: @c @code{setq}, but it sets variables' global values instead of their local
 1318: @c values (if any).  When the current buffer does have a local value, the
 1319: @c new global value may not be visible until you switch to another buffer.
 1320: @c Here is an example:
 1321: ある変数がカレントバッファでローカルか否かに係わらず
 1322: その変数のグローバルな値を設定したければ、@code{setq-default}を使います。
 1323: これは@code{setq}のように使われますが、
 1324: (たとえローカルな値があったとしても)つねにグローバルな値のほうを設定します。
 1325: その変数がローカルな値を持っている場合、
 1326: 新たに設定したグローバルな値は別のバッファに切り替えるまでは参照できません。
 1327: 以下に例をあげます。
 1328: 
 1329: @example
 1330: (setq-default fill-column 75)
 1331: @end example
 1332: 
 1333: @noindent
 1334: @c @code{setq-default} is the only way to set the global value of a variable
 1335: @c that has been marked with @code{make-variable-buffer-local}.
 1336: @code{setq-default}は、
 1337: @code{make-variable-buffer-local}で印を付けた変数の
 1338: グローバルな値を設定する唯一の方法です。
 1339: 
 1340: @findex default-value
 1341: @c   Lisp programs can use @code{default-value} to look at a variable's
 1342: @c default value.  This function takes a symbol as argument and returns its
 1343: @c default value.  The argument is evaluated; usually you must quote it
 1344: @c explicitly.  For example, here's how to obtain the default value of
 1345: @c @code{fill-column}:
 1346: Lispプログラム中では、変数のデフォルト値を参照するためには
 1347: @code{default-value}を使えます。
 1348: この関数はシンボルを引数とし、その変数のデフォルト値を返します。
 1349: 引数は評価されるので、普通は引数をクォートします。
 1350: たとえば、@code{fill-column}のデフォルト値を取得するにはつぎのようにします。
 1351: 
 1352: @example
 1353: (default-value 'fill-column)
 1354: @end example
 1355: 
 1356: @node File Variables,  , Locals, Variables
 1357: @c @subsection Local Variables in Files
 1358: @subsection ファイルにローカルな変数
 1359: @c @cindex local variables in files
 1360: @c @cindex file local variables
 1361: @cindex ファイル中のローカル変数
 1362: @cindex ファイルにローカルな変数
 1363: 
 1364: @c   A file can specify local variable values for use when you edit the
 1365: @c file with Emacs.  Visiting the file checks for local variable
 1366: @c specifications; it automatically makes these variables local to the
 1367: @c buffer, and sets them to the values specified in the file.
 1368: Emacsでファイルを編集する際に、そのファイルに対応したローカル変数と
 1369: その値を指定することができます。
 1370: Emacsはファイルを訪問すると、ローカル変数指定の有無を検査し、
 1371: あれば指定された変数を自動的にバッファにローカルにして、
 1372: その値をファイルで指定された値に設定します。
 1373: 
 1374: @c   There are two ways to specify local variable values: in the first
 1375: @c line, or with a local variables list.  Here's how to specify them in the
 1376: @c first line:
 1377: ローカル変数とその値を設定するには2つの方法があります。
 1378: 1つはファイルの先頭行に書くことで、
 1379: もう1つはローカル変数リストを書くことです。
 1380: 先頭行に書く場合は、たとえばつぎのようにします。
 1381: 
 1382: @example
 1383: -*- mode: @var{modename}; @var{var}: @var{value}; @dots{} -*-
 1384: @end example
 1385: 
 1386: @noindent
 1387: @c You can specify any number of variables/value pairs in this way, each
 1388: @c pair with a colon and semicolon as shown above.  @code{mode:
 1389: @c @var{modename};} specifies the major mode; this should come first in the
 1390: @c line.  The @var{value}s are not evaluated; they are used literally.
 1391: @c Here is an example that specifies Lisp mode and sets two variables with
 1392: @c numeric values:
 1393: 変数とその値を「:」で区切った対を「;」で区切って並べ、
 1394: いくつでも指定できます。
 1395: @code{mode: @var{modename};}はメジャーモードを指定するもので、
 1396: 行の最初にある必要があります。
 1397: @var{value}は評価されずに書かれているとおりのまま使われます。
 1398: 以下は、Lispモードで2つの変数に数値を設定する例です。
 1399: 
 1400: @smallexample
 1401: ;; -*-mode: Lisp; fill-column: 75; comment-column: 50; -*-
 1402: @end smallexample
 1403: 
 1404: @c   You can also specify the coding system for a file in this way: just
 1405: @c specify a value for the ``variable'' named @code{coding}.  The ``value''
 1406: @c must be a coding system name that Emacs recognizes.  @xref{Coding
 1407: @c Systems}.
 1408: この方法では、ファイルのコーディングシステムも指定できます。
 1409: つまり、@code{coding}という名前の『変数』に値を指定すればよいのです。
 1410: 『値』は、Emacsが認識できるコーディングシステム名である必要があります。
 1411: @xref{Coding Systems}。
 1412: 
 1413: @c   A @dfn{local variables list} goes near the end of the file, in the
 1414: @c last page.  (It is often best to put it on a page by itself.)  The local
 1415: @c variables list starts with a line containing the string @samp{Local
 1416: @c Variables:}, and ends with a line containing the string @samp{End:}.  In
 1417: @c between come the variable names and values, one set per line, as
 1418: @c @samp{@var{variable}:@: @var{value}}.  The @var{value}s are not
 1419: @c evaluated; they are used literally.  If a file has both a local
 1420: @c variables list and a @samp{-*-} line, Emacs processes @emph{everything}
 1421: @c in the @samp{-*-} line first, and @emph{everything} in the local
 1422: @c variables list afterward.
 1423: 一方、@dfn{ローカル変数リスト}はファイルの末尾(最後のページ)に置きます。
 1424: (最後のページにはローカル変数リストだけを置くというのを勧めます。)
 1425: ローカル変数リストは@samp{Local Variables:}という内容を含む行で始まり、
 1426: @samp{End:}という内容を含む行で終ります。
 1427: これらの行のあいだに、1つの変数につき1行ずつ、
 1428: @samp{@var{variable}:@: @var{value}}という形で変数の名前と値を指定します。
 1429: @var{value}は評価されずにファイルに書かれたとおりにそのまま使われます。
 1430: ファイルにローカル変数リストと@samp{-*-}の行が両方含まれていた場合には、
 1431: Emacsはまず@samp{-*-}の行を@emph{すべて}処理してから、
 1432: 続いてローカル変数リストの内容を@emph{すべて}処理します。
 1433: 
 1434: @c Here is an example of a local variables list:
 1435: 以下にローカル変数リストの例を示します:
 1436: 
 1437: @example
 1438: ;;; Local Variables: ***
 1439: ;;; mode:lisp ***
 1440: ;;; comment-column:0 ***
 1441: ;;; comment-start: ";;; "  ***
 1442: ;;; comment-end:"***" ***
 1443: ;;; End: ***
 1444: @end example
 1445: 
 1446: @c   As you see, each line starts with the prefix @samp{;;; } and each line
 1447: @c ends with the suffix @samp{ ***}.  Emacs recognizes these as the prefix
 1448: @c and suffix based on the first line of the list, by finding them
 1449: @c surrounding the magic string @samp{Local Variables:}; then it
 1450: @c automatically discards them from the other lines of the list.
 1451: 上の例では、各行は@samp{;;;}で始まり@samp{***}で終っています。
 1452: Emacsはこれらの接頭辞と接尾辞をリストの最初の内容に基づいて認識します。
 1453: つまり、特別な文字列@samp{Local Variables:}の前後の文字列を、
 1454: それぞれ、接頭辞、接尾辞とみなし、
 1455: それ以降の行についてはこの接頭辞と接尾辞を無視します。
 1456: 
 1457: @c   The usual reason for using a prefix and/or suffix is to embed the
 1458: @c local variables list in a comment, so it won't confuse other programs
 1459: @c that the file is intended as input for.  The example above is for a
 1460: @c language where comment lines start with @samp{;;; } and end with
 1461: @c @samp{***}; the local values for @code{comment-start} and
 1462: @c @code{comment-end} customize the rest of Emacs for this unusual syntax.
 1463: @c Don't use a prefix (or a suffix) if you don't need one.
 1464: 接頭辞と接尾辞を使う主な理由は、
 1465: ローカル変数リストをコメントの中に入れることで、
 1466: そのファイルを読み込む他のプログラムを困惑させないようにすることです。
 1467: 上の例では、コメントが@samp{;;;}で始まり@samp{***}で終るような言語を
 1468: 想定しています。
 1469: 変数@code{comment-start}と@code{comment-end}のローカルな値で、
 1470: このような変な構文に対処するようにEmacsをカスタマイズするのです。
 1471: 必要ないのであれば、接頭辞(と接尾辞)は使わないでください。
 1472: 
 1473: @c   Two ``variable names'' have special meanings in a local variables
 1474: @c list: a value for the variable @code{mode} really sets the major mode,
 1475: @c and a value for the variable @code{eval} is simply evaluated as an
 1476: @c expression and the value is ignored.  @code{mode} and @code{eval} are
 1477: @c not real variables; setting variables named @code{mode} and @code{eval}
 1478: @c in any other context has no special meaning.  If @code{mode} is used to
 1479: @c set a major mode, it should be the first ``variable'' in the list.
 1480: ローカル変数リストにおいては、2つの変数名が特別な意味を持ちます。
 1481: 変数@code{mode}に対する値は、実際にはメジャーモードを設定します。
 1482: 変数@code{eval}に対する値は、式として評価されますが、
 1483: その結果は捨てられます。
 1484: @code{mode}と@code{eval}は本当の変数ではなく、他の状況で
 1485: これらの名前の変数に値を設定してもなんら特別な意味を持ちません。
 1486: メジャーモードを設定するために@code{mode}を指定する場合は、
 1487: ローカル変数リストの先頭に書く必要があります。
 1488: 
 1489: @c   You can use the @code{mode} ``variable'' to set minor modes as well as
 1490: @c major modes; in fact, you can use it more than once, first to set the
 1491: @c major mode and then to set minor modes which are specific to particular
 1492: @c buffers.  But most minor modes should not be specified in the file in
 1493: @c any fashion, because they represent user preferences.
 1494: 仮想的な『変数』@code{mode}は、メジャーモードだけでなくマイナモードを
 1495: 設定するのにも使えます。
 1496: 実は、この指定は2回以上使うことができて、
 1497: 最初はメジャーモードを設定し、
 1498: それ以降は(それぞれ)マイナモードを設定します。
 1499: しかし、マイナモードはユーザーの好みに応じて選ぶものですから、
 1500: 普通はファイルでマイナモードを指定するべきではないでしょう。
 1501: 
 1502: @c   For example, you may be tempted to try to turn on Auto Fill mode with
 1503: @c a local variable list.  That is a mistake.  The choice of Auto Fill mode
 1504: @c or not is a matter of individual taste, not a matter of the contents of
 1505: @c particular files.  If you want to use Auto Fill, set up major mode hooks
 1506: @c with your @file{.emacs} file to turn it on (when appropriate) for you
 1507: @c alone (@pxref{Init File}).  Don't use a local variable list to impose
 1508: @c your taste on everyone.
 1509: たとえば、ローカル変数リストで自動詰め込み(auto-fill)モードをオンにしたいと
 1510: 思うかもしれませんが、それはまちがいです。
 1511: 自動詰め込みにするかどうかは、個人の好みの問題であり、
 1512: ファイルの中身によって決まるものではないからです。
 1513: ある種別のファイルでいつも自動詰め込みにしたければ、
 1514: 個人の@file{.emacs}ファイルで(状況に応じて)自動詰め込み(auto-fill)モードを
 1515: オンにするようなメジャーモードのフックを設定してください
 1516: (@pxref{Init File})。
 1517: ローカル変数リストで他人に好みを押し付けてはいけません。
 1518: 
 1519: @c   The start of the local variables list must be no more than 3000
 1520: @c characters from the end of the file, and must be in the last page if the
 1521: @c file is divided into pages.  Otherwise, Emacs will not notice it is
 1522: @c there.  The purpose of this rule is so that a stray @samp{Local
 1523: @c Variables:}@: not in the last page does not confuse Emacs, and so that
 1524: @c visiting a long file that is all one page and has no local variables
 1525: @c list need not take the time to search the whole file.
 1526: ローカル変数リストは、ファイルの末尾から3000文字以内にある必要があり、
 1527: ファイルがページに分かれている場合には最後のページにある必要があります。
 1528: これらが守られていないと、
 1529: Emacsはローカル変数リストがあることを認識しません。
 1530: これらの規則の目的は、最後ではないページに偶然
 1531: @samp{Local Variables:}があってもEmacsが誤認しないようにすることと、
 1532: 全体が1ページでローカル変数リストを持たない長いファイルを訪問するときでも
 1533: ファイル全体を探さなくてもすむようにするためです。
 1534: 
 1535: @c   Use the command @code{normal-mode} to reset the local variables and
 1536: @c major mode of a buffer according to the file name and contents,
 1537: @c including the local variables list if any.  @xref{Choosing Modes}.
 1538: バッファのローカル変数やメジャーモードを、
 1539: ローカル変数リストがあるときにはそれによる指定も含めて、
 1540: ファイル名とファイルの内容に基づいたものにリセットしたければ、
 1541: @code{normal-mode}コマンドを使ってください。
 1542: @xref{Choosing Modes}。
 1543: 
 1544: @findex enable-local-variables
 1545: @c   The variable @code{enable-local-variables} controls whether to process
 1546: @c local variables in files, and thus gives you a chance to override them.
 1547: @c Its default value is @code{t}, which means do process local variables in
 1548: @c files.  If you set the value to @code{nil}, Emacs simply ignores local
 1549: @c variables in files.  Any other value says to query you about each file
 1550: @c that has local variables, showing you the local variable specifications
 1551: @c so you can judge.
 1552: 変数@code{enable-local-variables}は、
 1553: ファイル中のローカル変数指定を処理するか否かを制御します。
 1554: つまり、ローカル変数指定を無視するようにもできます。
 1555: デフォルトは@code{t}で、ファイル中のローカル変数指定を処理します。
 1556: 値を@code{nil}にすると、ファイル中のローカル変数指定を無視します。
 1557: これら以外の値の場合は、ファイル中にローカル変数指定があると、
 1558: その内容を表示して処理するかどうか問い合わせます。
 1559: 
 1560: @findex enable-local-eval
 1561: @c   The @code{eval} ``variable,'' and certain actual variables, create a
 1562: @c special risk; when you visit someone else's file, local variable
 1563: @c specifications for these could affect your Emacs in arbitrary ways.
 1564: @c Therefore, the option @code{enable-local-eval} controls whether Emacs
 1565: @c processes @code{eval} variables, as well variables with names that end
 1566: @c in @samp{-hook}, @samp{-hooks}, @samp{-function} or @samp{-functions},
 1567: @c and certain other variables.  The three possibilities for the option's
 1568: @c value are @code{t}, @code{nil}, and anything else, just as for
 1569: @c @code{enable-local-variables}.  The default is @code{maybe}, which is
 1570: @c neither @code{t} nor @code{nil}, so normally Emacs does ask for
 1571: @c confirmation about file settings for these variables.
 1572: 仮想的な『変数』@code{eval}といくつかの(実在する)変数に対する指定は、
 1573: ある種の危険性をもたらします。
 1574: 他人のファイルを訪問したとき、そこに書かれているローカル変数指定に
 1575: よってあなたが使っているEmacsのふるまいがどのようにでも変更できるからです。
 1576: このため、オプション@code{enable-local-eval}により、
 1577: 変数@code{eval}、さらに、@samp{-hook}、@samp{-hooks}、@samp{-function}、
 1578: @samp{-functions}という名前で終る変数、および、他のいくつかの変数に
 1579: 対するローカル変数指定を処理するかどうか制御できるようになっています。
 1580: @code{enable-local-variables}と同じように指定できる値は3種類あって、
 1581: @code{t}、@code{nil}、これら以外です。
 1582: デフォルトは@code{maybe}で、これは@code{t}でも@code{nil}でもありませんから、
 1583: Emacsはこれらのローカル変数指定があるときは確認を求めてきます。
 1584: 
 1585: @node Keyboard Macros, Key Bindings, Variables, Customization
 1586: @c @section Keyboard Macros
 1587: @section キーボードマクロ
 1588: 
 1589: @c @cindex defining keyboard macros
 1590: @c @cindex keyboard macro
 1591: @cindex キーボードマクロの定義
 1592: @cindex キーボードマクロ
 1593: @c   A @dfn{keyboard macro} is a command defined by the user to stand for
 1594: @c another sequence of keys.  For example, if you discover that you are
 1595: @c about to type @kbd{C-n C-d} forty times, you can speed your work by
 1596: @c defining a keyboard macro to do @kbd{C-n C-d} and calling it with a
 1597: @c repeat count of forty.
 1598: @dfn{キーボードマクロ}は、
 1599: ユーザーが一連のキー操作に基づいて定義したコマンドです。
 1600: たとえば、@kbd{C-n C-d}という打鍵を40回繰り返す必要があるとわかったら、
 1601: @kbd{C-n C-d}を実行するキーボードマクロを定義し、
 1602: それを40回繰り返す指定をして呼び出すと迅速に作業できます。
 1603: 
 1604: @c widecommands
 1605: @table @kbd
 1606: @item C-x (
 1607: @c Start defining a keyboard macro (@code{start-kbd-macro}).
 1608: キーボードマクロの定義を開始する
 1609: (@code{start-kbd-macro})。
 1610: @item C-x )
 1611: @c End the definition of a keyboard macro (@code{end-kbd-macro}).
 1612: キーボードマクロの定義を終了する
 1613: (@code{end-kbd-macro})。
 1614: @item C-x e
 1615: @c Execute the most recent keyboard macro (@code{call-last-kbd-macro}).
 1616: もっとも最近のキーボードマクロを実行する
 1617: (@code{call-last-kbd-macro})。
 1618: @item C-u C-x (
 1619: @c Re-execute last keyboard macro, then add more keys to its definition.
 1620: もっとも最近のキーボードマクロを再実行したうえで、
 1621: その定義にキーを追加する。
 1622: @item C-x q
 1623: @c When this point is reached during macro execution, ask for confirmation
 1624: @c (@code{kbd-macro-query}).
 1625: キーボードマクロの実行中にこの場所に到達したら、
 1626: 実行の確認を求める
 1627: (@code{kbd-macro-query})。
 1628: @item M-x name-last-kbd-macro
 1629: @c Give a command name (for the duration of the session) to the most
 1630: @c recently defined keyboard macro.
 1631: もっとも最近に定義したキーボードマクロに(現在のEmacsセッションだけで有効な)
 1632: コマンド名を与える。
 1633: @item M-x insert-kbd-macro
 1634: @c Insert in the buffer a keyboard macro's definition, as Lisp code.
 1635: キーボードマクロの定義をLispコードとしてバッファに挿入する。
 1636: @item C-x C-k
 1637: @c Edit a previously defined keyboard macro (@code{edit-kbd-macro}).
 1638: まえに定義したキーボードマクロを編集する
 1639: (@code{edit-kbd-macro})。
 1640: @item M-x apply-macro-to-region-lines
 1641: @c Run the last keyboard macro on each complete line in the region.
 1642: リージョン内の各行に対して、最後に定義したキーボードマクロを実行する。
 1643: @end table
 1644: 
 1645: @c   Keyboard macros differ from ordinary Emacs commands in that they are
 1646: @c written in the Emacs command language rather than in Lisp.  This makes it
 1647: @c easier for the novice to write them, and makes them more convenient as
 1648: @c temporary hacks.  However, the Emacs command language is not powerful
 1649: @c enough as a programming language to be useful for writing anything
 1650: @c intelligent or general.  For such things, Lisp must be used.
 1651: キーボードマクロは、それがLispではなくEmacsのコマンド言語で
 1652: 記述されているという点で、通常のEmacsコマンドとは違っています。
 1653: このため、キーボードマクロは初心者でも簡単に作れ、
 1654: 間に合わせとして定義するのにも向いています。
 1655: しかし、Emacsのコマンド言語は、
 1656: プログラム言語として知的で汎用的な動作を記述できるほど強力ではありません。
 1657: そういう場合には、Lispを使ってください。
 1658: 
 1659: @c   You define a keyboard macro while executing the commands which are the
 1660: @c definition.  Put differently, as you define a keyboard macro, the
 1661: @c definition is being executed for the first time.  This way, you can see
 1662: @c what the effects of your commands are, so that you don't have to figure
 1663: @c them out in your head.  When you are finished, the keyboard macro is
 1664: @c defined and also has been, in effect, executed once.  You can then do the
 1665: @c whole thing over again by invoking the macro.
 1666: キーボードマクロは、定義内容のコマンド列を実際に実行しながら定義できます。
 1667: いいかえれば、キーボードマクロを定義しているときに、
 1668: その定義の第1回目の実行が行われることになります。
 1669: ですから、コマンドがどのように動作するかを目で見ながら確認でき、
 1670: 頭の中だけで動作を考えるよりも楽に定義できます。
 1671: コマンド列の最後まできてキーボードマクロを定義し終ると、
 1672: 第1回目の実行も終ったことになります。
 1673: そのあとは、マクロを呼び出すことで何回でもそのコマンド列全体を実行できます。
 1674: 
 1675: @menu
 1676: * Basic Kbd Macro::     Defining and running keyboard macros.
 1677: * Save Kbd Macro::      Giving keyboard macros names; saving them in files.
 1678: * Kbd Macro Query::     Making keyboard macros do different things each time.
 1679: @end menu
 1680: 
 1681: @node Basic Kbd Macro, Save Kbd Macro, , Keyboard Macros
 1682: @c @subsection Basic Use
 1683: @subsection 基本的な使い方
 1684: 
 1685: @kindex C-x (
 1686: @kindex C-x )
 1687: @kindex C-x e
 1688: @findex start-kbd-macro
 1689: @findex end-kbd-macro
 1690: @findex call-last-kbd-macro
 1691: @c   To start defining a keyboard macro, type the @kbd{C-x (} command
 1692: @c (@code{start-kbd-macro}).  From then on, your keys continue to be
 1693: @c executed, but also become part of the definition of the macro.  @samp{Def}
 1694: @c appears in the mode line to remind you of what is going on.  When you are
 1695: @c finished, the @kbd{C-x )} command (@code{end-kbd-macro}) terminates the
 1696: @c definition (without becoming part of it!).  For example,
 1697: キーボードマクロの定義を開始するには、@kbd{C-x (}コマンド
 1698: (@code{start-kbd-macro})を打ってください。
 1699: それ以降打鍵するものは通常どおり実行されますが、
 1700: それと同時にキーボードマクロの定義として取り込まれます。
 1701: モード行にもそのことを表す@samp{Def}という表示が現れます。
 1702: 定義の終りまできたら、@kbd{C-x )}(@code{end-kbd-macro})を打ち込むと
 1703: キーボードマクロの定義が完了します
 1704: (@kbd{C-x )}はマクロの内容には含まれません!)。
 1705: たとえば、
 1706: 
 1707: @example
 1708: C-x ( M-f foo C-x )
 1709: @end example
 1710: 
 1711: @noindent
 1712: @c defines a macro to move forward a word and then insert @samp{foo}.
 1713: のように打鍵すると、
 1714: 1単語分ポイントを前進させ文字列@samp{foo}をバッファに挿入する、
 1715: キーボードマクロを定義できます。
 1716: 
 1717: @c   The macro thus defined can be invoked again with the @kbd{C-x e}
 1718: @c command (@code{call-last-kbd-macro}), which may be given a repeat count
 1719: @c as a numeric argument to execute the macro many times.  @kbd{C-x )} can
 1720: @c also be given a repeat count as an argument, in which case it repeats
 1721: @c the macro that many times right after defining it, but defining the
 1722: @c macro counts as the first repetition (since it is executed as you define
 1723: @c it).  Therefore, giving @kbd{C-x )} an argument of 4 executes the macro
 1724: @c immediately 3 additional times.  An argument of zero to @kbd{C-x e} or
 1725: @c @kbd{C-x )} means repeat the macro indefinitely (until it gets an error
 1726: @c or you type @kbd{C-g} or, on MS-DOS, @kbd{C-@key{BREAK}}).
 1727: 定義し終えたキーボードマクロは、
 1728: コマンド@kbd{C-x e}(@code{call-last-kbd-macro})で再実行できますし、
 1729: 数引数として反復回数を指定することで多数回実行することもできます。
 1730: @kbd{C-x )}にも引数として反復回数を指定でき、
 1731: その場合は定義完了とともにただちに指定した回数だけ
 1732: キーボードマクロを実行しますが、
 1733: 定義しているとき(実行しているので)を1回目の実行として数えます。
 1734: ですから、@kbd{C-u 4 C-x )}と打つと、キーボードマクロをただちに3回実行します。
 1735: @kbd{C-x e}や@kbd{C-x )}に反復回数0を指定すると、
 1736: キーボードマクロを無限回、つまり、エラーが発生するか、
 1737: @kbd{C-g}(MS-DOSでは@kbd{C-@key{BREAK}})が打鍵されるまで、
 1738: 繰り返し実行します。
 1739: 
 1740: @c   If you wish to repeat an operation at regularly spaced places in the
 1741: @c text, define a macro and include as part of the macro the commands to move
 1742: @c to the next place you want to use it.  For example, if you want to change
 1743: @c each line, you should position point at the start of a line, and define a
 1744: @c macro to change that line and leave point at the start of the next line.
 1745: @c Then repeating the macro will operate on successive lines.
 1746: テキスト上の規則的にとびとびの位置に対して操作を行いたい場合には、
 1747: キーボードマクロを定義するときに、つぎに適用したい位置までポイントを
 1748: 移動するコマンドを含めておきます。
 1749: たとえば、各行について変更を行いたければ、
 1750: ポイントを行頭に置いてからキーボードマクロを定義し始め、
 1751: 最後にポイントをつぎの行の行頭に置いたところで定義を終えます。
 1752: キーボードマクロを繰り返し実行すると、
 1753: 次々と連続する行に対して操作を実行できます。
 1754: 
 1755: @c   After you have terminated the definition of a keyboard macro, you can add
 1756: @c to the end of its definition by typing @kbd{C-u C-x (}.  This is equivalent
 1757: @c to plain @kbd{C-x (} followed by retyping the whole definition so far.  As
 1758: @c a consequence it re-executes the macro as previously defined.
 1759: キーボードマクロの定義を完了してしまったあとでも、
 1760: @kbd{C-u C-x (}を打ち込めば、その定義の末尾に内容を追加できます。
 1761: このコマンドは、@kbd{C-x (}に続いて現在のキーボードマクロの
 1762: 定義内容全体を打鍵したのと同じ効果を持ちます。
 1763: その結果、定義されたとおりにマクロを再実行します。
 1764: 
 1765: @c   You can use function keys in a keyboard macro, just like keyboard
 1766: @c keys.  You can even use mouse events, but be careful about that: when
 1767: @c the macro replays the mouse event, it uses the original mouse position
 1768: @c of that event, the position that the mouse had while you were defining
 1769: @c the macro.  The effect of this may be hard to predict.  (Using the
 1770: @c current mouse position would be even less predictable.)
 1771: キーボードマクロの中で、通常のキーと同様にファンクションキーを
 1772: 使うこともできます。
 1773: マウスイベントを使うことさえできますが、その場合は注意してください。
 1774: キーボードマクロはマウスイベントを再現しますが、
 1775: マウス位置としては最初にキーボードマクロを定義したときの位置が
 1776: そのまま使われます。
 1777: その結果は予想し難いものになります。
 1778: (現在のマウス位置を使っても、結果はさらに予想し難いものになる。)
 1779: 
 1780: @c   One thing that doesn't always work well in a keyboard macro is the
 1781: @c command @kbd{C-M-c} (@code{exit-recursive-edit}).  When this command
 1782: @c exits a recursive edit that started within the macro, it works as you'd
 1783: @c expect.  But if it exits a recursive edit that started before you
 1784: @c invoked the keyboard macro, it also necessarily exits the keyboard macro
 1785: @c as part of the process.
 1786: キーボードマクロの中で必ずうまくいくとは限らないことの1つに、
 1787: @kbd{C-M-c}(@code{exit-recursive-edit})コマンドがあります。
 1788: このコマンドがマクロの中で開始させた再帰編集を終らせる場合には、
 1789: 期待どおりに動くでしょう。
 1790: しかし、このコマンドがキーボードマクロを起動するまえに入っていた再帰編集を
 1791: 終らせるとすると、
 1792: その終了処理の過程でキーボードマクロの実行も終らせてしまいます。
 1793: 
 1794: @findex edit-kbd-macro
 1795: @kindex C-x C-k
 1796: @c   You can edit a keyboard macro already defined by typing @kbd{C-x C-k}
 1797: @c (@code{edit-kbd-macro}).  Follow that with the keyboard input that you
 1798: @c would use to invoke the macro---@kbd{C-x e} or @kbd{M-x @var{name}} or
 1799: @c some other key sequence.  This formats the macro definition in a buffer
 1800: @c and enters a specialized major mode for editing it.  Type @kbd{C-h m}
 1801: @c once in that buffer to display details of how to edit the macro.  When
 1802: @c you are finished editing, type @kbd{C-c C-c}.
 1803: 定義済みのキーボードマクロを編集するには、
 1804: @kbd{C-x C-k}(@code{edit-kbd-macro})と打ちます。
 1805: このコマンドに続けてマクロを起動する打鍵、つまり、
 1806: @kbd{C-x e}や@kbd{M-x @var{name}}などのキー列を入れます。
 1807: すると、キー列に対応するキーボードマクロの内容が整形されて
 1808: 特別な編集用メジャーモードのバッファに入ります。
 1809: そのバッファ中で@kbd{C-h m}と打つと編集方法が表示されます。
 1810: 編集し終えたら@kbd{C-c C-c}と打ちます。
 1811: 
 1812: @findex apply-macro-to-region-lines
 1813: @c   The command @kbd{M-x apply-macro-to-region-lines} repeats the last
 1814: @c defined keyboard macro on each complete line within the current region.
 1815: @c It does this line by line, by moving point to the beginning of the line
 1816: @c and then executing the macro.
 1817: コマンド@kbd{M-x apply-macro-to-region-lines}は最後に定義された
 1818: キーボードマクロを現在のリージョンの各行に対して実行します。
 1819: つまり、各行について、行頭にポイントを置いてからキーボードマクロを実行します。
 1820: 
 1821: @node Save Kbd Macro, Kbd Macro Query, Basic Kbd Macro, Keyboard Macros
 1822: @c @subsection Naming and Saving Keyboard Macros
 1823: @subsection キーボードマクロの命名と保存
 1824: 
 1825: @c @cindex saving keyboard macros
 1826: @cindex キーボードマクロの保存
 1827: @findex name-last-kbd-macro
 1828: @c   If you wish to save a keyboard macro for longer than until you define the
 1829: @c next one, you must give it a name using @kbd{M-x name-last-kbd-macro}.
 1830: @c This reads a name as an argument using the minibuffer and defines that name
 1831: @c to execute the macro.  The macro name is a Lisp symbol, and defining it in
 1832: @c this way makes it a valid command name for calling with @kbd{M-x} or for
 1833: @c binding a key to with @code{global-set-key} (@pxref{Keymaps}).  If you
 1834: @c specify a name that has a prior definition other than another keyboard
 1835: @c macro, an error message is printed and nothing is changed.
 1836: 新たにつぎのキーボードマクロを定義したあとでも
 1837: 現在のキーボードマクロを使いたいなら、
 1838: @kbd{M-x name-last-kbd-macro}でキーボードマクロに名前を
 1839: 付けておく必要があります。
 1840: このコマンドは、ミニバッファで名前を読み取り、
 1841: その名前でキーボードマクロを実行できるように定義します。
 1842: マクロ名はLispシンボルであり、このように定義されているので、
 1843: @kbd{M-x}で呼び出したり@code{global-set-key}
 1844: (@pxref{Keymaps})でキーに対応付けたりできる有効なコマンド名になります。
 1845: その名前にキーボードマクロ以外のものがすでに定義されていると、
 1846: エラーメッセージが表示され何の変更も起こりません。
 1847: 
 1848: @findex insert-kbd-macro
 1849: @c   Once a macro has a command name, you can save its definition in a file.
 1850: @c Then it can be used in another editing session.  First, visit the file
 1851: @c you want to save the definition in.  Then use this command:
 1852: キーボードマクロにコマンド名を付けると、その定義をファイルに保存できます。
 1853: そうすると、別の編集セッションで使えるようになります。
 1854: まず、定義を保存したいファイルを訪問してから、
 1855: つぎのコマンドを使ってください。
 1856: 
 1857: @example
 1858: M-x insert-kbd-macro @key{RET} @var{macroname} @key{RET}
 1859: @end example
 1860: 
 1861: @noindent
 1862: @c This inserts some Lisp code that, when executed later, will define the
 1863: @c same macro with the same definition it has now.  (You need not
 1864: @c understand Lisp code to do this, because @code{insert-kbd-macro} writes
 1865: @c the Lisp code for you.)  Then save the file.  You can load the file
 1866: @c later with @code{load-file} (@pxref{Lisp Libraries}).  If the file you
 1867: @c save in is your init file @file{~/.emacs} (@pxref{Init File}) then the
 1868: @c macro will be defined each time you run Emacs.
 1869: このコマンドは、実行するとそのキーボードマクロと
 1870: 同じ動作を行うLispコードをバッファに挿入します。
 1871: (@code{insert-kbd-macro}がLispコードの生成を代行するので、
 1872: Lispコードを理解する必要はない。)
 1873: そうしたら、このファイルを保存します。
 1874: @code{load-file}(@pxref{Lisp Libraries})でファイルをロードできます。
 1875: 保存するファイルとして@file{~/.emacs}(@pxref{Init File})を使えば、
 1876: Emacsを起動するとつねにそのマクロが定義されます。
 1877: 
 1878: @c   If you give @code{insert-kbd-macro} a numeric argument, it makes
 1879: @c additional Lisp code to record the keys (if any) that you have bound to the
 1880: @c keyboard macro, so that the macro will be reassigned the same keys when you
 1881: @c load the file.
 1882: @code{insert-kbd-macro}に数引数を指定すると、
 1883: さらに(もしあれば)キーボードマクロに割り当てたキーを
 1884: 記録するLispコードが追加されるので、
 1885: ファイルをロードしたときに同じキーがマクロに割り当てられます。
 1886: 
 1887: @node Kbd Macro Query,  , Save Kbd Macro, Keyboard Macros
 1888: @c @subsection Executing Macros with Variations
 1889: @subsection 変化のあるマクロの実行
 1890: 
 1891: @kindex C-x q
 1892: @findex kbd-macro-query
 1893: @c   Using @kbd{C-x q} (@code{kbd-macro-query}), you can get an effect
 1894: @c similar to that of @code{query-replace}, where the macro asks you each
 1895: @c time around whether to make a change.  While defining the macro,
 1896: @c type @kbd{C-x q} at the point where you want the query to occur.  During
 1897: @c macro definition, the @kbd{C-x q} does nothing, but when you run the
 1898: @c macro later, @kbd{C-x q} asks you interactively whether to continue.
 1899: @kbd{C-x q}(@code{kbd-macro-query})を使うと、
 1900: @code{query-replace}と同様に変更するかどうか尋ねてくる
 1901: キーボードマクロを作れます。
 1902: キーボードマクロを定義しているときに、問い合わせが起きてほしい箇所で
 1903: @kbd{C-x q}を打ちます。
 1904: マクロの定義中は@kbd{C-x q}は何の動作もしませんが、
 1905: あとでマクロを実行させたときには@kbd{C-x q}の箇所で処理を
 1906: 続けるかどうか尋ねてくるようになります。
 1907: 
 1908: @c   The valid responses when @kbd{C-x q} asks are @key{SPC} (or @kbd{y}),
 1909: @c @key{DEL} (or @kbd{n}), @key{RET} (or @kbd{q}), @kbd{C-l} and @kbd{C-r}.
 1910: @c The answers are the same as in @code{query-replace}, though not all of
 1911: @c the @code{query-replace} options are meaningful.
 1912: @kbd{C-x q}の問い合わせに対する有効な応答は、@key{SPC}(または@kbd{y})、
 1913: @key{DEL}(または@kbd{n})、@key{RET}(または@kbd{q})、@kbd{C-l}、
 1914: @kbd{C-r}です。
 1915: これらの意味は@code{query-replace}と同じですが、
 1916: @code{query-replace}のすべての応答が意味を持つとは限りません。
 1917: 
 1918: @c   These responses include @key{SPC} to continue, and @key{DEL} to skip
 1919: @c the remainder of this repetition of the macro and start right away with
 1920: @c the next repetition.  @key{RET} means to skip the remainder of this
 1921: @c repetition and cancel further repetitions.  @kbd{C-l} redraws the screen
 1922: @c and asks you again for a character to say what to do.
 1923: @key{SPC}は続行、@key{DEL}はこの回の反復の残りを飛ばしてただちにつぎの
 1924: 反復に進むという意味になります。
 1925: @key{RET}ではこの回の反復の残りも以後の反復もすべて取り消します。
 1926: @kbd{C-l}は画面を再描画し、再度どうするかを問い合わせてきます。
 1927: 
 1928: @c   @kbd{C-r} enters a recursive editing level, in which you can perform
 1929: @c editing which is not part of the macro.  When you exit the recursive
 1930: @c edit using @kbd{C-M-c}, you are asked again how to continue with the
 1931: @c keyboard macro.  If you type a @key{SPC} at this time, the rest of the
 1932: @c macro definition is executed.  It is up to you to leave point and the
 1933: @c text in a state such that the rest of the macro will do what you
 1934: @c want.@refill
 1935: @kbd{C-r}で再帰編集レベルに入るので、そこでキーボードマクロにはない
 1936: 編集を行えます。
 1937: @kbd{C-M-c}で再帰編集から抜けると、再度どうするかを聞いてきます。
 1938: ここで@key{SPC}を打つと、キーボードマクロの残りの部分が実行されます。
 1939: キーボードマクロの残りの部分が望みどおりの動作をする状態に
 1940: ポイントやテキストを保っておくのは、ユーザーの責任です。
 1941: 
 1942: @c   @kbd{C-u C-x q}, which is @kbd{C-x q} with a numeric argument,
 1943: @c performs a completely different function.  It enters a recursive edit
 1944: @c reading input from the keyboard, both when you type it during the
 1945: @c definition of the macro, and when it is executed from the macro.  During
 1946: @c definition, the editing you do inside the recursive edit does not become
 1947: @c part of the macro.  During macro execution, the recursive edit gives you
 1948: @c a chance to do some particularized editing on each repetition.
 1949: @c @xref{Recursive Edit}.
 1950: @kbd{C-u C-x q}、つまり、数引数を指定した@kbd{C-x q}は、
 1951: まったく違った動作をします。
 1952: キーボードマクロの定義中でも実行中でも、
 1953: キーボードから入力を受け付ける再帰編集に入ります。
 1954: 定義中の場合、再帰編集の中で行った操作はマクロの一部にはなりません。
 1955: 実行中の場合、再帰編集の中で各反復ごとに個別の編集を行う機会が得られます。
 1956: @xref{Recursive Edit}。
 1957: 
 1958: @node Key Bindings, Keyboard Translations, Keyboard Macros, Customization
 1959: @c @section Customizing Key Bindings
 1960: @section キーバインディングのカスタマイズ
 1961: @c @cindex key bindings
 1962: @cindex キーバインディング
 1963: 
 1964: @c   This section describes @dfn{key bindings}, which map keys to commands,
 1965: @c and @dfn{keymaps}, which record key bindings.  It also explains how
 1966: @c to customize key bindings.
 1967: 本節では、コマンドをキーに対応付ける@dfn{キーバインディング}と、
 1968: キーバインディングを記録する@dfn{キーマップ}について説明します。
 1969: また、キーバインディングをカスタマイズする方法についても説明します。
 1970: 
 1971: @c   Recall that a command is a Lisp function whose definition provides for
 1972: @c interactive use.  Like every Lisp function, a command has a function
 1973: @c name which usually consists of lower-case letters and hyphens.
 1974: コマンドとは、対話利用向けに定義されたLisp関数で
 1975: あることを思い出してください。
 1976: コマンドには、他のLisp関数と同様、通常、英小文字とハイフンから成る
 1977: 関数名前が付いています。
 1978: 
 1979: @menu
 1980: * Keymaps::             Generalities.  The global keymap.
 1981: * Prefix Keymaps::      Keymaps for prefix keys.
 1982: * Local Keymaps::       Major and minor modes have their own keymaps.
 1983: * Minibuffer Maps::     The minibuffer uses its own local keymaps.
 1984: * Rebinding::           How to redefine one key's meaning conveniently.
 1985: * Init Rebinding::      Rebinding keys with your init file, @file{.emacs}.
 1986: * Function Keys::       Rebinding terminal function keys.
 1987: * Named ASCII Chars::   Distinguishing @key{TAB} from @kbd{C-i}, and so on.
 1988: * Non-ASCII Rebinding:: Rebinding non-ASCII characters such as Latin-1.
 1989: * Mouse Buttons::       Rebinding mouse buttons in Emacs.
 1990: * Disabling::           Disabling a command means confirmation is required
 1991:                           before it can be executed.  This is done to protect
 1992:                           beginners from surprises.
 1993: @end menu
 1994: 
 1995: @node Keymaps, Prefix Keymaps, , Key Bindings
 1996: @c @subsection Keymaps
 1997: @subsection キーマップ
 1998: @c @cindex keymap
 1999: @cindex キーマップ
 2000: 
 2001: @c   The bindings between key sequences and command functions are recorded
 2002: @c in data structures called @dfn{keymaps}.  Emacs has many of these, each
 2003: @c used on particular occasions.
 2004: キー列とコマンド関数との対応は@dfn{キーマップ}と呼ばれる
 2005: データ構造に保持されています。
 2006: Emacsには数多くのキーマップがあり、それぞれが特定の場面で使われます。
 2007: 
 2008: @c   Recall that a @dfn{key sequence} (@dfn{key}, for short) is a sequence
 2009: @c of @dfn{input events} that have a meaning as a unit.  Input events
 2010: @c include characters, function keys and mouse buttons---all the inputs
 2011: @c that you can send to the computer with your terminal.  A key sequence
 2012: @c gets its meaning from its @dfn{binding}, which says what command it
 2013: @c runs.  The function of keymaps is to record these bindings.
 2014: @dfn{キー列}(または単に@dfn{キー})とは、
 2015: ひとまとまりの意味を持つ@dfn{入力イベント}の並びをいいます。
 2016: 入力イベントは、文字、ファンクションキー、マウスボタン、
 2017: つまり、端末から計算機に送ることができるすべての入力から成ります。
 2018: キー列の意味付けは、どのコマンドを実行するかを表す
 2019: @dfn{バインディング}によって決まります。
 2020: キーマップの役割は、これらのバインディングを保持することです。
 2021: 
 2022: @c @cindex global keymap
 2023: @cindex グローバルキーマップ
 2024: @c   The @dfn{global} keymap is the most important keymap because it is
 2025: @c always in effect.  The global keymap defines keys for Fundamental mode;
 2026: @c most of these definitions are common to most or all major modes.  Each
 2027: @c major or minor mode can have its own keymap which overrides the global
 2028: @c definitions of some keys.
 2029: @dfn{グローバル}キーマップはもっとも重要なキーマップですが、
 2030: それはグローバルキーマップがつねに有効だからです。
 2031: グローバルキーマップは基本(fundamental)モードのキーを定義します。
 2032: つまり、そこに含まれる定義の大部分は、ほとんどまたはすべての
 2033: メジャーモードに共通のものです。
 2034: 各メジャー/マイナモードは、グローバルキーマップの定義の一部を
 2035: 置き換えるような独自のキーマップを持つことができます。
 2036: 
 2037: @c   For example, a self-inserting character such as @kbd{g} is
 2038: @c self-inserting because the global keymap binds it to the command
 2039: @c @code{self-insert-command}.  The standard Emacs editing characters such
 2040: @c as @kbd{C-a} also get their standard meanings from the global keymap.
 2041: @c Commands to rebind keys, such as @kbd{M-x global-set-key}, actually work
 2042: @c by storing the new binding in the proper place in the global map.
 2043: @c @xref{Rebinding}.
 2044: たとえば、@kbd{g}のような自己挿入文字を打つとその文字がバッファに
 2045: 挿入されるのは、グローバルキーマップでこれらのキーが
 2046: @code{self-insert-command}に対応付けられているからです。
 2047: また、@kbd{C-a}のような標準の編集コマンドも、
 2048: その意味付けはグローバルキーマップに書かれています。
 2049: @kbd{M-x global-set-key}のようなバインディングを変更するコマンド群は、
 2050: グローバルキーマップの適切な箇所に新しいバインディングを書き込みます。
 2051: 
 2052: @c    Meta characters work differently; Emacs translates each Meta
 2053: @c character into a pair of characters starting with @key{ESC}.  When you
 2054: @c type the character @kbd{M-a} in a key sequence, Emacs replaces it with
 2055: @c @kbd{@key{ESC} a}.  A meta key comes in as a single input event, but
 2056: @c becomes two events for purposes of key bindings.  The reason for this is
 2057: @c historical, and we might change it someday.
 2058: メタ文字はやや違った動作になります。
 2059: Emacsでは、メタ文字は@key{ESC}で始まる文字列に変換されます。
 2060: ですから、@kbd{M-a}という入力はつねにEmacsの中では
 2061: @kbd{@key{ESC} a}に置き換えられて処理されます。
 2062: つまり、メタ文字は単一の入力イベントですが、
 2063: キーバインディングの観点では2つのイベントとして扱われます。
 2064: こうなっている理由は歴史的なもので、将来は変わる可能性もあります。
 2065: 
 2066: @c @cindex function key
 2067: @cindex ファンクションキー
 2068: @c   Most modern keyboards have function keys as well as character keys.
 2069: @c Function keys send input events just as character keys do, and keymaps
 2070: @c can have bindings for them.
 2071: 最近のほとんどのキーボードには、
 2072: 文字キーの他にファンクションキーがあります。
 2073: ファンクションキーは文字キーと同様に入力イベントを送出し、
 2074: キーマップはそれに対応するバインディングを保持することができます。
 2075: 
 2076: @c   On many terminals, typing a function key actually sends the computer a
 2077: @c sequence of characters; the precise details of the sequence depends on
 2078: @c which function key and on the model of terminal you are using.  (Often
 2079: @c the sequence starts with @kbd{@key{ESC} [}.)  If Emacs understands your
 2080: @c terminal type properly, it recognizes the character sequences forming
 2081: @c function keys wherever they occur in a key sequence (not just at the
 2082: @c beginning).  Thus, for most purposes, you can pretend the function keys
 2083: @c reach Emacs directly and ignore their encoding as character sequences.
 2084: 多くの端末では、ファンクションキーを打つとコンピュータには
 2085: 一連の文字列が送られます。
 2086: 具体的にどのファンクションキーが
 2087: どんな文字列を送るかは端末によってまちまちです。
 2088: (多くの場合、文字列は@kbd{@key{ESC} [}で始まる。)
 2089: Emacsが使用中の端末種別を正しく認識していれば、
 2090: キー列(の先頭でだけでなく)に現れるファンクションキーに対応した
 2091: 文字列を正しく判別できます。
 2092: ですから、多くの場合、ファンクションキーの打鍵も
 2093: 1つの入力イベントとして直接Emacsに送られているとみなして、
 2094: 文字列としての表現形式は無視してかまいません。
 2095: 
 2096: @c @cindex mouse
 2097: @cindex マウス
 2098: @c   Mouse buttons also produce input events.  These events come with other
 2099: @c data---the window and position where you pressed or released the button,
 2100: @c and a time stamp.  But only the choice of button matters for key
 2101: @c bindings; the other data matters only if a command looks at it.
 2102: @c (Commands designed for mouse invocation usually do look at the other
 2103: @c data.)
 2104: マウスボタンも入力イベントを発生させます。
 2105: これらのイベントには、追加データ、つまり、
 2106: ボタンを押したり放したりしたときのウィンドウとその中での位置、時刻
 2107: が付属しています。
 2108: ただし、キーバインディングに関しては、
 2109: どのボタンが使われたかだけが問題となります。
 2110: 残りの情報は、コマンドがこれらの情報を参照する場合だけ意味を持ちます。
 2111: (通常、マウスから起動できるコマンドは、これらの情報を参照する。)
 2112: 
 2113: @c   A keymap records definitions for single events.  Interpreting a key
 2114: @c sequence of multiple events involves a chain of keymaps.  The first
 2115: @c keymap gives a definition for the first event; this definition is
 2116: @c another keymap, which is used to look up the second event in the
 2117: @c sequence, and so on.
 2118: キーマップは1つのイベントに対する定義のみを保持します。
 2119: 複数キーの列から成る複数のイベントの解釈には、
 2120: キーマップの連鎖が使われます。
 2121: 最初のキーマップが最初のイベントの定義を保持し、
 2122: その定義がつぎのキーマップになっていて、
 2123: 2番目のイベントの定義を保持し、というようになっています。
 2124: 
 2125: @c   Key sequences can mix function keys and characters.  For example,
 2126: @c @kbd{C-x @key{SELECT}} is meaningful.  If you make @key{SELECT} a prefix
 2127: @c key, then @kbd{@key{SELECT} C-n} makes sense.  You can even mix mouse
 2128: @c events with keyboard events, but we recommend against it, because such
 2129: @c sequences are inconvenient to type in.
 2130: キー列にはファンクションキーと文字キーとが混ざっていてもかまいません。
 2131: たとえば、@kbd{C-x @key{SELECT}}というのも許されます。
 2132: @key{SELECT}をプレフィックスキーとして定義しておけば、
 2133: @kbd{@key{SELECT} C-n}というのも許されます。
 2134: マウスイベントとキーボードイベントを混ぜることさえ可能ですが、
 2135: そうすると打ち込むのが面倒ですからお勧めしません。
 2136: 
 2137: @c   As a user, you can redefine any key; but it might be best to stick to
 2138: @c key sequences that consist of @kbd{C-c} followed by a letter.  These
 2139: @c keys are ``reserved for users,'' so they won't conflict with any
 2140: @c properly designed Emacs extension.  The function keys @key{F5} through
 2141: @c @key{F9} are also reserved for users.  If you redefine some other key,
 2142: @c your definition may be overridden by certain extensions or major modes
 2143: @c which redefine the same key.
 2144: ユーザーはどんなキー列でも再定義して利用できますが、
 2145: @kbd{C-c}に続けて1文字というキー列だけを使うのが最善です。
 2146: このキー列は『ユーザー定義のために予約』されていて、
 2147: 正しく設計されたEmacsの各種拡張とは衝突しないようになっているからです。
 2148: @key{F5}から@key{F9}までのファンクションキーも
 2149: ユーザー定義のために予約してあります。
 2150: これ以外のキー列を再定義すると、
 2151: 同じキーを再定義する拡張やメジャーモードによって
 2152: あなたの定義が上書きされてしまう可能性があります。
 2153: 
 2154: @node Prefix Keymaps, Local Keymaps, Keymaps, Key Bindings
 2155: @c @subsection Prefix Keymaps
 2156: @subsection プレフィックスキーマップ
 2157: 
 2158: @c   A prefix key such as @kbd{C-x} or @key{ESC} has its own keymap,
 2159: @c which holds the definition for the event that immediately follows
 2160: @c that prefix.
 2161: @kbd{C-x}や@key{ESC}のようなプレフィックスキーは
 2162: それぞれ専用のキーマップを持っていて、
 2163: そこにはそのプレフィックスキーに続くイベントの定義が保持されています。
 2164: 
 2165: @c   The definition of a prefix key is usually the keymap to use for
 2166: @c looking up the following event.  The definition can also be a Lisp
 2167: @c symbol whose function definition is the following keymap; the effect is
 2168: @c the same, but it provides a command name for the prefix key that can be
 2169: @c used as a description of what the prefix key is for.  Thus, the binding
 2170: @c of @kbd{C-x} is the symbol @code{Ctl-X-Prefix}, whose function
 2171: @c definition is the keymap for @kbd{C-x} commands.  The definitions of
 2172: @c @kbd{C-c}, @kbd{C-x}, @kbd{C-h} and @key{ESC} as prefix keys appear in
 2173: @c the global map, so these prefix keys are always available.
 2174: プレフィックスキーの定義は、通常、それに続くイベントの定義を検索するための
 2175: キーマップです。
 2176: あるいは、プレフィックスキーの定義がLispシンボルであって、
 2177: その関数の定義がキーマップというのもあります。
 2178: どちらでも効果は同じですが、
 2179: 後者では、プレフィックスキーにコマンド名を与えてその用途を示すことができます。
 2180: このため、@kbd{C-x}にバインドされているのは
 2181: シンボル@code{Ctl-X-Prefix}であり、
 2182: その関数定義は@kbd{C-x}コマンド群に対応するキーマップです。
 2183: @kbd{C-c}、@kbd{C-x}、@kbd{C-h}、@key{ESC}は
 2184: グローバルマップでプレフィックスキーとして定義されていますから、
 2185: これらはつねにプレフィックスキーとして使用できます。
 2186: 
 2187: @c   Aside from ordinary prefix keys, there is a fictitious ``prefix key''
 2188: @c which represents the menu bar; see @ref{Menu Bar,,,elisp, The Emacs Lisp
 2189: @c Reference Manual}, for special information about menu bar key bindings.
 2190: @c Mouse button events that invoke pop-up menus are also prefix keys; see
 2191: @c @ref{Menu Keymaps,,,elisp, The Emacs Lisp Reference Manual}, for more
 2192: @c details.
 2193: 通常のプレフィックスキーに加えて、
 2194: メニューバーを表す『仮想的なプレフィックスキー』があります。
 2195: メニューバーのキーバインディングに関する特別な点については
 2196: @ref{Menu Bar,, メニューバー, elisp,
 2197: Emacs Lisp リファレンスマニュアル}を参照してください。
 2198: ポップアップメニューを表示させるマウスボタンイベントもまた、
 2199: プレフィックスキーです。
 2200: こちらの詳細については
 2201: @ref{Menu Keymaps,, メニューキーマップ, elisp,
 2202: Emacs Lisp リファレンスマニュアル}を参照してください。
 2203: 
 2204: @c   Some prefix keymaps are stored in variables with names:
 2205: 決まった変数に格納されているプレフィックスキーマップもあります。
 2206: 
 2207: @itemize @bullet
 2208: @item
 2209: @vindex ctl-x-map
 2210: @c @code{ctl-x-map} is the variable name for the map used for characters that
 2211: @c follow @kbd{C-x}.
 2212: @code{ctl-x-map}は@kbd{C-x}に続くキーを探すためのマップを納めた変数名。
 2213: @item
 2214: @vindex help-map
 2215: @c @code{help-map} is for characters that follow @kbd{C-h}.
 2216: @code{help-map}は@kbd{C-h}に続くキーを探すためのマップを納めた変数名。
 2217: @item
 2218: @vindex esc-map
 2219: @c @code{esc-map} is for characters that follow @key{ESC}.  Thus, all Meta
 2220: @c characters are actually defined by this map.
 2221: @code{esc-map}は@key{ESC}に続くキーを探すためのマップを納めた変数名。
 2222: つまり、すべてのメタ文字は実際にはこのマップで定義されている。
 2223: @item
 2224: @vindex ctl-x-4-map
 2225: @c @code{ctl-x-4-map} is for characters that follow @kbd{C-x 4}.
 2226: @code{ctl-x-4-map}は@kbd{C-x 4}に続くキーを探すためのマップを納めた変数名。
 2227: @item
 2228: @vindex mode-specific-map
 2229: @c @code{mode-specific-map} is for characters that follow @kbd{C-c}.
 2230: @code{mode-specific-map}は@kbd{C-c}に続くキーを探すためのマップを納めた変数名。
 2231: @end itemize
 2232: 
 2233: @node Local Keymaps, Minibuffer Maps, Prefix Keymaps, Key Bindings
 2234: @c @subsection Local Keymaps
 2235: @subsection ローカルキーマップ
 2236: 
 2237: @c @cindex local keymap
 2238: @cindex ローカルキーマップ
 2239: @c   So far we have explained the ins and outs of the global map.  Major
 2240: @c modes customize Emacs by providing their own key bindings in @dfn{local
 2241: @c keymaps}.  For example, C mode overrides @key{TAB} to make it indent the
 2242: @c current line for C code.  Portions of text in the buffer can specify
 2243: @c their own keymaps to substitute for the keymap of the buffer's major
 2244: @c mode.
 2245: これまではグローバルキーマップの諸側面について説明しました。
 2246: メジャーモード固有のキーバインディングを
 2247: @dfn{ローカルキーマップ}に定義することで、
 2248: 各メジャーモードはEmacsの動作を変更します。
 2249: たとえば、Cモードでは、
 2250: @key{TAB}をCのコードの現在行を字下げする機能に差し替えます。
 2251: バッファ内の一部のテキストで、
 2252: そのバッファのメジャーモードのかわりとなる固有のキーマップを
 2253: 指定することもできます。
 2254: 
 2255: @c @cindex minor mode keymap
 2256: @cindex マイナモードキーマップ
 2257: @c   Minor modes can also have local keymaps.  Whenever a minor mode is
 2258: @c in effect, the definitions in its keymap override both the major
 2259: @c mode's local keymap and the global keymap.
 2260: マイナモードもローカルキーマップを持てます。
 2261: その場合、マイナモードが生きているときには、
 2262: そのキーマップがメジャーモードのローカルキーマップ
 2263: やグローバルキーマップに優先します。
 2264: 
 2265: @vindex c-mode-map
 2266: @vindex lisp-mode-map
 2267: @c   The local keymaps for Lisp mode and several other major modes always
 2268: @c exist even when not in use.  These are kept in variables named
 2269: @c @code{lisp-mode-map} and so on.  For major modes less often used, the
 2270: @c local keymap is normally constructed only when the mode is used for the
 2271: @c first time in a session.  This is to save space.  If you wish to change
 2272: @c one of these keymaps, you must use the major mode's @dfn{mode
 2273: @c hook}---see below.
 2274: Lispモードおよびその他のいくつかのメジャーモードの
 2275: ローカルキーマップは、そのモードを使っていないときでもつねに存在します。
 2276: これらのキーマップは、@code{lisp-mode-map}などの変数に格納されています。
 2277: さほど頻繁に使われないメジャーモードの場合は、
 2278: そのモードがセッションの中で初めて起動されたときに
 2279: ローカルキーマップが作られます。
 2280: これは、メモリを節約するためです。
 2281: このようなモードのキーマップを変更したい場合には、
 2282: 当該メジャーモードの@dfn{モードフック}を使う必要があります(以下を参照)。
 2283: 
 2284: @c   All minor mode keymaps are created in advance.  There is no way to
 2285: @c defer their creation until the first time the minor mode is enabled.
 2286: すべてのマイナモードのキーマップは、あらかじめ作られています。
 2287: マイナモードのキーマップ作成を
 2288: そのマイナモードが最初に起動されるまで遅延させる方法はありません。
 2289: 
 2290: @c   A local keymap can locally redefine a key as a prefix key by defining
 2291: @c it as a prefix keymap.  If the key is also defined globally as a prefix,
 2292: @c then its local and global definitions (both keymaps) effectively
 2293: @c combine: both of them are used to look up the event that follows the
 2294: @c prefix key.  Thus, if the mode's local keymap defines @kbd{C-c} as
 2295: @c another keymap, and that keymap defines @kbd{C-z} as a command, this
 2296: @c provides a local meaning for @kbd{C-c C-z}.  This does not affect other
 2297: @c sequences that start with @kbd{C-c}; if those sequences don't have their
 2298: @c own local bindings, their global bindings remain in effect.
 2299: ローカルキーマップでは、その中のあるキーの定義をプレフィックスキーマップと
 2300: することで、そのキーをローカルなプレフィックスキーとして再定義できます。
 2301: そのキーがグローバルにもプレフィックスキーであると定義されているなら、
 2302: ローカルキーマップとグローバルキーマップの内容は実質的に統合され、
 2303: プレフィックスキーに続くイベントは両方のキーマップで検索されます。
 2304: したがって、あるモードのローカルキーマップが@kbd{C-c}を
 2305: 別のキーマップとして定義し、
 2306: そのキーマップでは@kbd{C-z}をコマンドとして定義すると、
 2307: これらによって@kbd{C-c C-z}のローカルな意味が与えられます。
 2308: しかし、これは@kbd{C-c}で始まる他のキー列には影響しません。
 2309: あるキー列が独自のローカルなバインディングを持たなければ、
 2310: グローバルなバインディングが意味を持つからです。
 2311: 
 2312: @c   Another way to think of this is that Emacs handles a multi-event key
 2313: @c sequence by looking in several keymaps, one by one, for a binding of the
 2314: @c whole key sequence.  First it checks the minor mode keymaps for minor
 2315: @c modes that are enabled, then it checks the major mode's keymap, and then
 2316: @c it checks the global keymap.  This is not precisely how key lookup
 2317: @c works, but it's good enough for understanding ordinary circumstances.
 2318: いいかえれば、Emacsが複数イベントから成るキー列を扱う方法は、
 2319: 複数のキーマップから1つずつ、キー列全体に一致するバインディングを探すのです。
 2320: まず、マイナモードが生きていればそのキーマップを検索し、
 2321: つぎにメジャーモードのキーマップを検索し、
 2322: 最後にグローバルキーマップを検索します。
 2323: これは厳密にはキーの検索動作とは違いますが、
 2324: 通常の状況でどうなるか理解するには十分です。
 2325: 
 2326: @c @cindex rebinding major mode keys
 2327: @cindex メジャーモードのキーのバイディング変更
 2328: @c   To change the local bindings of a major mode, you must change the
 2329: @c mode's local keymap.  Normally you must wait until the first time the
 2330: @c mode is used, because most major modes don't create their keymaps until
 2331: @c then.  If you want to specify something in your @file{~/.emacs} file to
 2332: @c change a major mode's bindings, you must use the mode's mode hook to
 2333: @c delay the change until the mode is first used.
 2334: メジャーモードのローカルバインディングを変更するには、
 2335: そのモードのローカルキーマップを変更する必要があります。
 2336: 通常、そのためにはそのモードが最初に使われるまで待つ必要があります。
 2337: というのは、ほどんどのメジャーモードは
 2338: 使われるまでキーマップを作成しないからです。
 2339: ですから、個人の@file{~/.emacs}ファイルで
 2340: メジャーモードのバインディングを変更したければ、
 2341: そのモードのモードフックを使ってそのモードが最初に使われるまで
 2342: (変更を)遅らせる必要があります。
 2343: 
 2344: @c   For example, the command @code{texinfo-mode} to select Texinfo mode
 2345: @c runs the hook @code{texinfo-mode-hook}.  Here's how you can use the hook
 2346: @c to add local bindings (not very useful, we admit) for @kbd{C-c n} and
 2347: @c @kbd{C-c p} in Texinfo mode:
 2348: たとえば、texinfoモードを選択する@code{texinfo-mode}コマンドは
 2349: フック@code{texinfo-mode-hook}を実行します。
 2350: このフックを使って@kbd{C-c n}と@kbd{C-c p}に対する
 2351: (有益ではないですが)ローカルバインディングを
 2352: texinfoモードに追加するには、つぎのようにします。
 2353: 
 2354: @example
 2355: (add-hook 'texinfo-mode-hook
 2356:           '(lambda ()
 2357:              (define-key texinfo-mode-map
 2358:                          "\C-cp"
 2359:                          'backward-paragraph)
 2360:              (define-key texinfo-mode-map
 2361:                          "\C-cn"
 2362:                          'forward-paragraph)
 2363:              ))
 2364: @end example
 2365: 
 2366: @c   @xref{Hooks}.
 2367: @xref{Hooks}。
 2368: 
 2369: @node Minibuffer Maps, Rebinding, Local Keymaps, Key Bindings
 2370: @c @subsection Minibuffer Keymaps
 2371: @subsection ミニバッファのキーマップ
 2372: 
 2373: @c @cindex minibuffer keymaps
 2374: @cindex ミニバッファキーマップ
 2375: @vindex minibuffer-local-map
 2376: @vindex minibuffer-local-ns-map
 2377: @vindex minibuffer-local-completion-map
 2378: @vindex minibuffer-local-must-match-map
 2379: @c   The minibuffer has its own set of local keymaps; they contain various
 2380: @c completion and exit commands.
 2381: ミニバッファも一群の専用ローカルキーマップを持っています。
 2382: それらには各種の補完や脱出コマンドが定義されています。
 2383: 
 2384: @c = 補完の種類: 強い/慎重/弱い ?
 2385: @itemize @bullet
 2386: @item
 2387: @c @code{minibuffer-local-map} is used for ordinary input (no completion).
 2388: @code{minibuffer-local-map}は通常の入力に使われる(補完なし)。
 2389: @item
 2390: @c @code{minibuffer-local-ns-map} is similar, except that @key{SPC} exits
 2391: @c just like @key{RET}.  This is used mainly for Mocklisp compatibility.
 2392: @code{minibuffer-local-ns-map}も同様。
 2393: ただし、@key{SPC}は、@key{RET}と同様に、脱出動作である。
 2394: これは主にMocklispとの互換性のために使われる。
 2395: @item
 2396: @c @code{minibuffer-local-completion-map} is for permissive completion.
 2397: @code{minibuffer-local-completion-map}は弱い補完に使われる。
 2398: @item
 2399: @c @code{minibuffer-local-must-match-map} is for strict completion and
 2400: @c for cautious completion.
 2401: @code{minibuffer-local-must-match-map}は強い補完と慎重な補完に使われる。
 2402: @end itemize
 2403: 
 2404: @node Rebinding, Init Rebinding, Minibuffer Maps, Key Bindings
 2405: @c @subsection Changing Key Bindings Interactively
 2406: @subsection キーバインディングの対話的な変更
 2407: @c @cindex key rebinding, this session
 2408: @c @cindex rebinding keys, this session
 2409: @cindex キーバインディングの変更、 セッション内
 2410: 
 2411: @c   The way to redefine an Emacs key is to change its entry in a keymap.
 2412: @c You can change the global keymap, in which case the change is effective in
 2413: @c all major modes (except those that have their own overriding local
 2414: @c definitions for the same key).  Or you can change the current buffer's
 2415: @c local map, which affects all buffers using the same major mode.
 2416: Emacsのキーを再定義するには、キーマップの対応する項目を
 2417: 変更すればよいのです。
 2418: グローバルキーマップを変更すると、その変更は
 2419: (同じキーに対して独自のローカルな定義をしているメジャーモードを除く)
 2420: すべてのメジャーモードに影響します。
 2421: あるいは、カレントバッファのローカルマップを変更すると、
 2422: 同じメジャーモードを使っているすべてバッファに影響が及びます。
 2423: 
 2424: @findex global-set-key
 2425: @findex local-set-key
 2426: @findex global-unset-key
 2427: @findex local-unset-key
 2428: @table @kbd
 2429: @item M-x global-set-key @key{RET} @var{key} @var{cmd} @key{RET}
 2430: @c Define @var{key} globally to run @var{cmd}.
 2431: @var{cmd}を実行するように@var{key}をグローバルに定義する。
 2432: @item M-x local-set-key @key{RET} @var{key} @var{cmd} @key{RET}
 2433: @c Define @var{key} locally (in the major mode now in effect) to run
 2434: @c @var{cmd}.
 2435: @var{cmd}を実行するように@var{key}を(現在のメジャーモードで)
 2436: ローカルに定義する。
 2437: @item M-x global-unset-key @key{RET} @var{key}
 2438: @c Make @var{key} undefined in the global map.
 2439: @var{key}をグローバルマップで未定義にする。
 2440: @item M-x local-unset-key @key{RET} @var{key}
 2441: @c Make @var{key} undefined locally (in the major mode now in effect).
 2442: @var{key}を(現在のメジャーモードで)ローカルに未定義にする。
 2443: @end table
 2444: 
 2445: @c   For example, suppose you like to execute commands in a subshell within
 2446: @c an Emacs buffer, instead of suspending Emacs and executing commands in
 2447: @c your login shell.  Normally, @kbd{C-z} is bound to the function
 2448: @c @code{suspend-emacs} (when not using the X Window System), but you can
 2449: @c change @kbd{C-z} to invoke an interactive subshell within Emacs, by
 2450: @c binding it to @code{shell} as follows:
 2451: たとえば、Emacsを休止してログインシェルでコマンドを実行するかわりに、
 2452: Emacsバッファ内のサブシェルでコマンドを実行したいとします。
 2453: 通常、(Xウィンドウシステムを使っていない場合)@kbd{C-z}は
 2454: 関数@code{suspend-emacs}にバインドされていますが、
 2455: つぎのようにこのキーを@code{shell}にバインドすれば、
 2456: このキーでEmacs内の対話的サブシェルを起動するように変更できます。
 2457: 
 2458: @example
 2459: M-x global-set-key @key{RET} C-z shell @key{RET}
 2460: @end example
 2461: 
 2462: @noindent
 2463: @c @code{global-set-key} reads the command name after the key.   After you
 2464: @c press the key, a message like this appears so that you can confirm that
 2465: @c you are binding the key you want:
 2466: @code{global-set-key}はキー列に続けてコマンド名を読み取ります。
 2467: 使いたいキーを打鍵すると、どのキーをバインドしたいのかを
 2468: 確認するつぎのようなメッセージが表示されます。
 2469: 
 2470: @example
 2471: Set key C-z to command: 
 2472: @end example
 2473: 
 2474: @c   You can redefine function keys and mouse events in the same way; just
 2475: @c type the function key or click the mouse when it's time to specify the
 2476: @c key to rebind.
 2477: 同じ手順で、ファンクションキーやマウスイベントを再定義できます。
 2478: バインドすべきキーを指定するときに、
 2479: キーのかわりにファンクションキーを押したりマウスボタンをクリックしてください。
 2480: 
 2481: @c   You can rebind a key that contains more than one event in the same
 2482: @c way.  Emacs keeps reading the key to rebind until it is a complete key
 2483: @c (that is, not a prefix key).  Thus, if you type @kbd{C-f} for
 2484: @c @var{key}, that's the end; the minibuffer is entered immediately to
 2485: @c read @var{cmd}.  But if you type @kbd{C-x}, another character is read;
 2486: @c if that is @kbd{4}, another character is read, and so on.  For
 2487: @c example,
 2488: 複数イベントから成るキーも単一イベントのキーと同様にして再定義できます。
 2489: Emacsは再定義すべきキー列が完成するまで(つまりプレフィックスキーではない
 2490: キーが出てくるまで)イベントを読み続けます。
 2491: たとえば、@var{key}として@kbd{C-f}を打てばそれで終りですから、
 2492: ミニバッファはただちに@var{cmd}を読む状態になります。
 2493: 一方、@kbd{C-x}を打つとさらにその先のキーを読みます。
 2494: そこで@kbd{4}を打つと、さらにその先のキーが読まれる、というようになります。
 2495: たとえば、
 2496: 
 2497: @example
 2498: M-x global-set-key @key{RET} C-x 4 $ spell-other-window @key{RET}
 2499: @end example
 2500: 
 2501: @noindent
 2502: @c redefines @kbd{C-x 4 $} to run the (fictitious) command
 2503: @c @code{spell-other-window}.
 2504: では、@kbd{C-x 4 $}を(実在しない)コマンド@code{spell-other-window}に
 2505: バインドします。
 2506: 
 2507: @c   The two-character keys consisting of @kbd{C-c} followed by a letter
 2508: @c are reserved for user customizations.  Lisp programs are not supposed to
 2509: @c define these keys, so the bindings you make for them will be available
 2510: @c in all major modes and will never get in the way of anything.
 2511: @kbd{C-c}に続けて英字という2文字のキー列は、
 2512: ユーザーのカスタマイズ用に予約されています。
 2513: Lispプログラムはこれらのキー列を定義しないことになっていますから、
 2514: これらのキー列のバインディングはどのメジャーモードでも使え、
 2515: いかなる機能とも干渉しないはずです。
 2516: 
 2517: @c   You can remove the global definition of a key with
 2518: @c @code{global-unset-key}.  This makes the key @dfn{undefined}; if you
 2519: @c type it, Emacs will just beep.  Similarly, @code{local-unset-key} makes
 2520: @c a key undefined in the current major mode keymap, which makes the global
 2521: @c definition (or lack of one) come back into effect in that major mode.
 2522: @code{global-unset-key}でキーのグローバルな定義を取り除けます。
 2523: そのキーは@dfn{未定義}になります。
 2524: 未定義のキーを打つと、Emacsはベルを鳴らします。
 2525: 同様に、@code{local-unset-key}は現在のメジャーモードでキーを
 2526: 未定義にしますから、グローバルな定義(あるいはグローバルでの未定義状態)が
 2527: 現在のメジャーモードでふたたび有効になります。
 2528: 
 2529: @c   If you have redefined (or undefined) a key and you subsequently wish
 2530: @c to retract the change, undefining the key will not do the job---you need
 2531: @c to redefine the key with its standard definition.  To find the name of
 2532: @c the standard definition of a key, go to a Fundamental mode buffer and
 2533: @c use @kbd{C-h c}.  The documentation of keys in this manual also lists
 2534: @c their command names.
 2535: キーを再定義(または未定義に)して、あとでもとに戻したいと思った場合、
 2536: キーを未定義にしてももとには戻りません。
 2537: キーの標準定義を設定し直す必要があります。
 2538: キーの標準定義を調べるには、基本(fundamental)モードのバッファに
 2539: いって@kbd{C-h c}を使います。
 2540: 本書のキーの説明にもコマンド名を掲載してあります。
 2541: 
 2542: @c   If you want to prevent yourself from invoking a command by mistake, it
 2543: @c is better to disable the command than to undefine the key.  A disabled
 2544: @c command is less work to invoke when you really want to.
 2545: @c @xref{Disabling}.
 2546: まちがって、あるコマンドを実行することを防ぎたければ、
 2547: キーを未定義にするのでなく、コマンドを使用禁止にするのがよいでしょう。
 2548: 必要になったときに使用禁止コマンドを起動するのは造作もありません。
 2549: 
 2550: @node Init Rebinding, Function Keys, Rebinding, Key Bindings
 2551: @c @subsection Rebinding Keys in Your Init File
 2552: @subsection 初期化ファイルでのキーの変更
 2553: 
 2554: @findex define-key
 2555: @findex substitute-key-definition
 2556: @c   If you have a set of key bindings that you like to use all the time,
 2557: @c you can specify them in your @file{.emacs} file by using their Lisp
 2558: @c syntax.
 2559: いつでもあるキーバインディングを設定しておきたければ、
 2560: その指定を個人の@file{.emacs}ファイルにLispのコードとして書いておきます。
 2561: 
 2562: @c   The simplest method for doing this works for ASCII characters and
 2563: @c Meta-modified ASCII characters only.  This method uses a string to
 2564: @c represent the key sequence you want to rebind.  For example, here's how
 2565: @c to bind @kbd{C-z} to @code{shell}:
 2566: これを行うもっとも簡単な方法は、
 2567: ASCII文字とメタ修飾付きのASCII文字に対してのみ使えます。
 2568: たとえば、@kbd{C-z}を@code{shell}にバインドするにはつぎのようにします。
 2569: 
 2570: @example
 2571: (global-set-key "\C-z" 'shell)
 2572: @end example
 2573: 
 2574: @noindent
 2575: @c This example uses a string constant containing one character, @kbd{C-z}.
 2576: @c The single-quote before the command name, @code{shell}, marks it as a
 2577: @c constant symbol rather than a variable.  If you omit the quote, Emacs
 2578: @c would try to evaluate @code{shell} immediately as a variable.  This
 2579: @c probably causes an error; it certainly isn't what you want.
 2580: この例では1つの文字@kbd{C-z}から成る文字列定数を指定しています。
 2581: コマンド名@code{shell}のまえのクォート「'」は、
 2582: @code{shell}を変数ではなく定数シンボルとして扱う印です。
 2583: クォートがないと、Emacsは@code{shell}を変数として
 2584: その値をただちに評価しようとします。
 2585: すると、望んでいることではなく、エラーになります。
 2586: 
 2587: @c   Here is another example that binds a key sequence two characters long:
 2588: つぎは、2文字のキー列をバインドする例です。
 2589: 
 2590: @example
 2591: (global-set-key "\C-xl" 'make-symbolic-link)
 2592: @end example
 2593: 
 2594: @c   When the key sequence includes function keys or mouse button events,
 2595: @c or non-ASCII characters such as @code{C-=} or @code{H-a}, you must use
 2596: @c the more general method of rebinding, which uses a vector to specify the
 2597: @c key sequence.
 2598: キー列にファンクションキーやマウスボタンイベントが含まれていたり、
 2599: @code{C-=}や@code{H-a}などの非ASCII文字が含まれているなら、
 2600: 文字列よりもっと一般的な指定方法であるベクタを使った指定を使う必要があります。
 2601: 
 2602: @c   The way to write a vector in Emacs Lisp is with square brackets around
 2603: @c the vector elements.  Use spaces to separate the elements.  If an
 2604: @c element is a symbol, simply write the symbol's name---no other
 2605: @c delimiters or punctuation are needed.  If a vector element is a
 2606: @c character, write it as a Lisp character constant: @samp{?} followed by
 2607: @c the character as it would appear in a string.
 2608: Emacs Lispでのベクタの書き方は、その要素を中括弧(@samp{[@dots{}]})で
 2609: 囲みます。
 2610: 要素は空白で区切ります。
 2611: 要素がシンボルであれば、単にその名前だけを書けばよく、
 2612: 区切り記号などは不要です。
 2613: 要素が文字であれば、Lispの文字定数として、
 2614: つまり@samp{?}に続けてその文字が文字列中に現れるのと同じ書き方で、
 2615: 書いてください。
 2616: 
 2617: @c   Here are examples of using vectors to rebind @kbd{C-=} (a control
 2618: @c character outside of ASCII), @kbd{H-a} (a Hyper character; ASCII doesn't
 2619: @c have Hyper at all), @key{F7} (a function key), and @kbd{C-Mouse-1} (a
 2620: @c keyboard-modified mouse button):
 2621: ベクタを使って@kbd{C-=}(ASCIIの範囲にないコントロール文字)、
 2622: @kbd{H-a}(ハイパー文字。ASCIIにはハイパー文字は含まれない)、
 2623: @key{F7}(ファンクションキー)、
 2624: @kbd{C-Mouse-1}(キーボード修飾付きのマウスボタン)を
 2625: バインドする例を示します。
 2626: 
 2627: @example
 2628: (global-set-key [?\C-=] 'make-symbolic-link)
 2629: (global-set-key [?\H-a] 'make-symbolic-link)
 2630: (global-set-key [f7] 'make-symbolic-link)
 2631: (global-set-key [C-mouse-1] 'make-symbolic-link)
 2632: @end example
 2633: 
 2634: @c   You can use a vector for the simple cases too.  Here's how to rewrite
 2635: @c the first two examples, above, to use vectors:
 2636: 単純な(文字列ですむ)場合にベクタを使ってもかまいません。
 2637: 先の2つの例をベクタを使うように書き直すとつぎのようになります。
 2638: 
 2639: @example
 2640: (global-set-key [?\C-z] 'shell)
 2641: 
 2642: (global-set-key [?\C-x ?l] 'make-symbolic-link)
 2643: @end example
 2644: 
 2645: @node Function Keys, Named ASCII Chars, Init Rebinding, Key Bindings
 2646: @c @subsection Rebinding Function Keys
 2647: @subsection ファンクションキーの再定義
 2648: 
 2649: @c   Key sequences can contain function keys as well as ordinary
 2650: @c characters.  Just as Lisp characters (actually integers) represent
 2651: @c keyboard characters, Lisp symbols represent function keys.  If the
 2652: @c function key has a word as its label, then that word is also the name of
 2653: @c the corresponding Lisp symbol.  Here are the conventional Lisp names for
 2654: @c common function keys:
 2655: キー列には通常の文字以外にもファンクションキーを含めることができます。
 2656: キーボードの文字がLispの文字(実は整数です)で表されるのに対し、
 2657: ファンクションキーはLispシンボルで表されます。
 2658: ファンクションキーに単語のラベルが付いているなら、
 2659: その単語が対応するLispシンボルの名前になります。
 2660: たとえば普通に見られるファンクションキーとLispシンボルの対応はつぎのとおりです。
 2661: 
 2662: @table @asis
 2663: @item @code{left}, @code{up}, @code{right}, @code{down}
 2664: @c Cursor arrow keys.
 2665: カーソル矢印キー。
 2666: 
 2667: @item @code{begin}, @code{end}, @code{home}, @code{next}, @code{prior}
 2668: @c Other cursor repositioning keys.
 2669: その他のカーソル移動キー。
 2670: 
 2671: @item @code{select}, @code{print}, @code{execute}, @code{backtab}
 2672: @itemx @code{insert}, @code{undo}, @code{redo}, @code{clearline}
 2673: @itemx @code{insertline}, @code{deleteline}, @code{insertchar}, @code{deletechar}
 2674: @c Miscellaneous function keys.
 2675: その他のファンクションキー。
 2676: 
 2677: @item @code{f1}, @code{f2}, @dots{} @code{f35}
 2678: @c Numbered function keys (across the top of the keyboard).
 2679: (キーボードの上端に並んでいる)番号の付いたファンクションキー。
 2680: 
 2681: @item @code{kp-add}, @code{kp-subtract}, @code{kp-multiply}, @code{kp-divide}
 2682: @itemx @code{kp-backtab}, @code{kp-space}, @code{kp-tab}, @code{kp-enter}
 2683: @itemx @code{kp-separator}, @code{kp-decimal}, @code{kp-equal}
 2684: @c Keypad keys (to the right of the regular keyboard), with names or punctuation.
 2685: (普通のキーボードの右側にまとまっている)キーパッドのキーで、
 2686: 名前や句読点が印字されているもの。
 2687: 
 2688: @item @code{kp-0}, @code{kp-1}, @dots{} @code{kp-9}
 2689: @c Keypad keys with digits.
 2690: キーパッドの数字キー
 2691: 
 2692: @item @code{kp-f1}, @code{kp-f2}, @code{kp-f3}, @code{kp-f4}
 2693: @c Keypad PF keys.
 2694: キーパッドのPFキー。
 2695: @end table
 2696: 
 2697: @c   These names are conventional, but some systems (especially when using
 2698: @c X windows) may use different names.  To make certain what symbol is used
 2699: @c for a given function key on your terminal, type @kbd{C-h c} followed by
 2700: @c that key.
 2701: これらの名前は習慣的なものですが、システムによっては
 2702: (とりわけXウィンドウシステムを使っている場合は)、
 2703: 別の名前になっている場合があります。
 2704: あるファンクションキーにどのシンボルが対応しているか調べるには、
 2705: @kbd{C-h c}に続いてそのキーを打鍵してください。
 2706: 
 2707: @c   A key sequence which contains function key symbols (or anything but
 2708: @c ASCII characters) must be a vector rather than a string.  The vector
 2709: @c syntax uses spaces between the elements, and square brackets around the
 2710: @c whole vector.  Thus, to bind function key @samp{f1} to the command
 2711: @c @code{rmail}, write the following:
 2712: ファンクションキーのシンボルを含むキー列(あるいは、
 2713: ASCII以外の文字を含むもの)は文字列ではなくベクタで指定してください。
 2714: ベクタの構文では要素と要素のあいだは空白で区切り、
 2715: 全体を中括弧@samp{@samp{[@dots{}]}}で囲みます。
 2716: たとえば、ファンクションキー@samp{f1}をコマンド@code{rmail}にバインドするには、
 2717: つぎのようにします。
 2718: 
 2719: @example
 2720: (global-set-key [f1] 'rmail)
 2721: @end example
 2722: 
 2723: @noindent
 2724: @c To bind the right-arrow key to the command @code{forward-char}, you can
 2725: @c use this expression:
 2726: 右矢印キーをコマンド@code{fowared-char}にバインドするには、
 2727: つぎのようにします。
 2728: 
 2729: @example
 2730: (global-set-key [right] 'forward-char)
 2731: @end example
 2732: 
 2733: @noindent
 2734: @c This uses the Lisp syntax for a vector containing the symbol
 2735: @c @code{right}.  (This binding is present in Emacs by default.)
 2736: これは、シンボル@code{right}を要素とするベクタのLisp構文です。
 2737: (このバインディングはEmacsのデフォルト設定に入っている。)
 2738: 
 2739: @c   @xref{Init Rebinding}, for more information about using vectors for
 2740: @c rebinding.
 2741: ベクタを用いたキーの再定義ついてより詳しくは、@xref{Init Rebinding}。
 2742: 
 2743: @c   You can mix function keys and characters in a key sequence.  This
 2744: @c example binds @kbd{C-x @key{NEXT}} to the command @code{forward-page}.
 2745: キー列の中でファンクションキーと文字を混ぜることができます。
 2746: 以下の例は、
 2747: @kbd{C-x @key{NEXT}}をコマンド@code{forward-page}にバインドしています。
 2748: 
 2749: @example
 2750: (global-set-key [?\C-x next] 'forward-page)
 2751: @end example
 2752: 
 2753: @noindent
 2754: @c where @code{?\C-x} is the Lisp character constant for the character
 2755: @c @kbd{C-x}.  The vector element @code{next} is a symbol and therefore
 2756: @c does not take a question mark.
 2757: ここで、@code{?\C-x}はLispの文字定数で、文字@kbd{C-x}を表します。
 2758: ベクタのもう1つの要素である@code{next}は、シンボルですから@samp{?}は不要です。
 2759: 
 2760: @c   You can use the modifier keys @key{CTRL}, @key{META}, @key{HYPER},
 2761: @c @key{SUPER}, @key{ALT} and @key{SHIFT} with function keys.  To represent
 2762: @c these modifiers, add the strings @samp{C-}, @samp{M-}, @samp{H-},
 2763: @c @samp{s-}, @samp{A-} and @samp{S-} at the front of the symbol name.
 2764: @c Thus, here is how to make @kbd{Hyper-Meta-@key{RIGHT}} move forward a
 2765: @c word:
 2766: ファンクションキーに対して、修飾キー@key{CTRL}、@key{META}、@key{HYPER}、
 2767: @key{SUPER}、@key{ALT}、@key{SHIFT}を指定できます。
 2768: これらの修飾キーを指定するには、シンボル名のまえに@samp{C-}、
 2769: @samp{M-}、@samp{H-}、@samp{s-}、@samp{A-}、@samp{S-}を付けてください。
 2770: たとえば、@kbd{Hyper-Meta-@key{RIGHT}}で
 2771: 1語先へ移動するにはつぎのように指定します。
 2772: 
 2773: @example
 2774: (global-set-key [H-M-right] 'forward-word)
 2775: @end example
 2776: 
 2777: @node Named ASCII Chars, Non-ASCII Rebinding, Function Keys, Key Bindings
 2778: @c @subsection Named ASCII Control Characters
 2779: @subsection 名前の付いたASCIIコントロール文字
 2780: 
 2781: @c   @key{TAB}, @key{RET}, @key{BS}, @key{LFD}, @key{ESC} and @key{DEL}
 2782: @c started out as names for certain ASCII control characters, used so often
 2783: @c that they have special keys of their own.  Later, users found it
 2784: @c convenient to distinguish in Emacs between these keys and the ``same''
 2785: @c control characters typed with the @key{CTRL} key.
 2786: @key{TAB}、@key{RET}、@key{BS}、@key{LFD}、@key{ESC}、@key{DEL}は
 2787: もともとASCIIの特定のコントロール文字に対応していたのですが、
 2788: よく使われるため別にそれ専用のキーを持つようになりました。
 2789: のちに人々はEmacsでこれらのキーとそれらと『同じ』文字を
 2790: @key{CTRL}キーと組み合わせて打鍵した場合とを区別できると
 2791: 便利だと気がつきました。
 2792: 
 2793: @c   Emacs distinguishes these two kinds of input, when used with the X
 2794: @c Window System.  It treats the ``special'' keys as function keys named
 2795: @c @code{tab}, @code{return}, @code{backspace}, @code{linefeed},
 2796: @c @code{escape}, and @code{delete}.  These function keys translate
 2797: @c automatically into the corresponding ASCII characters @emph{if} they
 2798: @c have no bindings of their own.  As a result, neither users nor Lisp
 2799: @c programs need to pay attention to the distinction unless they care to.
 2800: EmacsではXウィンドウシステムを使っている場合、
 2801: これら2種類の入力を区別します。
 2802: つまり、キーボード上の特殊キーの方は@code{tab}、@code{return}、
 2803: @code{backspace}、@code{linefeed}、@code{escape}、
 2804: @code{delete}という名前のファンクションキーとして扱うのです。
 2805: これらのファンクションキーは、@emph{もし}それ固有のバインディングが
 2806: 指定されていなければ、自動的に対応するASCII文字に変換されます。
 2807: その結果、特にこの2種類を区別したいと思わない限りは、
 2808: ユーザーもLispプログラムもこれらの区分について気にする必要はありません。
 2809: 
 2810: @c   If you do not want to distinguish between (for example) @key{TAB} and
 2811: @c @kbd{C-i}, make just one binding, for the ASCII character @key{TAB}
 2812: @c (octal code 011).  If you do want to distinguish, make one binding for
 2813: @c this ASCII character, and another for the ``function key'' @code{tab}.
 2814: (たとえば)@key{TAB}と@kbd{C-i}を区別したくないなら、
 2815: ASCII文字@key{TAB}(8進コード011)に対応するバインディング1つだけを
 2816: 指定してください。
 2817: 区別したいのなら、このASCII文字に対するバインディングに加えて、
 2818: 『ファンクションキー』@code{tab}に対するバインディングも指定します。
 2819: 
 2820: @c   With an ordinary ASCII terminal, there is no way to distinguish
 2821: @c between @key{TAB} and @kbd{C-i} (and likewise for other such pairs),
 2822: @c because the terminal sends the same character in both cases.
 2823: 通常のASCII端末では、@key{TAB}と@kbd{C-i}
 2824: (および上記の対応する組のそれぞれ)を区別する方法はありません。
 2825: というのは、端末はどちらが押されても同じ文字を送出するからです。
 2826: 
 2827: @node Non-ASCII Rebinding
 2828: @c @subsection Non-ASCII Characters on the Keyboard
 2829: @subsection キーボード上の非ASCII文字
 2830: 
 2831: @c If your keyboard has keys that send non-ASCII characters, such as
 2832: @c accented letters, rebinding these keys is a bit tricky.  There are
 2833: @c two solutions you can use.  One is to specify a keyboard coding system,
 2834: @c using @code{set-keyboard-coding-system} (@pxref{Specify Coding}).
 2835: @c Then you can bind these keys in the usual way, but writing
 2836: アクセント付き文字などの非ASCII文字を送出するキーがあるキーボードでは、
 2837: それらのキーの再定義には、少々トリックが必要です。
 2838: 2つの解決方法があります。
 2839: 1つめは、@code{set-keyboard-coding-system}(@pxref{Specify Coding})を
 2840: 使って、キーボードのコーディングシステムを指定することです。
 2841: そうすれば、つぎのように書いて、
 2842: 通常の方法でそれらのキーを再定義できます。
 2843: 
 2844: @example
 2845: (global-set-key [?@var{char}] 'some-function)
 2846: @end example
 2847: 
 2848: @noindent
 2849: @c and typing the key you want to bind to insert @var{char}.
 2850: ただし、@var{char}を挿入するには、定義したいキーを打ちます。
 2851: 
 2852: @c If you don't specify the keyboard coding system, that approach won't
 2853: @c work.  Instead, you need to find out the actual code that the terminal
 2854: @c sends.  The easiest way to do this in Emacs is to create an empty buffer
 2855: @c with @kbd{C-x b temp @key{RET}}, make it unibyte with @kbd{M-x
 2856: @c toggle-enable-multibyte-characters @key{RET}}, then type the key to
 2857: @c insert the character into this buffer.
 2858: キーボードのコーディングシステムを指定しないと、
 2859: 上のようにはできません。
 2860: そのかわりに、端末が実際に送出するコードを調べる必要があります。
 2861: Emacsでこれを簡単に行うには、
 2862: @kbd{C-x b temp @key{RET}}で空バッファを作成し、
 2863: @kbd{M-x toggle-enable-multibyte-characters @key{RET}}でユニバイトに
 2864: してから、このバッファに文字を挿入するキーを打ちます。
 2865: 
 2866: @c Move point before the character, then type @kbd{C-b C-x =}.  This
 2867: @c displays a message in the minibuffer, showing the character code in
 2868: @c three ways, octal, decimal and hexadecimal, all within a set of
 2869: @c parentheses.  Use the second of the three numbers, the decimal one,
 2870: @c inside the vector to bind:
 2871: 文字のまえにポイントを移動して、@kbd{C-b C-x =}と打ちます。
 2872: 8進数、10進数、16進数の3通りで表した文字コードを括弧で括った
 2873: メッセージがミニバッファに表示されます。
 2874: 定義するには、3つの数字の2番目、つまり、10進数を
 2875: ベクタの中に書きます。
 2876: 
 2877: @example
 2878: (global-set-key [@var{decimal-code}] 'some-function)
 2879: @end example
 2880: 
 2881: @node Mouse Buttons, Disabling, Non-ASCII Rebinding, Key Bindings
 2882: @c @subsection Rebinding Mouse Buttons
 2883: @subsection マウスボタンの再定義
 2884: @c @cindex mouse button events
 2885: @c @cindex rebinding mouse buttons
 2886: @c @cindex click events
 2887: @c @cindex drag events
 2888: @c @cindex down events
 2889: @c @cindex button down events
 2890: @cindex マウスボタンイベント
 2891: @cindex マウスボタンの再定義
 2892: @cindex クリックイベント
 2893: @cindex ドラッグイベント
 2894: @cindex 押し下げイベント
 2895: @cindex ボタン押し下げイベント
 2896: 
 2897: @c   Emacs uses Lisp symbols to designate mouse buttons, too.  The ordinary
 2898: @c mouse events in Emacs are @dfn{click} events; these happen when you
 2899: @c press a button and release it without moving the mouse.  You can also
 2900: @c get @dfn{drag} events, when you move the mouse while holding the button
 2901: @c down.  Drag events happen when you finally let go of the button.
 2902: Emacsではマウスボタンを表すのにもLispシンボルを使います。
 2903: Emacsのもっとも一般的なマウスイベントは@dfn{クリック}(click)イベントです。
 2904: これはマウスボタンを押して、マウスを移動せずにボタンを放したときに発生します。
 2905: ボタンを押した状態でマウスを移動すると
 2906: @dfn{ドラッグ}(drag)イベントになります。
 2907: そして最後にマウスボタンを放したときにも、
 2908: やはり@dfn{ドラッグ}イベントが発生します。
 2909: 
 2910: @c   The symbols for basic click events are @code{mouse-1} for the leftmost
 2911: @c button, @code{mouse-2} for the next, and so on.  Here is how you can
 2912: @c redefine the second mouse button to split the current window:
 2913: 基本的なクリックイベントに対応するシンボルは、
 2914: 左ボタンに対しては@code{mouse-1}、
 2915: 左から2番目のボタンに対しては@code{mouse-2}、などとなっています。
 2916: 2番目のボタンをクリックしたときカレントウィンドウを分割するには、
 2917: つぎのように設定します。
 2918: 
 2919: @example
 2920: (global-set-key [mouse-2] 'split-window-vertically)
 2921: @end example
 2922: 
 2923: @c   The symbols for drag events are similar, but have the prefix
 2924: @c @samp{drag-} before the word @samp{mouse}.  For example, dragging the
 2925: @c first button generates a @code{drag-mouse-1} event.
 2926: ドラッグイベントについても同様ですが、
 2927: イベント名の@samp{mouse}のまえに@samp{drag-}が付きます。
 2928: たとえば、第1ボタンを押したままドラッグすると
 2929: @code{drag-mouse-1}イベントが発生します。
 2930: 
 2931: @c   You can also define bindings for events that occur when a mouse button
 2932: @c is pressed down.  These events start with @samp{down-} instead of
 2933: @c @samp{drag-}.  Such events are generated only if they have key bindings.
 2934: @c When you get a button-down event, a corresponding click or drag event
 2935: @c will always follow.
 2936: マウスボタンが押されたときに発生するイベントに対して
 2937: バインディングを指定することもできます。
 2938: これらのイベントは@samp{drag-}のかわりに@samp{down-}で始まります。
 2939: これらのイベントはキーバインディングが定義されているときだけ生成されます。
 2940: @samp{down-}イベントのあとには、必ず、
 2941: 対応するクリック/ドラグッイベントが発生します。
 2942: 
 2943: @c @cindex double clicks
 2944: @c @cindex triple clicks
 2945: @cindex ダブルクリック
 2946: @cindex トリプルクリック
 2947: @c   If you wish, you can distinguish single, double, and triple clicks.  A
 2948: @c double click means clicking a mouse button twice in approximately the
 2949: @c same place.  The first click generates an ordinary click event.  The
 2950: @c second click, if it comes soon enough, generates a double-click event
 2951: @c instead.  The event type for a double-click event starts with
 2952: @c @samp{double-}: for example, @code{double-mouse-3}.
 2953: 必要ならば、シングルクリック/ダブルクリック/トリプルクリックを
 2954: 区別することもできます。
 2955: ダブルクリックとは、ほぼ同じ位置でマウスボタンを2回クリックすることです。
 2956: 最初のクリックで通常のクリックイベントが発生します。
 2957: 最初のクリックから十分短い時間内に2回目のクリックが起こると、
 2958: クリックイベントではなくダブルクリックイベントが発生します。
 2959: ダブルクリックイベントは、@samp{double-}で始まります。
 2960: たとえば、@code{double-mouse-3}です。
 2961: 
 2962: @c   This means that you can give a special meaning to the second click at
 2963: @c the same place, but it must act on the assumption that the ordinary
 2964: @c single click definition has run when the first click was received.
 2965: つまり、同じ場所で2回クリックがあったとき、
 2966: 2回目のクリックに特別な意味を与えることはできますが、
 2967: ただし最初のクリックで発生する通常のシングルクリックに
 2968: 対して定義された動作も実行されることを前提としなければなりません。
 2969: 
 2970: @c   This constrains what you can do with double clicks, but user interface
 2971: @c designers say that this constraint ought to be followed in any case.  A
 2972: @c double click should do something similar to the single click, only
 2973: @c ``more so.''  The command for the double-click event should perform the
 2974: @c extra work for the double click.
 2975: このような制限のため、ダブルクリックで行えることが制約されますが、
 2976: ユーザーインターフェイスデザイナは、よいユーザーインターフェイスが
 2977: つねにそのような制約に従うべきだとの考えを述べています。
 2978: つまり、ダブルクリックはシングルクリックと類似した動作をすべきであり、
 2979: 『それよりいくらか多く』の動作をするのがよい、ということです。
 2980: そして、ダブルクリックイベントに対応するコマンドがその
 2981: 「いくらか多く」のぶんの動作を行うべきだということです。
 2982: 
 2983: @c   If a double-click event has no binding, it changes to the
 2984: @c corresponding single-click event.  Thus, if you don't define a
 2985: @c particular double click specially, it executes the single-click command
 2986: @c twice.
 2987: ダブルクリックイベントに対してバインディングが定義されていなければ、
 2988: ダブルクリックは2つのシングルクリックとして扱われます。
 2989: その結果、シングルクリックに対応するコマンドが2回実行されることになります。
 2990: 
 2991: @c   Emacs also supports triple-click events whose names start with
 2992: @c @samp{triple-}.  Emacs does not distinguish quadruple clicks as event
 2993: @c types; clicks beyond the third generate additional triple-click events.
 2994: @c However, the full number of clicks is recorded in the event list, so you
 2995: @c can distinguish if you really want to.  We don't recommend distinct
 2996: @c meanings for more than three clicks, but sometimes it is useful for
 2997: @c subsequent clicks to cycle through the same set of three meanings, so
 2998: @c that four clicks are equivalent to one click, five are equivalent to
 2999: @c two, and six are equivalent to three.
 3000: Emacsではさらにトリプルクリックイベントも使えます
 3001: (その場合、名前は@samp{triple-}で始まる)。
 3002: しかし4重クリックをイベントタイプとして区別しません。
 3003: ですから、3回目以降の連続したクリックは、
 3004: すべてトリプルクリックイベントとして報告されます。
 3005: ただし、連続したクリックの回数はイベントリストに記録されていますから、
 3006: 本当に4重以上のクリックを区別したければそうすることもできます。
 3007: 4重以上のクリックに特別な意味を与えるのはお勧めできませんが、
 3008: 4回だと1回と同じ、5回だと2回と同じというように3つの選択肢のあいだで
 3009: 巡回できるようにするのは場合によっては有効かもしれません。
 3010: 
 3011: @c   Emacs also records multiple presses in drag and button-down events.
 3012: @c For example, when you press a button twice, then move the mouse while
 3013: @c holding the button, Emacs gets a @samp{double-drag-} event.  And at the
 3014: @c moment when you press it down for the second time, Emacs gets a
 3015: @c @samp{double-down-} event (which is ignored, like all button-down
 3016: @c events, if it has no binding).
 3017: Emacsはまた、ドラッグやボタンイベントでも複数回の押し下げを記録します。
 3018: たとえば、ボタンを2回押してからそのままマウスを移動した場合、
 3019: Emacsは@samp{double-drag-}で始まるイベントを生成します。
 3020: ドラッグでなくボタンを押し下げただけの場合は同様に、
 3021: @samp{double-down-}で始まるイベントを生成します
 3022: (ただし、他のボタンイベントと同様に、そのイベントに対する
 3023: バインディングがなければ無視される)。
 3024: 
 3025: @vindex double-click-time
 3026: @c   The variable @code{double-click-time} specifies how long may elapse
 3027: @c between clicks that are recognized as a pair.  Its value is measured
 3028: @c in milliseconds.  If the value is @code{nil}, double clicks are not
 3029: @c detected at all.  If the value is @code{t}, then there is no time
 3030: @c limit.
 3031: 変数@code{double-click-time}は、どれくらいの時間間隔内であれば
 3032: 2つの隣接するクリックをダブルクリックとみなすかを指定します。
 3033: 単位はミリ秒です。
 3034: 値が@code{nil}であれば、ダブルクリックを検出しません。
 3035: 値が@code{t}であれば、時間間隔の上限はないものとして扱います。
 3036: 
 3037: @c   The symbols for mouse events also indicate the status of the modifier
 3038: @c keys, with the usual prefixes @samp{C-}, @samp{M-}, @samp{H-},
 3039: @c @samp{s-}, @samp{A-} and @samp{S-}.  These always precede @samp{double-}
 3040: @c or @samp{triple-}, which always precede @samp{drag-} or @samp{down-}.
 3041: マウスイベントに対応するシンボルにはさらに、
 3042: @samp{C-}、@samp{M-}、@samp{H-}、@samp{s-}、@samp{A-}、
 3043: @samp{S-}の各プレフィックスで、修飾キーの情報も組み込めます。
 3044: 順番は、プレフィックスに続いて@samp{double-}や@samp{triple-}があり、
 3045: そのあとが@samp{drag-}や@samp{down-}ということになります。
 3046: 
 3047: @c   A frame includes areas that don't show text from the buffer, such as
 3048: @c the mode line and the scroll bar.  You can tell whether a mouse button
 3049: @c comes from a special area of the screen by means of dummy ``prefix
 3050: @c keys.''  For example, if you click the mouse in the mode line, you get
 3051: @c the prefix key @code{mode-line} before the ordinary mouse-button symbol.
 3052: @c Thus, here is how to define the command for clicking the first button in
 3053: @c a mode line to run @code{scroll-up}:
 3054: フレームには、モード行やスクロールバーなどの
 3055: バッファ中のテキストを表示する以外の部分もあります。
 3056: マウスイベントがこれらの特別な部分で発生したものかどうかを調べるために、
 3057: ダミーの「プレフィックスキー」があります。
 3058: たとえば、マウスがモード行でクリックされた場合、
 3059: まず@code{mode-line}というプレフィックスキーが送られ、
 3060: 続いて通常のマウスボタンに対応したイベントが送られます。
 3061: ですから、モード行で第1ボタンがクリックされたときに
 3062: @code{scroll-up}を実行するにはつぎのようにします。
 3063: 
 3064: @example
 3065: (global-set-key [mode-line mouse-1] 'scroll-up)
 3066: @end example
 3067: 
 3068: @c   Here is the complete list of these dummy prefix keys and their
 3069: @c meanings:
 3070: ダミーのプレフィックスキーとその意味はつぎのとおりです。
 3071: 
 3072: @table @code
 3073: @item mode-line
 3074: @c The mouse was in the mode line of a window.
 3075: マウスがウィンドウのモード行にある。
 3076: @item vertical-line
 3077: @c The mouse was in the vertical line separating side-by-side windows.  (If
 3078: @c you use scroll bars, they appear in place of these vertical lines.)
 3079: マウスが横に隣接するウィンドウ間の境界線上にある。
 3080: (スクロールバーを表示させると、
 3081: 境界線のかわりにスクロールバーが現れる。)
 3082: @item vertical-scroll-bar
 3083: @c The mouse was in a vertical scroll bar.  (This is the only kind of
 3084: @c scroll bar Emacs currently supports.)
 3085: マウスが縦スクロールバー上にある。
 3086: (Emacsで使えるスクロールバーは、現在のところ縦スクロールバーのみ。)
 3087: @ignore
 3088: @item horizontal-scroll-bar
 3089: The mouse was in a horizontal scroll bar.  Horizontal scroll bars do
 3090: horizontal scrolling, and people don't use them often.
 3091: @end ignore
 3092: @end table
 3093: 
 3094: @c   You can put more than one mouse button in a key sequence, but it isn't
 3095: @c usual to do so.
 3096: 1つのキー列の中に2つ以上のマウスボタンイベントを含めることもできますが、
 3097: 普通はあまりしないでしょう。
 3098: 
 3099: @node Disabling,  , Mouse Buttons, Key Bindings
 3100: @c @subsection Disabling Commands
 3101: @subsection 使用禁止コマンド
 3102: @c @cindex disabled command
 3103: @cindex 使用禁止コマンド
 3104: 
 3105: @c   Disabling a command marks the command as requiring confirmation before it
 3106: @c can be executed.  The purpose of disabling a command is to prevent
 3107: @c beginning users from executing it by accident and being confused.
 3108: コマンドを使用禁止にすると、コマンドの実行にはユーザーの確認が必要になります。
 3109: コマンドを使用禁止にする目的は、
 3110: 初心者がそのコマンドをまちがって実行してしまい、混乱するのを防ぐためです。
 3111: 
 3112: @c   An attempt to invoke a disabled command interactively in Emacs
 3113: @c displays a window containing the command's name, its documentation, and
 3114: @c some instructions on what to do immediately; then Emacs asks for input
 3115: @c saying whether to execute the command as requested, enable it and
 3116: @c execute it, or cancel.  If you decide to enable the command, you are
 3117: @c asked whether to do this permanently or just for the current session.
 3118: @c Enabling permanently works by automatically editing your @file{.emacs}
 3119: @c file.
 3120: Emacs上で使用禁止コマンドを対話的に実行しようとすると、
 3121: コマンド名、説明文、とりあえずどうすべきかの指示を
 3122: 表示したウィンドウが現れます。
 3123: つぎにEmacsはコマンドを実行するか、使用禁止を解除してから実行するか、
 3124: 実行を取り消すかを問い合わせてきます。
 3125: コマンドの使用禁止を解除することを選ぶと、
 3126: Emacsさらに、以後恒久的にそうするのか、
 3127: または現在のセッション内だけそうするのかも問い合わせてきます。
 3128: 恒久的に使えるようにすると、
 3129: 自動的に個人の@file{.emacs}ファイルを編集します。
 3130: 
 3131: @c   The direct mechanism for disabling a command is to put a
 3132: @c non-@code{nil} @code{disabled} property on the Lisp symbol for the
 3133: @c command.  Here is the Lisp program to do this:
 3134: コマンドを使用禁止にする機構は、
 3135: コマンドに対応するLispシンボルの属性@code{disabled}に
 3136: @code{nil}以外の値を設定することです。
 3137: これを行うLispプログラムはつぎのようになります。
 3138: 
 3139: @example
 3140: (put 'delete-region 'disabled t)
 3141: @end example
 3142: 
 3143: @c   If the value of the @code{disabled} property is a string, that string
 3144: @c is included in the message printed when the command is used:
 3145: 属性@code{disabled}の値が文字列であれば、
 3146: コマンドを使用しようとしたときに表示される
 3147: メッセージにその文字列も含まれるようになります。
 3148: 
 3149: @example
 3150: (put 'delete-region 'disabled
 3151:      "It's better to use `kill-region' instead.\n")
 3152: @end example
 3153: 
 3154: @findex disable-command
 3155: @findex enable-command
 3156: @c   You can make a command disabled either by editing the @file{.emacs}
 3157: @c file directly or with the command @kbd{M-x disable-command}, which edits
 3158: @c the @file{.emacs} file for you.  Likewise, @kbd{M-x enable-command}
 3159: @c edits @file{.emacs} to enable a command permanently.  @xref{Init File}.
 3160: コマンドを使用禁止にするには、@file{.emacs}ファイルを直接編集するか、
 3161: かわってこのファイルを編集するコマンド@kbd{M-x disable-command}を使います。
 3162: 同様に、コマンド@kbd{M-x enable-command}は、
 3163: @file{.emacs}ファイルを編集してコマンドを恒久的に使える状態にします。
 3164: @xref{Init File}。
 3165: 
 3166: @c   Whether a command is disabled is independent of what key is used to
 3167: @c invoke it; disabling also applies if the command is invoked using
 3168: @c @kbd{M-x}.  Disabling a command has no effect on calling it as a
 3169: @c function from Lisp programs.
 3170: コマンドが使用禁止であるかどうかは、
 3171: そのコマンドを起動するキー列には無関係です。
 3172: したがって、@kbd{M-x}でそのコマンドを起動しても
 3173: Emacsはその可否を問い合わせてきます。
 3174: Lispプログラムからコマンドを関数として呼び出す場合には
 3175: 使用禁止にしても何の効果もありません。
 3176: 
 3177: @node Keyboard Translations, Syntax, Key Bindings, Customization
 3178: @c @section Keyboard Translations
 3179: @section キーボード変換
 3180: 
 3181: @c   Some keyboards do not make it convenient to send all the special
 3182: @c characters that Emacs uses.  The most common problem case is the
 3183: @c @key{DEL} character.  Some keyboards provide no convenient way to type
 3184: @c this very important character---usually because they were designed to
 3185: @c expect the character @kbd{C-h} to be used for deletion.  On these
 3186: @c keyboards, if you press the key normally used for deletion, Emacs handles
 3187: @c the @kbd{C-h} as a prefix character and offers you a list of help
 3188: @c options, which is not what you want.
 3189: キーボードの機種によっては、Emacsが使用するすべての特殊文字を
 3190: 送ってくれないものがあります。
 3191: もっともよくある問題は、@key{DEL}文字に関するものです。
 3192: いくつかのキーボードでは、
 3193: このきわめて重要な文字を簡単に打ち込む手段がありません。
 3194: それは、削除には@kbd{C-h}を使うことを前提としているからです。
 3195: そのようなキーボードで削除のためのキーを打つと、
 3196: Emacsはそれをプレフィックス文字@kbd{C-h}として解釈し、
 3197: どのヘルプ機能を使うか問い合わせてきてしまいます。
 3198: それはユーザーがしたかったことではありません。
 3199: 
 3200: @c @cindex keyboard translations
 3201: @cindex キーボード変換
 3202: @findex keyboard-translate
 3203: @c   You can work around this problem within Emacs by setting up keyboard
 3204: @c translations to turn @kbd{C-h} into @key{DEL} and @key{DEL} into
 3205: @c @kbd{C-h}, as follows:
 3206: Emacs内でこの問題を回避するには、@kbd{C-h}を@key{DEL}に、
 3207: @key{DEL}を@kbd{C-h}に変換するキーボード変換を
 3208: 以下のように
 3209: 設定することで回避できます。
 3210: 
 3211: @example
 3212: @c ;; @r{Translate @kbd{C-h} to @key{DEL}.}
 3213: ;; @r{@kbd{C-h}を@key{DEL}に変換する。}
 3214: (keyboard-translate ?\C-h ?\C-?)
 3215: 
 3216: @need 3000
 3217: @c ;; @r{Translate @key{DEL} to @kbd{C-h}.}
 3218: ;; @r{@key{DEL}を@kbd{C-h}に変換する。}
 3219: (keyboard-translate ?\C-? ?\C-h)
 3220: @end example
 3221: 
 3222: @c   Keyboard translations are not the same as key bindings in keymaps
 3223: @c (@pxref{Keymaps}).  Emacs contains numerous keymaps that apply in
 3224: @c different situations, but there is only one set of keyboard
 3225: @c translations, and it applies to every character that Emacs reads from
 3226: @c the terminal.  Keyboard translations take place at the lowest level of
 3227: @c input processing; the keys that are looked up in keymaps contain the
 3228: @c characters that result from keyboard translation.
 3229: キーボード変換はキーマップによるキーバインディング(@pxref{Keymaps})と
 3230: 同じではありません。
 3231: Emacsには状況ごとに使い分けられる多数のキーマップがあるのに対し、
 3232: キーボード変換は一式だけしかなく、
 3233: Emacsが端末から読むすべての文字に対してその変換が適用されます。
 3234: キーボード変換は入力処理のいちばん下位のレベルで行われ、
 3235: キーマップ上の検索はキーボード変換を施した結果に対して行われます。
 3236: 
 3237: @c   Under X, the keyboard key named @key{DELETE} is a function key and is
 3238: @c distinct from the ASCII character named @key{DEL}.  @xref{Named ASCII
 3239: @c Chars}.  Keyboard translations affect only ASCII character input, not
 3240: @c function keys; thus, the above example used under X does not affect the
 3241: @c @key{DELETE} key.  However, the translation above isn't necessary under
 3242: @c X, because Emacs can also distinguish between the @key{BACKSPACE} key
 3243: @c and @kbd{C-h}; and it normally treats @key{BACKSPACE} as @key{DEL}.
 3244: Xウィンドウシステムでは@key{DELETE}というキーはファンクションキーであり、
 3245: ASCII文字@key{DEL}とは別ものです。
 3246: @xref{Named ASCII Chars}。
 3247: キーボード変換はASCII文字入力だけに適用され、
 3248: ファンクションキーとは無関係ですから、
 3249: Xウィンドウシステムでは上の例は@key{DELETE}キーに対して効果をもたらしません。
 3250: しかし、Xウィンドウシステムでは上のようなキーボード変換そのものが不要です。
 3251: というのは、EmacsはXウィンドウシステムでは
 3252: @key{BACKSPACE}キーと@kbd{C-h}も区別でき、
 3253: 通常、@key{BAKSPACE}を@key{DEL}として扱うからです。
 3254: 
 3255: @c   For full information about how to use keyboard translations, see
 3256: @c @ref{Translating Input,,,elisp, The Emacs Lisp Reference Manual}.
 3257: キーボード変換の使い方に関する詳しい情報は、
 3258: @ref{Translating Input,, 入力イベントの変換, elisp,
 3259: Emacs Lisp リファレンスマニュアル}を
 3260: 参照してください。
 3261: 
 3262: @node Syntax, Init File, Keyboard Translations, Customization
 3263: @c @section The Syntax Table
 3264: @section 構文テーブル
 3265: @c @cindex syntax table
 3266: @cindex 構文テーブル
 3267: 
 3268: @c   All the Emacs commands which parse words or balance parentheses are
 3269: @c controlled by the @dfn{syntax table}.  The syntax table says which
 3270: @c characters are opening delimiters, which are parts of words, which are
 3271: @c string quotes, and so on.  Each major mode has its own syntax table
 3272: @c (though sometimes related major modes use the same one) which it
 3273: @c installs in each buffer that uses that major mode.  The syntax table
 3274: @c installed in the current buffer is the one that all commands use, so we
 3275: @c call it ``the'' syntax table.  A syntax table is a Lisp object, a
 3276: @c char-table, whose elements are numbers.
 3277: 単語や対応した括弧の対を認識するEmacsコマンドはすべて、
 3278: @dfn{構文テーブル}(syntax table)によって制御されます。
 3279: 構文テーブルは、どの文字が開き括弧で、どの文字が単語の中身で、
 3280: どの文字がシングルクォートかといったことを記述しています。
 3281: 各メジャーモードにはそれぞれ専用の構文テーブルがあり
 3282: (ただし、互いに関係のあるメジャーモードが
 3283: 1つの構文テーブルを共用することはある)、
 3284: 各バッファごとにそのときのメジャーモードの構文テーブルが使われます。
 3285: カレントバッファに設定されている構文テーブルはすべてのコマンドが使うので、
 3286: 以下ではこれを『現在の』構文テーブルと呼びます。
 3287: 構文テーブルは文字テーブル(char-table)型のLispオブジェクトであり、
 3288: その要素は数値です。
 3289: 
 3290: @kindex C-h s
 3291: @findex describe-syntax
 3292: @c   To display a description of the contents of the current syntax table,
 3293: @c type @kbd{C-h s} (@code{describe-syntax}).  The description of each
 3294: @c character includes both the string you would have to give to
 3295: @c @code{modify-syntax-entry} to set up that character's current syntax,
 3296: @c and some English to explain that string if necessary.
 3297: 現在の構文テーブルの内容に関する記述を表示するには、
 3298: @kbd{C-h s}(@code{descirbe-syntax})を使います。
 3299: 記述の表示には各文字ごとに、
 3300: その文字の現在の構文を設定するために@code{modify-syntax-entry}に
 3301: 渡すべき文字列、および、その文字列の英語での説明が含まれます。
 3302: 
 3303: @c   For full information on the syntax table, see @ref{Syntax Tables,,
 3304: @c Syntax Tables, elisp, The Emacs Lisp Reference Manual}.
 3305: 構文テーブルに関する詳しい情報については、
 3306: @ref{Syntax Tables,, 構文テーブル, elisp,
 3307: Emacs Lisp リファレンスマニュアル}を
 3308: 参照してください。
 3309: 
 3310: @node Init File,  , Syntax, Customization
 3311: @c @section The Init File, @file{~/.emacs}
 3312: @section 初期化ファイル@file{~/.emacs}
 3313: @c @cindex init file
 3314: @c @cindex Emacs initialization file
 3315: @c @cindex key rebinding, permanent
 3316: @c @cindex rebinding keys, permanently
 3317: @c @cindex startup (init file)
 3318: @cindex 初期化ファイル
 3319: @cindex Emacs初期化ファイル
 3320: @cindex キーバインディングの恒久的な変更
 3321: @cindex 実行開始(初期化ファイル)
 3322: 
 3323: @c   When Emacs is started, it normally loads a Lisp program from the file
 3324: @c @file{.emacs} or @file{.emacs.el} in your home directory.  We call this
 3325: @c file your @dfn{init file} because it specifies how to initialize Emacs
 3326: @c for you.  You can use the command line switch @samp{-q} to prevent
 3327: @c loading your init file, and @samp{-u} (or @samp{--user}) to specify a
 3328: @c different user's init file (@pxref{Entering Emacs}).
 3329: Emacsが実行を開始するとき、通常はユーザーのホームディレクトリにある
 3330: ファイル@file{.emacs}や@file{.emacs.el}からLispプログラムをロードします。
 3331: このファイルがEmacsの初期化の仕方を指定するので、
 3332: このファイルのことを@dfn{初期化ファイル}(init file)と呼びます。
 3333: コマンド行オプション@samp{-q}で、
 3334: Emacsに初期化ファイルを読まないことを指示したり、
 3335: @samp{-u}(あるいは@samp{--user})で、
 3336: 別のユーザーの初期化ファイルを指定できます
 3337: (@pxref{Entering Emacs})。
 3338: 
 3339: @c   There can also be a @dfn{default init file}, which is the library
 3340: @c named @file{default.el}, found via the standard search path for
 3341: @c libraries.  The Emacs distribution contains no such library; your site
 3342: @c may create one for local customizations.  If this library exists, it is
 3343: @c loaded whenever you start Emacs (except when you specify @samp{-q}).
 3344: @c But your init file, if any, is loaded first; if it sets
 3345: @c @code{inhibit-default-init} non-@code{nil}, then @file{default} is not
 3346: @c loaded.
 3347: @dfn{デフォルトの初期化ファイル}もあります。
 3348: これは@file{default.el}という名前のライブラリファイルで、
 3349: Emacsはライブラリ探索パスをとおしてその場所を探します。
 3350: Emacsの配布には@file{default.el}は含まれていません。
 3351: ローカルなカスタマイズのためにサイトで@file{default.el}を
 3352: 用意することもあります。
 3353: このファイルがあれば(@samp{-q}を指定したときを除いて)
 3354: Emacsを開始するときつねにロードされます。
 3355: しかし、あるならば個人の初期化ファイルが最初にロードされます。
 3356: その中で@code{inhibit-default-init}に@code{nil}以外の値を設定すると、
 3357: @file{default.el}はロードされません。
 3358: 
 3359: @c   Your site may also have a @dfn{site startup file}; this is named
 3360: @c @file{site-start.el}, if it exists.  Emacs loads this library before it
 3361: @c loads your init file.  To inhibit loading of this library, use the
 3362: @c option @samp{-no-site-file}.
 3363: 各サイトには@dfn{サイトスタートアップファイル}があるかもしれません。
 3364: あるならば、このファイルの名前は@file{site-start.el}です。
 3365: Emacsはユーザーの初期化ファイルを読むまえにこのファイルもロードします。
 3366: このファイルのロードを抑止するには、
 3367: オプション@samp{-no-site-file}を指定します。
 3368: 
 3369: @c   If you have a large amount of code in your @file{.emacs} file, you
 3370: @c should rename it to @file{~/.emacs.el}, and byte-compile it.  @xref{Byte
 3371: @c Compilation,, Byte Compilation, elisp, the Emacs Lisp Reference Manual},
 3372: @c for more information about compiling Emacs Lisp programs.
 3373: @file{.emacs}に大量のコードがある場合には、
 3374: @file{~/.emacs.el}と改名してバイトコンパイルしておくべきです。
 3375: Emacs Lispプログラムのコンパイルについてより詳しくは、
 3376: @xref{Byte Compilation,, バイトコンパイル, elisp,
 3377: Emacs Lisp リファレンスマニュアル}。
 3378: 
 3379: @c   If you are going to write actual Emacs Lisp programs that go beyond
 3380: @c minor customization, you should read the @cite{Emacs Lisp Reference Manual}.
 3381: 単なるカスタマイズを超えるような実際のEmacsプログラムを書くのであれば、
 3382: @cite{The Emacs Lisp Reference Manual}@footnote{【訳注】日本語訳:
 3383: 『Emacs Lispリファレンスマニュアル』、アスキー出版局、ISBN4-7561-3414-9
 3384: }を読むべきです。
 3385: @ifinfo
 3386: @c @xref{Top, Emacs Lisp, Emacs Lisp, elisp, the Emacs Lisp Reference
 3387: @c Manual}.
 3388: @xref{Top, Emacs Lisp, Emacs Lisp, elisp, The Emacs Lisp Reference Manual}。
 3389: @end ifinfo
 3390: 
 3391: @menu
 3392: * Init Syntax::	        Syntax of constants in Emacs Lisp.
 3393: * Init Examples::       How to do some things with an init file.
 3394: * Terminal Init::       Each terminal type can have an init file.
 3395: * Find Init::	        How Emacs finds the init file.
 3396: @end menu
 3397: 
 3398: @node Init Syntax, Init Examples, , Init File
 3399: @c @subsection Init File Syntax
 3400: @subsection 初期化ファイルの構文
 3401: 
 3402: @c   The @file{.emacs} file contains one or more Lisp function call
 3403: @c expressions.  Each of these consists of a function name followed by
 3404: @c arguments, all surrounded by parentheses.  For example, @code{(setq
 3405: @c fill-column 60)} calls the function @code{setq} to set the variable
 3406: @c @code{fill-column} (@pxref{Filling}) to 60.
 3407: ファイル@file{.emacs}にはLispの関数呼び出し式を書きます。
 3408: 関数呼び出しは、関数名に続けて引数リストを並べ、全体を括弧で囲みます。
 3409: たとえば、@code{(setq fill-column 60)}は、
 3410: 関数@code{setq}によって、変数@code{fill-column}(@pxref{Filling})に
 3411: 60を設定します。
 3412: 
 3413: @c   The second argument to @code{setq} is an expression for the new value of
 3414: @c the variable.  This can be a constant, a variable, or a function call
 3415: @c expression.  In @file{.emacs}, constants are used most of the time.  They can be:
 3416: @code{setq}の2番目の引数は変数の新しい値を表す式です。
 3417: これは、定数でも、変数でも、関数呼び出し式でもかまいません。
 3418: @file{.emacs}ファイルでは定数を使うことがもっとも多いでしょう。
 3419: 定数にはつぎのものがあります。
 3420: 
 3421: @table @asis
 3422: @c @item Numbers:
 3423: @item 数値:
 3424: @c Numbers are written in decimal, with an optional initial minus sign.
 3425: 数値は10進表記し、先頭にマイナス符号があってもよい。
 3426: 
 3427: @c @item Strings:
 3428: @c @cindex Lisp string syntax
 3429: @c @cindex string syntax
 3430: @item 文字列:
 3431: @cindex Lispの文字列の構文
 3432: @cindex 文字列の構文
 3433: @c Lisp string syntax is the same as C string syntax with a few extra
 3434: @c features.  Use a double-quote character to begin and end a string constant.
 3435: Lispの文字列の構文はCの文字列の構文とほぼ同じだが、多少違うところもある。
 3436: 文字列定数の始まりと終りにはダブルクォートを使う。
 3437: 
 3438: @c In a string, you can include newlines and special characters literally.
 3439: @c But often it is cleaner to use backslash sequences for them: @samp{\n}
 3440: @c for newline, @samp{\b} for backspace, @samp{\r} for carriage return,
 3441: @c @samp{\t} for tab, @samp{\f} for formfeed (control-L), @samp{\e} for
 3442: @c escape, @samp{\\} for a backslash, @samp{\"} for a double-quote, or
 3443: @c @samp{\@var{ooo}} for the character whose octal code is @var{ooo}.
 3444: @c Backslash and double-quote are the only characters for which backslash
 3445: @c sequences are mandatory.
 3446: 文字列の中には、改行や特殊文字をそのまま入れることができる。
 3447: しかし、バックスラッシュで始まる形式、つまり、
 3448: 改行は@samp{\n}、バックスペースは@samp{\b}、
 3449: 復帰は@samp{\r}、タブは@samp{\t}、ページ送りは@samp{\f}(コントロールL)、
 3450: エスケープは@samp{\e}、バックスラッシュは@samp{\\}、
 3451: ダブルクォートは@samp{\"}、8進コード@var{ooo}の文字は@samp{\@var{ooo}}で
 3452: 表すことができ、そのほうが読みやすい。
 3453: バックスラッシュとダブルクォートの2つだけは、
 3454: 文字列に含めるのに必ずこのような形で書き表す必要がある。
 3455: 
 3456: @c @samp{\C-} can be used as a prefix for a control character, as in
 3457: @c @samp{\C-s} for ASCII control-S, and @samp{\M-} can be used as a prefix for
 3458: @c a Meta character, as in @samp{\M-a} for @kbd{Meta-A} or @samp{\M-\C-a} for
 3459: @c @kbd{Control-Meta-A}.@refill
 3460: @samp{\C-}はコントロール文字を表すプレフィックスとして使用できる。
 3461: たとえば、@samp{\C-s}でASCIIのコントロールSを表す。
 3462: 同様に、@samp{\M-}はメタ文字を表すプレフィックスとして使用できる。
 3463: たとえば、@samp{\M-a}で@kbd{Meta-A}、
 3464: @samp{\M-\C-a}で@kbd{Control-Meta-A}を表す。
 3465: 
 3466: @c @item Characters:
 3467: @item 文字:
 3468: @c Lisp character constant syntax consists of a @samp{?} followed by
 3469: @c either a character or an escape sequence starting with @samp{\}.
 3470: @c Examples: @code{?x}, @code{?\n}, @code{?\"}, @code{?\)}.  Note that
 3471: @c strings and characters are not interchangeable in Lisp; some contexts
 3472: @c require one and some contexts require the other.
 3473: Lispの文字定数は、@samp{?}に続けて文字または@samp{\}で始まる
 3474: エスケープシーケンスを書いたもの。
 3475: たとえば、@code{?x}、@code{?\n}、@code{?\)}などは文字定数。
 3476: Lispでは文字と文字列は別ものなので注意すること。
 3477: ある場面では文字列が必要であり、別の場面では文字が必要である。
 3478: 
 3479: @c @item True:
 3480: @item 真:
 3481: @c @code{t} stands for `true'.
 3482: @code{t}は「真」を表す。
 3483: 
 3484: @c @item False:
 3485: @item 偽:
 3486: @c @code{nil} stands for `false'.
 3487: @code{nil}は「偽」を表す。
 3488: 
 3489: @c @item Other Lisp objects:
 3490: @item その他のLispオブジェクト:
 3491: @c Write a single-quote (') followed by the Lisp object you want.
 3492: シングルクォートに続けてそのLispオブジェクトを書く。
 3493: @end table
 3494: 
 3495: @node Init Examples, Terminal Init, Init Syntax, Init File
 3496: @c @subsection Init File Examples
 3497: @subsection 初期化ファイルの例
 3498: 
 3499: @c   Here are some examples of doing certain commonly desired things with
 3500: @c Lisp expressions:
 3501: 以下にはよく使われるLispの式の例をあげておきます。
 3502: 
 3503: @itemize @bullet
 3504: @item
 3505: @c Make @key{TAB} in C mode just insert a tab if point is in the middle of a
 3506: @c line.
 3507: Cモードにおいて、行の途中で@key{TAB}が押されたときには
 3508: タブ文字を挿入するように設定する。
 3509: 
 3510: @example
 3511: (setq c-tab-always-indent nil)
 3512: @end example
 3513: 
 3514: @c Here we have a variable whose value is normally @code{t} for `true'
 3515: @c and the alternative is @code{nil} for `false'.
 3516: 変数の値を「真」にするには@code{t}を設定し、
 3517: 逆に「偽」にするには@code{nil}を設定する。
 3518: 
 3519: @item
 3520: @c Make searches case sensitive by default (in all buffers that do not
 3521: @c override this).
 3522: 探索をデフォルトで大文字小文字を区別するように設定する
 3523: (ただし、違う設定に変更しているバッファは除く)。
 3524: 
 3525: @example
 3526: (setq-default case-fold-search nil)
 3527: @end example
 3528: 
 3529: @c This sets the default value, which is effective in all buffers that do
 3530: @c not have local values for the variable.  Setting @code{case-fold-search}
 3531: @c with @code{setq} affects only the current buffer's local value, which
 3532: @c is not what you probably want to do in an init file.
 3533: ここでは@code{setq-default}で変数のデフォルト値を設定し、
 3534: その変数に対してローカルな値を設定していないすべてのバッファで有効である。
 3535: @code{setq}で@code{case-fold-search}に値を設定すると、
 3536: カレントバッファのローカルな値だけに影響し、
 3537: 初期化ファイルで記述したいこととは異なるだろう。
 3538: 
 3539: @item
 3540: @vindex user-mail-address
 3541: @c Specify your own email address, if Emacs can't figure it out correctly.
 3542: Emacsが自動的にメイルアドレスを割り出せない場合に備え、
 3543: この変数に自分のメイルアドレスを指定する。
 3544: 
 3545: @example
 3546: (setq user-mail-address "coon@@yoyodyne.com")
 3547: @end example
 3548: 
 3549: @c Various Emacs packages that need your own email address use the value of
 3550: @c @code{user-mail-address}.
 3551: メイルアドレスを必要とする多くのEmacsパッケージは、
 3552: @code{user-mail-address}の値を使う。
 3553: 
 3554: @item
 3555: @c Make Text mode the default mode for new buffers.
 3556: 新たに作ったバッファのデフォルトのモードをテキストモードにする。
 3557: 
 3558: @example
 3559: (setq default-major-mode 'text-mode)
 3560: @end example
 3561: 
 3562: @c Note that @code{text-mode} is used because it is the command for
 3563: @c entering Text mode.  The single-quote before it makes the symbol a
 3564: @c constant; otherwise, @code{text-mode} would be treated as a variable
 3565: @c name.
 3566: @code{text-mode}を指定しているのは、
 3567: これがテキストモードに入るためのコマンドだから。
 3568: コマンド名のまえのシングルクォートは、シンボルを定数として扱うため。
 3569: さもないと@code{text-mode}という変数を参照することになってしまう。
 3570: 
 3571: @need 1500
 3572: @item
 3573: @c Set up defaults for the Latin-1 character set
 3574: @c which supports most of the languages of Western Europe.
 3575: 西ヨーロッパのほとんどの言語を扱えるLatin-1文字集合をデフォルトとする
 3576: @footnote{【訳注】日本語環境を設定するには、
 3577: @example
 3578: (set-language-environment "Japanese")
 3579: @end example
 3580: とする。}。
 3581: 
 3582: @example
 3583: (set-language-environment "Latin-1")
 3584: @end example
 3585: 
 3586: @need 1500
 3587: @item
 3588: @c Turn on Auto Fill mode automatically in Text mode and related modes.
 3589: テキストモードやそれに関連するモードでは、自動詰め込みモードをオンにする。
 3590: 
 3591: @example
 3592: (add-hook 'text-mode-hook
 3593:   '(lambda () (auto-fill-mode 1)))
 3594: @end example
 3595: 
 3596: @c This shows how to add a hook function to a normal hook variable
 3597: @c (@pxref{Hooks}).  The function we supply is a list starting with
 3598: @c @code{lambda}, with a single-quote in front of it to make it a list
 3599: @c constant rather than an expression.
 3600: これはノーマルフック変数(@pxref{Hooks})にフック関数を追加する例。
 3601: ここでは関数として@code{lambda}で始まるリストを指定し、
 3602: シングルクォートを前置して式ではなく定数として扱わせる。
 3603: 
 3604: @c It's beyond the scope of this manual to explain Lisp functions, but for
 3605: @c this example it is enough to know that the effect is to execute
 3606: @c @code{(auto-fill-mode 1)} when Text mode is entered.  You can replace
 3607: @c that with any other expression that you like, or with several
 3608: @c expressions in a row.
 3609: Lispの関数について説明するのは本書の範囲外だが、
 3610: この例を理解するには、テキストモードに入るときに
 3611: @code{(auto-fill-mode 1)}が実行されるのだと考えておけば十分。
 3612: この式を別の式に変えたり、式を複数並べてもかまわない。
 3613: 
 3614: @c Emacs comes with a function named @code{turn-on-auto-fill} whose
 3615: @c definition is @code{(lambda () (auto-fill-mode 1))}.  Thus, a simpler
 3616: @c way to write the above example is as follows:
 3617: Emacsには@code{turn-on-auto-fill}という関数が用意されており、
 3618: その定義は@code{(lambda () (auto-fill-mode 1))}になっている。
 3619: したがって、上の例をもっと簡単に書くとつぎのようになる。
 3620: 
 3621: @example
 3622: (add-hook 'text-mode-hook 'turn-on-auto-fill)
 3623: @end example
 3624: 
 3625: @item
 3626: @c Load the installed Lisp library named @file{foo} (actually a file
 3627: @c @file{foo.elc} or @file{foo.el} in a standard Emacs directory).
 3628: あらかじめ用意してあるLispライブラリ@file{foo}
 3629: (実際には標準Emacsディレクトリに置かれたファイル@file{foo.elc}
 3630: または@file{foo.el})をロードする。
 3631: 
 3632: @example
 3633: (load "foo")
 3634: @end example
 3635: 
 3636: @c When the argument to @code{load} is a relative file name, not starting
 3637: @c with @samp{/} or @samp{~}, @code{load} searches the directories in
 3638: @c @code{load-path} (@pxref{Lisp Libraries}).
 3639: @code{load}に渡す引数が相対ファイル名、つまり、
 3640: @samp{/}や@samp{~}で始まらない場合には、
 3641: @code{load}は@code{load-path}(@pxref{Lisp Libraries})の
 3642: ディレクトリ群を順に探索する。
 3643: 
 3644: @item
 3645: @c Load the compiled Lisp file @file{foo.elc} from your home directory.
 3646: 自分のホームディレクトリにあるコンパイル済みのLispファイル@file{foo.elc}を
 3647: ロードする。
 3648: 
 3649: @example
 3650: (load "~/foo.elc")
 3651: @end example
 3652: 
 3653: @c Here an absolute file name is used, so no searching is done.
 3654: ここでは絶対ファイル名が使われているので、探索は行わない。
 3655: 
 3656: @item
 3657: @c Rebind the key @kbd{C-x l} to run the function @code{make-symbolic-link}.
 3658: キー@kbd{C-x l}で関数@code{make-symbolic-link}が実行されるように
 3659: バインディングを設定する。
 3660: 
 3661: @example
 3662: (global-set-key "\C-xl" 'make-symbolic-link)
 3663: @end example
 3664: 
 3665: @c or
 3666: または
 3667: 
 3668: @example
 3669: (define-key global-map "\C-xl" 'make-symbolic-link)
 3670: @end example
 3671: 
 3672: @c Note once again the single-quote used to refer to the symbol
 3673: @c @code{make-symbolic-link} instead of its value as a variable.
 3674: ここでもシンボル@code{make-symbolic-link}を変数としての値ではなく
 3675: 定数とするためにシングルクォートが使われていることに注意。
 3676: 
 3677: @item
 3678: @c Do the same thing for Lisp mode only.
 3679: 上と同じだが、Lispモードの中だけでのバインディングを設定する。
 3680: 
 3681: @example
 3682: (define-key lisp-mode-map "\C-xl" 'make-symbolic-link)
 3683: @end example
 3684: 
 3685: @item
 3686: @c Redefine all keys which now run @code{next-line} in Fundamental mode
 3687: @c so that they run @code{forward-line} instead.
 3688: 基本(fundamental)モードで@code{next-line}を
 3689: 実行するようになっているすべてのキーを、
 3690: かわりに@code{forward-line}を実行するように直す。
 3691: 
 3692: @example
 3693: (substitute-key-definition 'next-line 'forward-line
 3694:                            global-map)
 3695: @end example
 3696: 
 3697: @item
 3698: @c Make @kbd{C-x C-v} undefined.
 3699: @kbd{C-x C-v}を未定義にする。
 3700: 
 3701: @example
 3702: (global-unset-key "\C-x\C-v")
 3703: @end example
 3704: 
 3705: @c One reason to undefine a key is so that you can make it a prefix.
 3706: @c Simply defining @kbd{C-x C-v @var{anything}} will make @kbd{C-x C-v} a
 3707: @c prefix, but @kbd{C-x C-v} must first be freed of its usual non-prefix
 3708: @c definition.
 3709: キーを未定義にする必要のある場合の1つとして、
 3710: そのキーをプレフィックスにしたい場合がある。
 3711: たとえば、@kbd{C-x C-v @var{anything}}を定義すると、
 3712: @kbd{C-x C-v}は自動的プレフィックスになるが、
 3713: しかしそのまえに@kbd{C-x C-v}の通常の(プレフィックスではない)定義を
 3714: 未定義に戻しておく必要がある。
 3715: 
 3716: @item
 3717: @c Make @samp{$} have the syntax of punctuation in Text mode.
 3718: @c Note the use of a character constant for @samp{$}.
 3719: @samp{$}をテキスト(text)モードでの区切り文字にする。
 3720: @samp{$}を文字定数として指定していることに注意。
 3721: 
 3722: @example
 3723: (modify-syntax-entry ?\$ "." text-mode-syntax-table)
 3724: @end example
 3725: 
 3726: @item
 3727: @c Enable the use of the command @code{narrow-to-region} without confirmation.
 3728: コマンド@code{narrow-to-region}を確認なしに使えるようにする。
 3729: 
 3730: @example
 3731: (put 'narrow-to-region 'disabled nil)
 3732: @end example
 3733: @end itemize
 3734: 
 3735: @node Terminal Init, Find Init, Init Examples, Init File
 3736: @c @subsection Terminal-specific Initialization
 3737: @subsection 端末に固有の初期化
 3738: 
 3739: @c   Each terminal type can have a Lisp library to be loaded into Emacs when
 3740: @c it is run on that type of terminal.  For a terminal type named
 3741: @c @var{termtype}, the library is called @file{term/@var{termtype}} and it is
 3742: @c found by searching the directories @code{load-path} as usual and trying the
 3743: @c suffixes @samp{.elc} and @samp{.el}.  Normally it appears in the
 3744: @c subdirectory @file{term} of the directory where most Emacs libraries are
 3745: @c kept.@refill
 3746: 各端末種別ごとに、Emacsがその端末で動くときにロードするライブラリを
 3747: 指定できます。
 3748: つまり、@var{termtype}という名前の端末でEmacsを起動するときには、
 3749: @file{term/@var{termtype}}というライブラリがロードされます。
 3750: ライブラリの探索は通常どおり
 3751: @code{load-path}の各ディレクトリに対して行われ、
 3752: ファイルの拡張子は@samp{.elc}か@samp{.el}です。
 3753: 通常、これらのライブラリはほとんどの
 3754: Emacsライブラリを収めたディレクトリの下の@file{term}という
 3755: サブディレクトリに置かれます。
 3756: 
 3757: @c   The usual purpose of the terminal-specific library is to map the
 3758: @c escape sequences used by the terminal's function keys onto more
 3759: @c meaningful names, using @code{function-key-map}.  See the file
 3760: @c @file{term/lk201.el} for an example of how this is done.  Many function
 3761: @c keys are mapped automatically according to the information in the
 3762: @c Termcap data base; the terminal-specific library needs to map only the
 3763: @c function keys that Termcap does not specify.
 3764: 端末固有のライブラリの普通の用途は、端末のファンクションキーによって
 3765: 送出されるエスケープシーケンスを@code{function-key-map}を使って意味の
 3766: ある名前に対応付けることです。
 3767: このような設定を行うファイルの例として、たとえば
 3768: ファイル@file{term/kl201.el}を見てみてください。
 3769: 多くのファンクションキーはtermcapデータベースの情報に
 3770: 基づいて自動的に対応付けがなされます。
 3771: 端末固有ライブラリでは、termcapで指定されていないファンクションキー
 3772: だけを対応付ければよいのです。
 3773: 
 3774: @c   When the terminal type contains a hyphen, only the part of the name
 3775: @c before the first hyphen is significant in choosing the library name.
 3776: @c Thus, terminal types @samp{aaa-48} and @samp{aaa-30-rv} both use
 3777: @c the library @file{term/aaa}.  The code in the library can use
 3778: @c @code{(getenv "TERM")} to find the full terminal type name.@refill
 3779: 端末種別にハイフンが含まれている場合は、
 3780: ライブラリ名の選択には最初のハイフンよりまえの部分だけが使われます。
 3781: つまり、端末種別@samp{aaa-48}と@samp{aaa-30-rv}では、
 3782: どちらも@file{term/aaa}をロードします。
 3783: ライブラリ中のコードでは@code{(getenv "TERM")}を
 3784: 使って必要なら完全な端末種別名を取得できます。
 3785: 
 3786: @vindex term-file-prefix
 3787: @c   The library's name is constructed by concatenating the value of the
 3788: @c variable @code{term-file-prefix} and the terminal type.  Your @file{.emacs}
 3789: @c file can prevent the loading of the terminal-specific library by setting
 3790: @c @code{term-file-prefix} to @code{nil}.
 3791: 端末ライブラリの名前は、変数@code{term-file-prefix}と端末種別とを
 3792: 連結して作られます。
 3793: ファイル@file{.emacs}中で@code{term-file-prefix}を
 3794: @code{nil}に設定すると端末ライブラリのロードを抑止できます。
 3795: 
 3796: @vindex term-setup-hook
 3797: @c   Emacs runs the hook @code{term-setup-hook} at the end of
 3798: @c initialization, after both your @file{.emacs} file and any
 3799: @c terminal-specific library have been read in.  Add hook functions to this
 3800: @c hook if you wish to override part of any of the terminal-specific
 3801: @c libraries and to define initializations for terminals that do not have a
 3802: @c library.  @xref{Hooks}.
 3803: Emacsは@file{.emacs}と端末ライブラリを読んだあと、
 3804: 初期化の最後にフック@code{term-setup-hook}を実行します。
 3805: 端末ライブラリによる指定を一部変更したり、
 3806: 端末ライブラリがない端末の初期設定を行いたければ、
 3807: このフックにフック関数を追加してください。
 3808: @xref{Hooks}。
 3809: 
 3810: @node Find Init,  , Terminal Init, Init File
 3811: @c @subsection How Emacs Finds Your Init File
 3812: @subsection 個人の初期化ファイルの探し方
 3813: 
 3814: @c   Normally Emacs uses the environment variable @code{HOME} to find
 3815: @c @file{.emacs}; that's what @samp{~} means in a file name.  But if you
 3816: @c have done @code{su}, Emacs tries to find your own @file{.emacs}, not
 3817: @c that of the user you are currently pretending to be.  The idea is
 3818: @c that you should get your own editor customizations even if you are
 3819: @c running as the super user.
 3820: 通常、Emacsは環境変数@code{HOME}に基づいて@file{.emacs}を探し、
 3821: ファイル名の@samp{~}の意味を定めます。
 3822: しかし、@code{su}を実行したあとでは、Emacsは(su実行前の)
 3823: もとのユーザーの@file{.emacs}を読もうとし、
 3824: suした先のユーザーのではありません。
 3825: これは、たとえスーパーユーザーになっているとしても、
 3826: 本来のユーザー独自のエディタのカスタマイズを使うべきだと考えるからです。
 3827: 
 3828: @c   More precisely, Emacs first determines which user's init file to use.
 3829: @c It gets the user name from the environment variables @code{LOGNAME} and
 3830: @c @code{USER}; if neither of those exists, it uses effective user-ID.
 3831: @c If that user name matches the real user-ID, then Emacs uses @code{HOME};
 3832: @c otherwise, it looks up the home directory corresponding to that user
 3833: @c name in the system's data base of users.
 3834: @c @c  LocalWords:  backtab
 3835: より正確には、Emacsはまずどのユーザーの初期化ファイルを使うかを決めます。
 3836: それにはまず環境変数@code{LOGNAME}および@code{USER}からユーザー名を取得します。
 3837: これらの環境変数がみつからなければ、Emacsは実効ユーザーIDを参照します。
 3838: ユーザー名と実ユーザーIDが一致すれば、Emacsは@code{HOME}を利用します。
 3839: 一致しない場合は、システムのユーザーデータベースから
 3840: そのユーザー名に対応するホームディレクトリを探して使用します。

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>