@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998 Free Software Foundation, Inc. 
@c See the file elisp.texi for copying conditions.
@setfilename ../info/display
@node Display, Calendar, System Interface, Top
@c @chapter Emacs Display
@chapter Emacsの画面表示

@c   This chapter describes a number of features related to the display
@c that Emacs presents to the user.
本章では、Emacsがユーザーに提示する画面表示に関連する
さまざまな機能について述べます。

@menu
* Refresh Screen::      Clearing the screen and redrawing everything on it.
* Truncation::          Folding or wrapping long text lines.
* The Echo Area::       Where messages are displayed.
* Invisible Text::      Hiding part of the buffer text.
* Selective Display::   Hiding part of the buffer text (the old way).
* Overlay Arrow::       Display of an arrow to indicate position.
* Temporary Displays::  Displays that go away automatically.
* Overlays::		Use overlays to highlight parts of the buffer.
* Width::               How wide is a character or string.
* Faces::		A face defines a graphics appearance: font, color, etc.
* Blinking::            How Emacs shows the matching open parenthesis.
* Inverse Video::	Specifying how the screen looks.
* Usual Display::	The usual conventions for displaying nonprinting chars.
* Display Tables::	How to specify other conventions.
* Beeping::             Audible signal to the user.
* Window Systems::      Which window system is being used.
@end menu

@node Refresh Screen, Truncation, Display, Display
@c @section Refreshing the Screen
@section スクリーン全体の再表示

@c The function @code{redraw-frame} redisplays the entire contents of a
@c given frame (@pxref{Frames}).
関数@code{redraw-frame}は、指定したフレーム（@pxref{Frames}）の
内容全体を再表示します。

@c Emacs 19 feature
@defun redraw-frame frame
@c This function clears and redisplays frame @var{frame}.
この関数は、フレーム@var{frame}をクリアしてから再表示する。
@end defun

@c Even more powerful is @code{redraw-display}:
より強力なのは@code{redraw-display}です。

@c @deffn Command redraw-display
@deffn コマンド redraw-display
@c This function clears and redisplays all visible frames.
この関数は、すべての可視フレームをクリアしてから再表示する。
@end deffn

@c   Processing user input takes absolute priority over redisplay.  If you
@c call these functions when input is available, they do nothing
@c immediately, but a full redisplay does happen eventually---after all the
@c input has been processed.
ユーザー入力の処理のほうが再表示より絶対的に優先します。
入力があるときにこれらの関数を呼び出してもただちにはなにもしませんが、
入力をすべて処理し終えてから再表示します。

@c   Normally, suspending and resuming Emacs also refreshes the screen.
@c Some terminal emulators record separate contents for display-oriented
@c programs such as Emacs and for ordinary sequential display.  If you are
@c using such a terminal, you might want to inhibit the redisplay on
@c resumption.
通常、Emacsを停止したり再開しても
スクリーン全体を再表示します。
Emacsのようなディスプレイ向けプログラムと通常の逐次表示向けに、
表示内容を個別に記録できる端末エミュレータもあります。
そのような端末を使っているときには、
再開時の再表示を禁止した場合もあります。

@defvar no-redraw-on-reenter
@c @cindex suspend (cf. @code{no-redraw-on-reenter})
@c @cindex resume (cf. @code{no-redraw-on-reenter})
@cindex 停止（@code{no-redraw-on-reenter}を参照 ）
@cindex 再開（@code{no-redraw-on-reenter}を参照 ）
@c This variable controls whether Emacs redraws the entire screen after it
@c has been suspended and resumed.  Non-@code{nil} means there is no need
@c to redraw, @code{nil} means redrawing is needed.  The default is @code{nil}.
この変数は、停止後に再開したあとで、
スクリーン全体を再表示するかどうかを制御する。
@code{nil}以外であると再描画の必要はないことを意味し、
@code{nil}であると再描画が必要であることを意味する。
デフォルトは@code{nil}である。
@end defvar

@node Truncation, The Echo Area, Refresh Screen, Display
@c @section Truncation
@section 表示の切り詰め
@c @cindex line wrapping
@c @cindex continuation lines
@c @cindex @samp{$} in display
@c @cindex @samp{\} in display
@cindex 行の折り返し
@cindex 継続行
@cindex @samp{$}、画面表示
@cindex 画面表示の@samp{$}
@cindex @samp{\}、画面表示
@cindex 画面表示の@samp{\}

@c   When a line of text extends beyond the right edge of a window, the
@c line can either be continued on the next screen line, or truncated to
@c one screen line.  The additional screen lines used to display a long
@c text line are called @dfn{continuation} lines.  Normally, a @samp{$} in
@c the rightmost column of the window indicates truncation; a @samp{\} on
@c the rightmost column indicates a line that ``wraps'' onto the next line,
@c which is also called @dfn{continuing} the line.  (The display table can
@c specify alternative indicators; see @ref{Display Tables}.)
テキスト行がウィンドウの右端を越えていると、
その行をつぎのスクリーン行へ継続するか、
スクリーン行1行に切り詰めます。
長いテキスト行を表示するために使われる追加のスクリーン行を
@dfn{継続}行と呼びます。
通常、ウィンドウの最右端のコラムに現れる@samp{$}で切り詰めたことを示し、
@samp{\}でつぎの行に『折り返した』こと、
つまり、@dfn{継続している}行であることを示します。
（表示テーブルで別の文字を指定できる。
@ref{Display Tables}を参照。）

@c   Note that continuation is different from filling; continuation happens
@c on the screen only, not in the buffer contents, and it breaks a line
@c precisely at the right margin, not at a word boundary.  @xref{Filling}.
継続することと詰め込みは別のことです。
継続はスクリーン上だけのことであり、バッファ内容は変わりません。
また、継続では単語の境界ではなく、正確にスクリーンの右端で
行を分けます。
@xref{Filling}。

@defopt truncate-lines
@c This buffer-local variable controls how Emacs displays lines that extend
@c beyond the right edge of the window.  The default is @code{nil}, which
@c specifies continuation.  If the value is non-@code{nil}, then these
@c lines are truncated.
このバッファローカルな変数は、
ウィンドウの右端を越える行をどのように表示するかを制御する。
デフォルトは@code{nil}であり継続を意味する。
値が@code{nil}以外であると、そのような行を切り詰める。

@c If the variable @code{truncate-partial-width-windows} is non-@code{nil},
@c then truncation is always used for side-by-side windows (within one
@c frame) regardless of the value of @code{truncate-lines}.
変数@code{truncate-partial-width-windows}が@code{nil}以外であると、
（フレーム内で）左右に並んだウィンドウでは、
@code{truncate-lines}の値に関わらずつねに切り詰る。
@end defopt

@defopt default-truncate-lines
@c This variable is the default value for @code{truncate-lines}, for
@c buffers that do not have buffer-local values for it.
この変数は、@code{truncate-lines}のバッファローカルな値を持たない
バッファ向けの@code{truncate-lines}のデフォルト値である。
@end defopt

@defopt truncate-partial-width-windows
@c This variable controls display of lines that extend beyond the right
@c edge of the window, in side-by-side windows (@pxref{Splitting Windows}).
@c If it is non-@code{nil}, these lines are truncated; otherwise,
@c @code{truncate-lines} says what to do with them.
この変数は、左右に並んだウィンドウ（@pxref{Splitting Windows}）において、
ウィンドウの右端を越える行の表示を制御する。
@code{nil}以外であると、そのような行を切り詰める。
さもなければ、@code{truncate-lines}に従って表示する。
@end defopt

@c   When horizontal scrolling (@pxref{Horizontal Scrolling}) is in use in
@c a window, that forces truncation.
ウィンドウで水平方向にスクロールしている（@pxref{Horizontal Scrolling}）と、
強制的に切り詰めます。

@c   You can override the glyphs that indicate continuation or truncation
@c using the display table; see @ref{Display Tables}.
継続や切り詰めを表す文字は、表示テーブルを使って変更できます。
@xref{Display Tables}。

@c   If your buffer contains @emph{very} long lines, and you use
@c continuation to display them, just thinking about them can make Emacs
@c redisplay slow.  The column computation and indentation functions also
@c become slow.  Then you might find it advisable to set
@c @code{cache-long-line-scans} to @code{t}.
バッファに@emph{とても}長い行があるときにそれらの表示に継続行を使うと、
それによりEmacsの再表示が遅くなります。
コラム計算や字下げ関数も遅くなります。
そのような場合には、@code{cache-long-line-scans}に@code{t}を
設定するのがよいです。

@defvar cache-long-line-scans
@c If this variable is non-@code{nil}, various indentation and motion
@c functions, and Emacs redisplay, cache the results of scanning the
@c buffer, and consult the cache to avoid rescanning regions of the buffer
@c unless they are modified.
この変数が@code{nil}以外であると、
字下げ／移動関数とEmacsの再表示において、
バッファを走査した結果をキャッシュし、
バッファが変更されていないときには
キャッシュを調べてバッファの対象領域の再走査を回避する。

@c Turning on the cache slows down processing of short lines somewhat.
キャッシュするようにすると、短い行の処理が多少遅くなる。

@c This variable is automatically buffer-local in every buffer.
この変数は、すべてのバッファで自動的にバッファローカルである。
@end defvar

@node The Echo Area, Invisible Text, Truncation, Display
@c @section The Echo Area
@section エコー領域
@c @cindex error display
@c @cindex echo area
@cindex エコー表示
@cindex エコー領域

@c The @dfn{echo area} is used for displaying messages made with the
@c @code{message} primitive, and for echoing keystrokes.  It is not the
@c same as the minibuffer, despite the fact that the minibuffer appears
@c (when active) in the same place on the screen as the echo area.  The
@c @cite{GNU Emacs Manual} specifies the rules for resolving conflicts
@c between the echo area and the minibuffer for use of that screen space
@c (@pxref{Minibuffer,, The Minibuffer, emacs, The GNU Emacs Manual}).
@c Error messages appear in the echo area; see @ref{Errors}.
@dfn{エコー領域}（echo area）は、
基本関数@code{message}でメッセージを表示したり、
打鍵を表示するために使われます。
（活性な）ミニバッファはエコー領域と
同じスクリーン上の位置に現れますが、
エコー領域とミニバッファは同じものではありません。
@cite{GNU Emacs マニュアル}には、
エコー領域とミニバッファがスクリーンの同じ箇所を使う際の
衝突を回避する規則が述べてあります
（@pxref{Minibuffer,, ミニバッファ, emacs, GNU Emacs マニュアル}）。
エラーメッセージもエコー領域に現れます。
@xref{Errors}。

@c You can write output in the echo area by using the Lisp printing
@c functions with @code{t} as the stream (@pxref{Output Functions}), or as
@c follows:
エコー領域に表示するには、
ストリーム（@pxref{Output Functions}）として
@code{t}を指定したLisp表示関数を使うか、あるいはつぎのようにします。

@defun message string &rest arguments
@c This function displays a one-line message in the echo area.  The
@c argument @var{string} is similar to a C language @code{printf} control
@c string.  See @code{format} in @ref{String Conversion}, for the details
@c on the conversion specifications.  @code{message} returns the
@c constructed string.
この関数は、エコー領域に1行のメッセージを表示する。
引数@var{string}は、言語Cの@code{printf}の制御文字列と同様である。
書式指定について詳しくは、@ref{String Conversion}の
@code{format}を参照。
@code{message}は構築した文字列を返す。

@c In batch mode, @code{message} prints the message text on the standard
@c error stream, followed by a newline.
バッチモードでは、@code{message}はメッセージテキストと改行を
標準エラーストリームへ出力する。

@c @c Emacs 19 feature
@c If @var{string} is @code{nil}, @code{message} clears the echo area.  If
@c the minibuffer is active, this brings the minibuffer contents back onto
@c the screen immediately.
@var{string}が@code{nil}であると、
@code{message}はエコー領域をクリアする。
ミニバッファが活性であると、
これによりミニバッファの内容がスクリーンにただちに表示される。

@example
@group
(message "Minibuffer depth is %d."
         (minibuffer-depth))
 @print{} Minibuffer depth is 0.
@result{} "Minibuffer depth is 0."
@end group

@group
---------- Echo Area ----------
Minibuffer depth is 0.
---------- Echo Area ----------
@end group
@end example
@end defun

@defun message-or-box string &rest arguments
@c This function displays a message like @code{message}, but may display it
@c in a dialog box instead of the echo area.  If this function is called in
@c a command that was invoked using the mouse---more precisely, if
@c @code{last-nonmenu-event} (@pxref{Command Loop Info}) is either
@c @code{nil} or a list---then it uses a dialog box or pop-up menu to
@c display the message.  Otherwise, it uses the echo area.  (This is the
@c same criterion that @code{y-or-n-p} uses to make a similar decision; see
@c @ref{Yes-or-No Queries}.)
この関数は@code{message}と同様にメッセージを表示するが、
エコー領域のかわりに対話ボックスを使うこともある。
この関数がマウスを用いて起動されたコマンドから呼ばれたとき、
より正確には、@code{last-nonmenu-event}（@pxref{Command Loop Info}）が
@code{nil}かリストのいずれかであると、
メッセージを表示するために対話ボックスかポップアップメニューを用いる。
さもなければエコー領域を用いる。
（これは、同様な決定をくだす@code{y-or-n-p}の判定条件と同じである。
@pxref{Yes-or-No Queries}。）

@c You can force use of the mouse or of the echo area by binding
@c @code{last-nonmenu-event} to a suitable value around the call.
呼び出しの周りで@code{last-nonmenu-event}に適切な値を束縛することで、
マウスを使うかエコー領域を使うか強制できる。
@end defun

@defun message-box string &rest arguments
@c This function displays a message like @code{message}, but uses a dialog
@c box (or a pop-up menu) whenever that is possible.  If it is impossible
@c to use a dialog box or pop-up menu, because the terminal does not
@c support them, then @code{message-box} uses the echo area, like
@c @code{message}.
この関数は@code{message}と同様にメッセージを表示するが、
可能な限り対話ボックス（やポップアップメニュー）を使う。
対話ボックスやポップアップメニューを扱えない端末などで
これらを使用できない場合には、
@code{message-box}は@code{message}と同様にエコー領域を使う。
@end defun

@defun current-message
@tindex current-message
@c This function returns the message currently being displayed in the
@c echo area, or @code{nil} if there is none.
この関数は、エコー領域に現在表示されているメッセージを返す。
なければ@code{nil}を返す。
@end defun

@defvar cursor-in-echo-area
@c This variable controls where the cursor appears when a message is
@c displayed in the echo area.  If it is non-@code{nil}, then the cursor
@c appears at the end of the message.  Otherwise, the cursor appears at
@c point---not in the echo area at all.
この変数は、エコー領域にメッセージを表示しているときに
カーソルをどこに表示するかを制御する。
@code{nil}以外であると、メッセージの末尾にカーソルを表示する。
さもなければ、エコー領域にではなく、ポイント位置にカーソルを表示する。

@c The value is normally @code{nil}; Lisp programs bind it to @code{t}
@c for brief periods of time.
この値は普通は@code{nil}である。
Lispプログラムはこれに@code{t}を短い期間だけ束縛する。
@end defvar

@defvar echo-area-clear-hook
@tindex echo-area-clear-hook
@c This normal hook is run whenever the echo area is cleared---either by
@c @code{(message nil)} or for any other reason.
このノーマルフックは、@code{(message nil)}や他の理由で
エコー領域をクリアするたびに実行される。
@end defvar

@c Almost all the messages displayed in the echo area are also recorded
@c in the @samp{*Messages*} buffer.
エコー領域に表示したほとんどすべてのメッセージは
バッファ@samp{*Messages*}にも記録されます。

@defopt message-log-max
@c This variable specifies how many lines to keep in the @samp{*Messages*}
@c buffer.  The value @code{t} means there is no limit on how many lines to
@c keep.  The value @code{nil} disables message logging entirely.  Here's
@c how to display a message and prevent it from being logged:
この変数は、バッファ@samp{*Messages*}に保持する行数を指定する。
値@code{t}は、保持する行数を制限しないことを意味する。
値@code{nil}は、メッセージをまったく記録しないことを意味する。
メッセージを表示しつつそれを記録しないようにするには
つぎのようにする。

@example
(let (message-log-max)
  (message @dots{}))
@end example
@end defopt

@defvar echo-keystrokes
@c This variable determines how much time should elapse before command
@c characters echo.  Its value must be an integer, which specifies the
@c number of seconds to wait before echoing.  If the user types a prefix
@c key (such as @kbd{C-x}) and then delays this many seconds before
@c continuing, the prefix key is echoed in the echo area.  (Once echoing
@c begins in a key sequence, all subsequent characters in the same key
@c sequence are echoed immediately.)
この変数は、コマンド文字を表示するまでの経過時間を決定する。
この値は整数であり、表示し始めるまでに待つ秒数を指定する。
ユーザーが（@kbd{C-x}などの）プレフィックスキーを打ってから
つぎを打つまでにこの秒数だけ遅れがあると、
プレフィックスキーをエコー領域に表示する。
（いったんキー列の表示を始めると、
同じキー列の以降の文字すべてを表示する。）

@c If the value is zero, then command input is not echoed.
値がゼロであると、コマンド入力を表示しない。
@end defvar

@node Invisible Text, Selective Display, The Echo Area, Display
@c @section Invisible Text
@section 不可視なテキスト

@c @cindex invisible text
@cindex 不可視なテキスト
@c You can make characters @dfn{invisible}, so that they do not appear on
@c the screen, with the @code{invisible} property.  This can be either a
@c text property (@pxref{Text Properties}) or a property of an overlay
@c (@pxref{Overlays}).
属性@code{invisible}で文字群を@dfn{不可視}にできます。
つまり、それらをスクリーンに表示されないようにするのです。
テキスト属性（@pxref{Text Properties}）か
オーバレイの属性（@pxref{Overlays}）を使います。

@c In the simplest case, any non-@code{nil} @code{invisible} property makes
@c a character invisible.  This is the default case---if you don't alter
@c the default value of @code{buffer-invisibility-spec}, this is how the
@c @code{invisible} property works.
もっとも単純な場合、
属性@code{invisible}が@code{nil}以外であると文字は見えなくなります。
これはデフォルトの場合、つまり、
@code{buffer-invisibility-spec}のデフォルト値を変更していない場合であり、
このようにして属性@code{invisible}は動作します。

@c More generally, you can use the variable @code{buffer-invisibility-spec}
@c to control which values of the @code{invisible} property make text
@c invisible.  This permits you to classify the text into different subsets
@c in advance, by giving them different @code{invisible} values, and
@c subsequently make various subsets visible or invisible by changing the
@c value of @code{buffer-invisibility-spec}.
より一般的には、変数@code{buffer-invisibility-spec}を使って、
属性@code{invisible}のどの値のものを不可視なテキストにするかを制御できます。
つまり、@code{invisible}の異なる値を与えて
テキストをあらかじめいくつかのグループに分類しておき、
そのあとで@code{buffer-invisibility-spec}の値を変更して
さまざまなグループを可視／不可視にします。

@c Controlling visibility with @code{buffer-invisibility-spec} is
@c especially useful in a program to display the list of entries in a data
@c base.  It permits the implementation of convenient filtering commands to
@c view just a part of the entries in the data base.  Setting this variable
@c is very fast, much faster than scanning all the text in the buffer
@c looking for properties to change.
@code{buffer-invisibility-spec}で可視性を制御することは、
データベースの項目の一覧を表示するようなプログラムで特に有用です。
データベースの特定の項目だけを見るための
便利なフィルタコマンドを実装できます。
この変数に設定するのはとても速くでき、
変更すべき属性を探すためにバッファ内の全テキストを走査するよりも速いのです。

@defvar buffer-invisibility-spec
@c This variable specifies which kinds of @code{invisible} properties
@c actually make a character invisible.
この変数は、属性@code{invisible}のどの種類を実際に
不可視な文字にするかを指定する。

@table @asis
@item @code{t}
@c A character is invisible if its @code{invisible} property is
@c non-@code{nil}.  This is the default.
属性@code{invisible}が@code{nil}以外の文字を不可視にする。
これがデフォルト。

@c @item a list
@item リスト
@c Each element of the list specifies a criterion for invisibility; if a
@c character's @code{invisible} property fits any one of these criteria,
@c the character is invisible.  The list can have two kinds of elements:
リストの各要素で不可視にする条件を指定する。
文字の属性@code{invisible}がこれらの条件の1つを満たすと、
その文字を不可視にする。
リストには2種類の要素がありうる。

@table @code
@item @var{atom}
@c A character is invisible if its @code{invisible} property value
@c is @var{atom} or if it is a list with @var{atom} as a member.
文字の属性@code{invisible}の値が@var{atom}であるか、
そのリストのメンバに@var{atom}があると、
文字を不可視にする。

@item (@var{atom} . t)
@c A character is invisible if its @code{invisible} property value
@c is @var{atom} or if it is a list with @var{atom} as a member.
@c Moreover, if this character is at the end of a line and is followed
@c by a visible newline, it displays an ellipsis.
文字の属性@code{invisible}の値が@var{atom}であるか、
そのリストのメンバに@var{atom}があると、
文字を不可視にする。
さらに、その文字が行末にあり、直後に目に見える改行がある場合には、
@samp{@dots{}}を表示する。
@end table
@end table
@end defvar

@c   Two functions are specifically provided for adding elements to
@c @code{buffer-invisibility-spec} and removing elements from it.
@code{buffer-invisibility-spec}に要素を追加したり削除するために
2つの関数が特別にあります。

@defun add-to-invisibility-spec element
@tindex add-to-invisibility-spec
@c Add the element @var{element} to @code{buffer-invisibility-spec}
@c (if it is not already present in that list).
（リストに@var{element}が既存でなければ）
@code{buffer-invisibility-spec}に要素@var{element}を追加する。
@end defun

@defun remove-from-invisibility-spec element
@tindex remove-from-invisibility-spec
@c Remove the element @var{element} from @code{buffer-invisibility-spec}.
@code{buffer-invisibility-spec}から要素@var{element}を削除する。
@end defun

@c   One convention about the use of @code{buffer-invisibility-spec} is
@c that a major mode should use the mode's own name as an element of
@c @code{buffer-invisibility-spec} and as the value of the @code{invisible}
@c property:
@code{buffer-invisibility-spec}の使い方の慣習の1つに、
メジャーモードでは
@code{buffer-invisibility-spec}の1要素と属性@code{invisible}の値に
モード自体の名前を使うべきであるというのがあります。

@example
@c ;; @r{If you want to display an ellipsis:}
;; @r{@samp{@dots{}}を表示したければ}
(add-to-invisibility-spec '(my-symbol . t)) 
@c ;; @r{If you don't want ellipsis:}
;; @r{@samp{@dots{}}を表示しくなければ}
(add-to-invisibility-spec 'my-symbol) 

(overlay-put (make-overlay beginning end)
             'invisible 'my-symbol)

@c ;; @r{When done with the overlays:}
;; @r{オーバレイを終了したら}
(remove-from-invisibility-spec '(my-symbol . t))
@c ;; @r{Or respectively:}
;; @r{同じように}
(remove-from-invisibility-spec 'my-symbol)
@end example

@vindex line-move-ignore-invisible
@c   Ordinarily, commands that operate on text or move point do not care
@c whether the text is invisible.  The user-level line motion commands
@c explicitly ignore invisible newlines if
@c @code{line-move-ignore-invisible} is non-@code{nil}, but only because
@c they are explicitly programmed to do so.
普通、テキストを操作したりポイントを移動するコマンドは、
テキストの可視性に注意しません。
ユーザーレベルの移動コマンドは、
@code{line-move-ignore-invisible}が@code{nil}以外であれば
不可視な改行を明示的に無視しますが、
それはそのように明示的にプログラムしてあるからにすぎません。

@c   Incremental search can make invisible overlays visible temporarily
@c and/or permanently when a match includes invisible text.  To enable
@c this, the overlay should have a non-@code{nil}
@c @code{isearch-open-invisible} property.  The property value should be a
@c function to be called with the overlay as an argument.  This function
@c should make the overlay visible permanently; it is used when the match
@c overlaps the overlay on exit from the search.
インクリメンタルサーチでは、
不可視なテキストを含む一致箇所では、
不可視なオーバレイを一時的にあるいは恒久的に可視にできます。
これを可能にするには、オーバレイの属性@code{isearch-open-invisible}が
@code{nil}以外である必要があります。
その属性の値は、オーバレイを引数として呼ばれる関数である必要があります。
その関数がオーバレイを恒久的に可視にします。
その関数は、探索から抜けるときに一致箇所が
オーバレイにまたがっているときに使われます。

@c   During the search, such overlays are made temporarily visible by
@c temporarily modifying their invisible and intangible properties.  If you
@c want this to be done differently for a certain overlay, give it an
@c @code{isearch-open-invisible-temporary} property which is a function.
@c The function is called with two arguments: the first is the overlay, and
@c the second is @code{t} to make the overlay visible, or @code{nil} to
@c make it invisible again.
探索中には、そのようなオーバレイは、
それらの属性@code{invisible}と@code{intangible}を一時的に変更することで
一時的に可視にされます。
特定のオーバレイに対して異なる扱いをしたければ、
属性@code{isearch-open-invisible-temporary}に関数を与えておきます。
その関数は2つの引数で呼ばれます。
第1引数はオーバレイ、
第2引数は、オーバレイを可視にする@code{t}、あるいは、
オーバレイを再度不可視にする@code{nil}です。

@node Selective Display, Overlay Arrow, Invisible Text, Display
@c @section Selective Display
@section 選択表示
@c @cindex selective display
@cindex 選択表示

@c   @dfn{Selective display} refers to a pair of related features for
@c hiding certain lines on the screen.
@dfn{選択表示}とは、
スクリーン上の特定の行を隠すための関連する機能対を指します。

@c   The first variant, explicit selective display, is designed for use in
@c a Lisp program: it controls which lines are hidden by altering the text.
@c The invisible text feature (@pxref{Invisible Text}) has partially
@c replaced this feature.
最初の変種は、明示的な選択表示で、
Lispプログラムで使用するために設計されています。
テキストを変更することでどの行を隠すかを制御します。
テキストを不可視にする機能（@pxref{Invisible Text}）は、
この機能で部分的に置き換えてあります。

@c   In the second variant, the choice of lines to hide is made
@c automatically based on indentation.  This variant is designed to be a
@c user-level feature.
2番目の変種は、字下げに基づいて自動的に隠す行を選択します。
この変種は、ユーザーレベルの機能であるように設計されています。

@c   The way you control explicit selective display is by replacing a
@c newline (control-j) with a carriage return (control-m).  The text that
@c was formerly a line following that newline is now invisible.  Strictly
@c speaking, it is temporarily no longer a line at all, since only newlines
@c can separate lines; it is now part of the previous line.
明示的な選択表示を制御するには、
改行（コントロールJ）を復帰（コントロールM）に置き換えます。
置換前の改行に続いていたそれまでの行は見えなくなります。
厳密にいえば、改行だけが行を区切るため、
一時的にはもう行ではなくなっているのです。
つまり、先行する行の一部になっているのです。

@c   Selective display does not directly affect editing commands.  For
@c example, @kbd{C-f} (@code{forward-char}) moves point unhesitatingly into
@c invisible text.  However, the replacement of newline characters with
@c carriage return characters affects some editing commands.  For example,
@c @code{next-line} skips invisible lines, since it searches only for
@c newlines.  Modes that use selective display can also define commands
@c that take account of the newlines, or that make parts of the text
@c visible or invisible.
選択表示は、編集コマンドに直接には影響しません。
たとえば、@kbd{C-f}（@code{forward-char}）は
躊躇なく不可視なテキストの中へポイントを移動します。
しかし、改行文字を復帰文字に置換すると
影響を受ける編集コマンドもあります。
たとえば、@code{next-line}は、
改行だけを探すため不可視な行を飛び越してしまいます。
選択表示を使用するモードでは、
改行を考慮するようにコマンドを定義したり、
テキストの一部を可視／不可視にするコマンドを定義できます。

@c   When you write a selectively displayed buffer into a file, all the
@c control-m's are output as newlines.  This means that when you next read
@c in the file, it looks OK, with nothing invisible.  The selective display
@c effect is seen only within Emacs.
選択表示しているバッファをファイルに書き出すときには、
すべてのコントロールM（復帰）は改行として出力されます。
つまり、つぎにファイルを読み込むと不可視なものはなく、
普通に見えるのです。
選択表示の効果は、Emacsの内側だけで見えるのです。

@defvar selective-display
@c This buffer-local variable enables selective display.  This means that
@c lines, or portions of lines, may be made invisible.  
このバッファローカルな変数は、選択表示をオンにする。
つまり、行や行の一部を不可視にできる。

@itemize @bullet
@item
@c If the value of @code{selective-display} is @code{t}, then any portion
@c of a line that follows a control-m is not displayed.  This is explicit
@c selective display.
@code{selective-display}の値が@code{t}であると、
行内のコントロールM（復帰）以降の部分を表示しない。
これは明示的な選択表示である。

@item
@c If the value of @code{selective-display} is a positive integer, then
@c lines that start with more than that many columns of indentation are not
@c displayed.
@code{selective-display}の値が正整数であると、
字下げのコラム幅がその数より大きな行を表示しない。
@end itemize

@c When some portion of a buffer is invisible, the vertical movement
@c commands operate as if that portion did not exist, allowing a single
@c @code{next-line} command to skip any number of invisible lines.
@c However, character movement commands (such as @code{forward-char}) do
@c not skip the invisible portion, and it is possible (if tricky) to insert
@c or delete text in an invisible portion.
バッファのある部分が不可視であると、
垂直方向に移動するコマンドは、
その部分が存在しないがごとく動作し、
1つのコマンド@code{next-line}で任意個数の不可視行を飛び越えられる。
しかし、（@code{forward-char}などの）
文字単位の移動コマンドは不可視な部分を無視せず、
不可視な部分へのテキストの挿入／削除は可能である。

@c In the examples below, we show the @emph{display appearance} of the
@c buffer @code{foo}, which changes with the value of
@c @code{selective-display}.  The @emph{contents} of the buffer do not
@c change.
つぎの例では、@code{selective-display}の値を変えて
バッファ@code{foo}の@emph{見た目}を示す。
バッファの@emph{内容}に変更はない。

@example
@group
(setq selective-display nil)
     @result{} nil

---------- Buffer: foo ----------
1 on this column
 2on this column
  3n this column
  3n this column
 2on this column
1 on this column
---------- Buffer: foo ----------
@end group

@group
(setq selective-display 2)
     @result{} 2

---------- Buffer: foo ----------
1 on this column
 2on this column
 2on this column
1 on this column
---------- Buffer: foo ----------
@end group
@end example
@end defvar

@defvar selective-display-ellipses
@c If this buffer-local variable is non-@code{nil}, then Emacs displays
@c @samp{@dots{}} at the end of a line that is followed by invisible text.
@c This example is a continuation of the previous one.
このバッファローカルな変数が@code{nil}以外であると、
不可視なテキストが続く行末に@samp{@dots{}}を表示する。
つぎの例は、上の例の続きである。

@example
@group
(setq selective-display-ellipses t)
     @result{} t

---------- Buffer: foo ----------
1 on this column
 2on this column ...
 2on this column
1 on this column
---------- Buffer: foo ----------
@end group
@end example

@c You can use a display table to substitute other text for the ellipsis
@c (@samp{@dots{}}).  @xref{Display Tables}.
表示テーブルを使って@samp{@dots{}}にかわる別のテキストを指定できる。
@pxref{Display Tables}。
@end defvar

@node Overlay Arrow, Temporary Displays, Selective Display, Display
@c @section The Overlay Arrow
@section オーバレイ矢印
@c @cindex overlay arrow
@cindex オーバレイ矢印

@c   The @dfn{overlay arrow} is useful for directing the user's attention
@c to a particular line in a buffer.  For example, in the modes used for
@c interface to debuggers, the overlay arrow indicates the line of code
@c about to be executed.
@dfn{オーバレイ矢印}（overlay arrow）は、
バッファの特定の行にユーザーの注意を向けるために有用です。
たとえば、デバッガとのインターフェイスを取るためのモードでは、
オーバレイ矢印で実行するコードの行を示します。

@defvar overlay-arrow-string
@c This variable holds the string to display to call attention to a
@c particular line, or @code{nil} if the arrow feature is not in use.
この変数は、特定の行に注意を向けるために表示する文字列を保持する。
矢印機能を使っていなければ@code{nil}である。
@end defvar

@defvar overlay-arrow-position
@c This variable holds a marker that indicates where to display the overlay
@c arrow.  It should point at the beginning of a line.  The arrow text
@c appears at the beginning of that line, overlaying any text that would
@c otherwise appear.  Since the arrow is usually short, and the line
@c usually begins with indentation, normally nothing significant is
@c overwritten.
この変数は、オーバレイ矢印を表示する箇所を表すマーカを保持する。
行頭を指すこと。
矢印のテキストはその行の先頭に現れ、
その場所に本来現れるべきテキストを隠す。
矢印は普通は短く、行には字下げがあるので、
重要なものは普通はなにも上書きされない。

@c The overlay string is displayed only in the buffer that this marker
@c points into.  Thus, only one buffer can have an overlay arrow at any
@c given time.
オーバレイ文字列は、マーカが指すバッファでのみ表示される。
したがって、ある時点では、1つのバッファだけにオーバレイ矢印を表示できる。
@c !!! overlay-arrow-position: but the overlay string may remain in the display
@c of some other buffer until an update is required.  This should be fixed
@c now.  Is it?
@end defvar

@c   You can do a similar job by creating an overlay with a
@c @code{before-string} property.  @xref{Overlay Properties}.
同様のことは、属性@code{before-string}のオーバレイを
作成してもできます。
@xref{Overlay Properties}。

@node Temporary Displays, Overlays, Overlay Arrow, Display
@c @section Temporary Displays
@section 一時的な表示

@c   Temporary displays are used by Lisp programs to put output into a
@c buffer and then present it to the user for perusal rather than for
@c editing.  Many help commands use this feature.
一時的な表示は、
出力をバッファに置き編集目的にではなく
ユーザーに読むように提示するために
Lispプログラムが使います。

@defspec with-output-to-temp-buffer buffer-name forms@dots{}
@c This function executes @var{forms} while arranging to insert any
@c output they print into the buffer named @var{buffer-name}.  The buffer
@c is then shown in some window for viewing, displayed but not selected.
この関数は、@var{buffer-name}という名前のバッファに
@var{forms}の任意の出力が挿入されるように準備して
@var{forms}を実行する。
そのバッファは適当なウィンドウに表示されるが、
そのバッファは選択されない。

@c The string @var{buffer-name} specifies the temporary buffer, which
@c need not already exist.  The argument must be a string, not a buffer.
@c The buffer is erased initially (with no questions asked), and it is
@c marked as unmodified after @code{with-output-to-temp-buffer} exits.
文字列@var{buffer-name}は、既存である必要はない一時的なバッファを指定する。
引数は、バッファではなく文字列であること。
（問い合わせずに）はじめにバッファを消去し、
@code{with-output-to-temp-buffer}が終了すると未変更と印を付ける。

@c @code{with-output-to-temp-buffer} binds @code{standard-output} to the
@c temporary buffer, then it evaluates the forms in @var{forms}.  Output
@c using the Lisp output functions within @var{forms} goes by default to
@c that buffer (but screen display and messages in the echo area, although
@c they are ``output'' in the general sense of the word, are not affected).
@c @xref{Output Functions}.
@code{with-output-to-temp-buffer}は、
@code{standard-output}に一時的なバッファを束縛し、
@var{forms}のフォーム群を評価する。
@var{forms}内で用いたLisp出力関数からの出力は
デフォルトでそのバッファに入る
（しかし、スクリーン表示やエコー領域のメッセージは、
用語の一般的な意味で『出力』であるが、
影響されない。）
@pxref{Output Functions}。

@c The value of the last form in @var{forms} is returned.
@var{forms}の最後のフォームの値を返す。

@example
@group
---------- Buffer: foo ----------
 This is the contents of foo.
---------- Buffer: foo ----------
@end group

@group
(with-output-to-temp-buffer "foo"
    (print 20)
    (print standard-output))
@result{} #<buffer foo>

---------- Buffer: foo ----------
20

#<buffer foo>

---------- Buffer: foo ----------
@end group
@end example
@end defspec

@defvar temp-buffer-show-function
@c If this variable is non-@code{nil}, @code{with-output-to-temp-buffer}
@c calls it as a function to do the job of displaying a help buffer.  The
@c function gets one argument, which is the buffer it should display.
この変数が@code{nil}以外であると、
ヘルプバッファを表示するために
@code{with-output-to-temp-buffer}がこの値を関数として呼び出す。
関数は1つの引数、つまり、表示すべきバッファを受け取る。

@c It is a good idea for this function to run @code{temp-buffer-show-hook}
@c just as @code{with-output-to-temp-buffer} normally would, inside of
@c @code{save-window-excursion} and with the chosen window and buffer
@c selected.
この関数では、
@code{save-window-excursion}を使いウィンドウとバッファを選択した内側で、
@code{with-output-to-temp-buffer}が普通に行うように
@code{temp-buffer-show-hook}を呼び出すのがよい。
@end defvar

@defvar temp-buffer-show-hook
@c This normal hook is run by @code{with-output-to-temp-buffer} after
@c displaying the help buffer.  When the hook runs, the help buffer is
@c current, and the window it was displayed in is selected.
このノーマルフックは、ヘルプバッファを表示後に
@code{with-output-to-temp-buffer}が実行する。
フックを実行するときには、
ヘルプバッファがカレントバッファであり、
それを表示しているウィンドウが選択されているウィンドウである。
@end defvar

@defun momentary-string-display string position &optional char message
@c This function momentarily displays @var{string} in the current buffer at
@c @var{position}.  It has no effect on the undo list or on the buffer's
@c modification status.
この関数は、カレントバッファ内の位置@var{position}に
文字列@var{string}を瞬間的に表示する。
アンドゥリストやバッファの変更状態には影響しない。

@c The momentary display remains until the next input event.  If the next
@c input event is @var{char}, @code{momentary-string-display} ignores it
@c and returns.  Otherwise, that event remains buffered for subsequent use
@c as input.  Thus, typing @var{char} will simply remove the string from
@c the display, while typing (say) @kbd{C-f} will remove the string from
@c the display and later (presumably) move point forward.  The argument
@c @var{char} is a space by default.
瞬間的な表示は、つぎの入力イベントまで持続する。
つぎの入力イベントが@var{char}であると、
@code{momentary-string-display}はそれを無視して戻る。
さもなければ、そのイベントは入力として使われるように保存される。
したがって、@var{char}を打つと文字列の表示が単に消えるだけであるが、
（たとえば）@kbd{C-f}を打つと文字列の表示が消えるだけでなく
（たぶん）ポイントを進めることになる。
引数@var{char}はデフォルトでは空白である。

@c The return value of @code{momentary-string-display} is not meaningful.
@code{momentary-string-display}の戻り値に意味はない。

@c If the string @var{string} does not contain control characters, you can
@c do the same job in a more general way by creating (and then subsequently
@c deleting) an overlay with a @code{before-string} property.
@c @xref{Overlay Properties}.
文字列@var{string}にコントロール文字が含まれなければ、
属性@code{before-string}のオーバレイを作成（のちに削除）することで
より一般的な方法で同じことを行える。
@pxref{Overlay Properties}。

@c If @var{message} is non-@code{nil}, it is displayed in the echo area
@c while @var{string} is displayed in the buffer.  If it is @code{nil}, a
@c default message says to type @var{char} to continue.
@var{message}が@code{nil}以外であると、
@var{string}をバッファに表示中には、
@var{message}をエコー領域に表示する。
@code{nil}であると、デフォルトは
「継続するには文字@var{char}を打つこと」
といったメッセージである。

@c In this example, point is initially located at the beginning of the
@c second line:
つぎの例では、ポイントは始めは2行目の先頭に位置している。

@example
@group
---------- Buffer: foo ----------
This is the contents of foo.
@point{}Second line.
---------- Buffer: foo ----------
@end group

@group
(momentary-string-display
  "**** Important Message! ****"
  (point) ?\r
  "Type RET when done reading")
@result{} t
@end group

@group
---------- Buffer: foo ----------
This is the contents of foo.
**** Important Message! ****Second line.
---------- Buffer: foo ----------

---------- Echo Area ----------
Type RET when done reading
---------- Echo Area ----------
@end group
@end example
@end defun

@node Overlays, Width, Temporary Displays, Display
@c @section Overlays
@section オーバレイ
@c @cindex overlays
@cindex オーバレイ

@c You can use @dfn{overlays} to alter the appearance of a buffer's text on
@c the screen, for the sake of presentation features.  An overlay is an
@c object that belongs to a particular buffer, and has a specified
@c beginning and end.  It also has properties that you can examine and set;
@c these affect the display of the text within the overlay.
ユーザーに提示するためにスクリーン上でのバッファのテキストの見た目を
変えるために@dfn{オーバレイ}（overlay）を使えます。
オーバレイは、特定のバッファに属するオブジェクトであり、
指定された開始位置と終了位置があります。
また、調べたり設定できる属性もあります。
これらの属性は、オーバレイの内側のテキストの表示に影響します。

@menu
* Overlay Properties::	How to read and set properties.
			What properties do to the screen display.
* Managing Overlays::   Creating, moving, finding overlays.
@end menu

@node Overlay Properties, Managing Overlays, Overlays, Overlays
@c @subsection Overlay Properties
@subsection オーバレイ属性

@c Overlay properties are like text properties in that the properties that
@c alter how a character is displayed can come from either source.  But in
@c most respects they are different.  Text properties are considered a part
@c of the text; overlays are specifically considered not to be part of the
@c text.  Thus, copying text between various buffers and strings preserves
@c text properties, but does not try to preserve overlays.  Changing a
@c buffer's text properties marks the buffer as modified, while moving an
@c overlay or changing its properties does not.  Unlike text property
@c changes, overlay changes are not recorded in the buffer's undo list.
@c @xref{Text Properties}, for comparison.
オーバレイ属性はある意味でテキスト属性に似ていて、
どちらの属性でも文字の表示方法を変更できます。
しかし、多くの点で異なります。
テキスト属性は、テキストの一部であるとみなされますが、
オーバレイはテキストの一部とはみなしません。
したがって、さまざまなバッファや文字列のあいだでテキストをコピーしても
テキスト属性は保存されますが、オーバレイは保存されません。
バッファ内のテキスト属性を変更するとバッファを変更済みと印を付けますが、
オーバレイを移動したりその属性を変更しても
バッファの変更とは考えません。
テキスト属性の変更と異なり、
オーバレイの変更はバッファのアンドゥリストには記録されません。
比較のために@xref{Text Properties}。

@table @code
@item priority
@c @kindex priority @r{(overlay property)}
@kindex priority @r{（オーバレイ属性）}
@c This property's value (which should be a nonnegative number) determines
@c the priority of the overlay.  The priority matters when two or more
@c overlays cover the same character and both specify a face for display;
@c the one whose @code{priority} value is larger takes priority over the
@c other, and its face attributes override the face attributes of the lower
@c priority overlay.
この属性の値（非負の数であること）は、
オーバレイの優先順位を決定する。
優先順位は、複数のオーバレイが同じ文字を覆い、
いずれも表示用のフェイスを指定している場合に意味を持つ。
@code{priority}の値の大きなものが他に優先し、
そのフェイス属性が他の低い順位の属性のフェイス属性に優先する。

@c Currently, all overlays take priority over text properties.  Please
@c avoid using negative priority values, as we have not yet decided just
@c what they should mean.
現在、すべてのオーバレイ属性はテキスト属性に優先する。
負の優先順位の意味を決めかねているので、負の優先順位は避けてほしい。

@item window
@c @kindex window @r{(overlay property)}
@kindex window @r{（オーバレイ属性）}
@c If the @code{window} property is non-@code{nil}, then the overlay
@c applies only on that window.
属性@code{window}が@code{nil}以外であると、
オーバレイをそのウィンドウだけに適用する。

@item category
@c @kindex category @r{(overlay property)}
@kindex category @r{（オーバレイ属性）}
@c If an overlay has a @code{category} property, we call it the
@c @dfn{category} of the overlay.  It should be a symbol.  The properties
@c of the symbol serve as defaults for the properties of the overlay.
オーバレイに属性@code{category}があると、
それをオーバレイの@dfn{カテゴリ}（category）と呼ぶ。
これはシンボルであること。
シンボルの属性がオーバレイの属性のデフォルトの役割を果たす。

@item face
@c @kindex face @r{(overlay property)}
@kindex face @r{（オーバレイ属性）}
@c This property controls the way text is displayed---for example, which
@c font and which colors.  Its value is a face name or a list of face
@c names.  @xref{Faces}, for more information.
この属性は、テキストの表示方法、たとえば、
フォントや表示色を制御する。
その値は、フェイス名であるかフェイス名のリストである。
詳しくは、@pxref{Faces}。

@c If the property value is a list, elements may also have the form
@c @code{(foreground-color . @var{color-name})} or @code{(background-color
@c . @var{color-name})}.  These elements specify just the foreground color
@c or just the background color; therefore, there is no need to create a
@c face for each color that you want to use.
属性値がリストであると、その要素は、
@code{(foreground-color . @var{color-name})}か
@code{(background-color . @var{color-name})}の形でもよい。
これらの要素は、前景色だけや背景色だけを指定する。
したがって、使用する各色を表すフェイスを作成する必要はない。

@item mouse-face
@c @kindex mouse-face @r{(overlay property)}
@kindex mouse-face @r{（オーバレイ属性）}
@c This property is used instead of @code{face} when the mouse is within
@c the range of the overlay.
この属性は、マウスがオーバレイの範囲に入っているときに
@code{face}のかわりに使われる。

@item modification-hooks
@c @kindex modification-hooks @r{(overlay property)}
@kindex modification-hooks @r{（オーバレイ属性）}
@c This property's value is a list of functions to be called if any
@c character within the overlay is changed or if text is inserted strictly
@c within the overlay.
この属性の値は、オーバレイの内側の文字を変更したり、
オーバレイの内側にテキストを挿入したときに
呼び出される関数のリストである。

@c The hook functions are called both before and after each change.
@c If the functions save the information they receive, and compare notes
@c between calls, they can determine exactly what change has been made
@c in the buffer text.
フック関数は、各変更の前後に呼び出される。
関数が受け取った情報を保存し呼び出しごとに比較すれば
バッファテキストにどのような変更が行われたかを正確に判定できる。

@c When called before a change, each function receives four arguments: the
@c overlay, @code{nil}, and the beginning and end of the text range to be
@c modified.
変更前に呼ばれるときには、各関数は4つの引数を受け取る。
オーバレイ、@code{nil}、変更対象のテキスト範囲の先頭と末尾である。

@c When called after a change, each function receives five arguments: the
@c overlay, @code{t}, the beginning and end of the text range just
@c modified, and the length of the pre-change text replaced by that range.
@c (For an insertion, the pre-change length is zero; for a deletion, that
@c length is the number of characters deleted, and the post-change
@c beginning and end are equal.)
変更後に呼ばれるときには、各関数は5つの引数を受け取る。
オーバレイ、@code{t}、変更済みのテキスト範囲の先頭と末尾、
その範囲の変更前のテキストの長さである。
（挿入では変更前の長さはゼロである。
削除では変更前の長さは削除された文字数であり、
変更後の先頭位置と末尾位置は同じである。）

@item insert-in-front-hooks
@c @kindex insert-in-front-hooks @r{(overlay property)}
@kindex insert-in-front-hooks @r{（オーバレイ属性）}
@c This property's value is a list of functions to be called before and
@c after inserting text right at the beginning of the overlay.  The calling
@c conventions are the same as for the @code{modification-hooks} functions.
この属性の値は、オーバレイの開始位置へのテキスト挿入の前後に
呼び出される関数のリストである。
呼び出し方法は@code{modification-hooks}の関数群と同じである。

@item insert-behind-hooks
@c @kindex insert-behind-hooks @r{(overlay property)}
@kindex insert-behind-hooks @r{（オーバレイ属性）}
@c This property's value is a list of functions to be called before and
@c after inserting text right at the end of the overlay.  The calling
@c conventions are the same as for the @code{modification-hooks} functions.
この属性の値は、オーバレイの終了位置へのテキスト挿入の前後に
呼び出される関数のリストである。
呼び出し方法は@code{modification-hooks}の関数群と同じである。

@item invisible
@c @kindex invisible @r{(overlay property)}
@kindex invisible @r{（オーバレイ属性）}
@c The @code{invisible} property can make the text in the overlay
@c invisible, which means that it does not appear on the screen.
@c @xref{Invisible Text}, for details.
属性@code{invisible}は、オーバレイ内のテキストを不可視にする。
つまり、それらはスクリーン上に現れない。
詳しくは、@pxref{Invisible Text}。

@item intangible
@c @kindex intangible @r{(overlay property)}
@kindex intangible @r{（オーバレイ属性）}
@c The @code{intangible} property on an overlay works just like the
@c @code{intangible} text property.  @xref{Special Properties}, for details.
属性@code{intangible}は、オーバレイにおいて
テキスト属性@code{intangible}と同様に働く。
詳しくは、@pxref{Special Properties}。

@item isearch-open-invisible
@c This property tells incremental search how to make an invisible overlay
@c visible, permanently, if the final match overlaps it.  @xref{Invisible
@c Text}.
この属性は、インクリメンタルサーチに対して、
一致箇所がオーバレイに重なったときに
不可視なオーバレイを恒久的に可視にする方法を指示する。
@pxref{Invisible Text}。

@item isearch-open-invisible-temporary
@c This property tells incremental search how to make an invisible overlay
@c visible, temporarily, during the search.  @xref{Invisible Text}.
この属性は、インクリメンタルサーチに対して、
探索中に不可視なオーバレイを一時的に可視にする方法を指示する。
@pxref{Invisible Text}。

@item before-string
@c @kindex before-string @r{(overlay property)}
@kindex before-string @r{（オーバレイ属性）}
@c This property's value is a string to add to the display at the beginning
@c of the overlay.  The string does not appear in the buffer in any
@c sense---only on the screen.  The string should contain only characters
@c that display as a single column---control characters, including tabs or
@c newlines, will give strange results.
この属性の値は、オーバレイの先頭位置に追加表示する文字列である。
文字列はいかなる意味においてもバッファには現れず、
スクリーン上のみに現れる。
文字列は1コラムで表示される文字のみであること。
タブや改行を含むコントロール文字を含むと奇妙な結果を生じる。

@item after-string
@c @kindex after-string @r{(overlay property)}
@kindex after-string @r{（オーバレイ属性）}
@c This property's value is a string to add to the display at the end of
@c the overlay.  The string does not appear in the buffer in any
@c sense---only on the screen.  The string should contain only characters
@c that display as a single column---control characters, including tabs or
@c newlines, will give strange results.
この属性の値は、オーバレイの末尾位置に追加表示する文字列である。
文字列はいかなる意味においてもバッファには現れず、
スクリーン上のみに現れる。
文字列は1コラムで表示される文字のみであること。
タブや改行を含むコントロール文字を含むと奇妙な結果を生じる。

@item evaporate
@c @kindex evaporate @r{(overlay property)}
@kindex evaporate @r{（オーバレイ属性）}
@c If this property is non-@code{nil}, the overlay is deleted automatically
@c if it ever becomes empty (i.e., if it spans no characters).
この属性が@code{nil}以外であると、
オーバレイが空に（つまり覆う文字がなく）なると、
自動的にオーバレイを削除する。

@item local-map
@c @cindex keymap of character (and overlays)
@cindex 文字のキーマップ（オーバレイ属性）
@c @kindex local-map @r{(overlay property)}
@kindex local-map @r{（オーバレイ属性）}
@c If this property is non-@code{nil}, it specifies a keymap for a portion
@c of the text.  The property's value replaces the buffer's local map, when
@c the character after point is within the overlay.  @xref{Active Keymaps}.
この属性が@code{nil}以外であると、当該部分のテキストに対する
キーマップを指定する。
ポイントの直後の文字がオーバレイに入っていると、
属性の値はバッファローカルなキーマップに置き換わる。
@pxref{Active Keymaps}。
@end table

@c   These are the functions for reading and writing the properties of an
@c overlay.
つぎは、オーバレイの属性を読み書きするための関数です。

@defun overlay-get overlay prop
@c This function returns the value of property @var{prop} recorded in
@c @var{overlay}, if any.  If @var{overlay} does not record any value for
@c that property, but it does have a @code{category} property which is a
@c symbol, that symbol's @var{prop} property is used.  Otherwise, the value
@c is @code{nil}.
この関数は、オーバレイ@var{overlay}に記録されている
属性@var{prop}の値をあれば返す。
@var{overlay}にそのような属性に対する値が記録されていなくても、
属性@code{category}がありそれがシンボルであれば、
そのシンボルの属性@var{prop}を使う。
さもなければ値は@code{nil}である。
@end defun

@defun overlay-put overlay prop value
@c This function sets the value of property @var{prop} recorded in
@c @var{overlay} to @var{value}.  It returns @var{value}.
この関数は、オーバレイ@var{overlay}に属性@var{prop}の値として
@var{value}を設定する。
@var{value}を返す。
@end defun

@c   See also the function @code{get-char-property} which checks both
@c overlay properties and text properties for a given character.
@c @xref{Examining Properties}.
与えられた文字のオーバレイ属性とテキスト属性の両方を調べる
関数@code{get-char-property}も参照してください。
@xref{Examining Properties}。

@node Managing Overlays,  , Overlay Properties, Overlays
@c @subsection Managing Overlays
@subsection オーバレイの管理

@c   This section describes the functions to create, delete and move
@c overlays, and to examine their contents.
本節では、オーバレイを作成、削除、移動したり、
それらの内容を調べる関数について述べます。

@defun make-overlay start end &optional buffer front-advance rear-advance
@c This function creates and returns an overlay that belongs to
@c @var{buffer} and ranges from @var{start} to @var{end}.  Both @var{start}
@c and @var{end} must specify buffer positions; they may be integers or
@c markers.  If @var{buffer} is omitted, the overlay is created in the
@c current buffer.
この関数は、バッファ@var{buffer}に属する
@var{start}から@var{end}までを覆うオーバレイを作成しそれを返す。
@var{start}と@var{end}のどちらもバッファ内位置を指定する
整数かマーカであること。
@var{buffer}を省略すると、カレントバッファにオーバレイを作成する。

@c The arguments @var{front-advance} and @var{rear-advance} specify the
@c insertion type for the start of the overlay and for the end of the
@c overlay.  @xref{Marker Insertion Types}.
引数@var{front-advance}と@var{rear-advance}は、
オーバレイの開始位置と終了位置における挿入型を指定する。
@pxref{Marker Insertion Types}。
@end defun

@defun overlay-start overlay
@c This function returns the position at which @var{overlay} starts,
@c as an integer.
この関数は、オーバレイ@var{overlay}の開始位置を整数で返す。
@end defun

@defun overlay-end overlay
@c This function returns the position at which @var{overlay} ends,
@c as an integer.
この関数は、オーバレイ@var{overlay}の終了位置を整数で返す。
@end defun

@defun overlay-buffer overlay
@c This function returns the buffer that @var{overlay} belongs to.
この関数は、オーバレイ@var{overlay}が属するバッファを返す。
@end defun

@defun delete-overlay overlay
@c This function deletes @var{overlay}.  The overlay continues to exist as
@c a Lisp object, but ceases to be attached to the buffer it belonged to,
@c and ceases to have any effect on display.
この関数は、オーバレイ@var{overlay}を削除する。
Lispオブジェクトとしてはオーバレイは存在し続けるが、
それが属したバッファとの対応付けは消失し、
表示上の効果もなくなる。

@c A deleted overlay is not permanently useless.  You can give it
@c a new buffer position by calling @code{move-overlay}.
削除したオーバレイは恒久的に無意味ではない。
@code{move-overlay}を呼び出して新たなバッファ内位置をそれに与えられる。
@end defun

@defun move-overlay overlay start end &optional buffer
@c This function moves @var{overlay} to @var{buffer}, and places its bounds
@c at @var{start} and @var{end}.  Both arguments @var{start} and @var{end}
@c must specify buffer positions; they may be integers or markers.  If
@c @var{buffer} is omitted, the overlay stays in the same buffer.
この関数は、オーバレイ@var{overlay}をバッファ@var{buffer}に移し、
@var{start}から@var{end}を覆うようにする。
@var{start}と@var{end}のどちらもバッファ内位置を指定し、
整数かマーカである。
@var{buffer}を省略すると、オーバレイは同じバッファに留まる。

@c The return value is @var{overlay}.
戻り値は@var{overlay}である。

@c This is the only valid way to change the endpoints of an overlay.  Do
@c not try modifying the markers in the overlay by hand, as that fails to
@c update other vital data structures and can cause some overlays to be
@c ``lost''.
これは、オーバレイの端を変更する唯一の正しい方法である。
オーバレイのマーカを手で修正しようとしないこと。
他の重要なデータ構造を更新しそこない、
いくつかのオーバレイを『失う』ことにもなりかねない。
@end defun

@defun overlays-at pos
@c This function returns a list of all the overlays that contain position
@c @var{pos} in the current buffer.  The list is in no particular order.
@c An overlay contains position @var{pos} if it begins at or before
@c @var{pos}, and ends after @var{pos}.
この関数は、カレントバッファの位置@var{pos}を覆うすべての
オーバレイのリストを返す。
このリスト内の順番に意味はない。
オーバレイが位置@var{pos}かそのまえで始まり、かつ、
位置@var{pos}かそのうしろで終るときに、
オーバレイは位置@var{pos}を覆う。
@end defun

@defun overlays-in beg end
@tindex overlays-in
@c This function returns a list of the overlays that overlap the region
@c @var{beg} through @var{end}.  ``Overlap'' means that at least one
@c character is contained within the overlay and also contained within the
@c specified region; however, empty overlays are included in the result if
@c they are located at @var{beg} or between @var{beg} and @var{end}.
この関数は、@var{beg}から@var{end}までの領域と
重なり合っているすべてのオーバレイのリストを返す。
『重なり合っている』とは、
少なくとも1文字がオーバレイに覆われていて、かつ、
その文字が指定された領域に入っていることを意味する。
しかし、空のオーバレイであっても
それが@var{beg}にあるか@var{beg}と@var{end}のあいだにあれば、
空のオーバレイも結果に含まれる。
@end defun

@defun next-overlay-change pos
@c This function returns the buffer position of the next beginning or end
@c of an overlay, after @var{pos}.
この関数は、位置@var{pos}のうしろにある
オーバレイのつぎの開始位置か終了位置を返す。
@end defun

@defun previous-overlay-change pos
@c This function returns the buffer position of the previous beginning or
@c end of an overlay, before @var{pos}.
この関数は、位置@var{pos}のまえにある
オーバレイのまえの開始位置か終了位置を返す。
@end defun

@node Width, Faces, Overlays, Display
@c @section Width
@section 表示幅

@c Since not all characters have the same width, these functions let you
@c check the width of a character.  @xref{Primitive Indent}, and
@c @ref{Screen Lines}, for related functions.
すべての文字が同じ表示幅ではありませんから、
これらの関数で文字の表示幅を検査できます。
関連する関数については、@ref{Primitive Indent}と@xref{Screen Lines}

@defun char-width char
@tindex char-width
@c This function returns the width in columns of the character @var{char},
@c if it were displayed in the current buffer and the selected window.
この関数は、文字@var{char}を選択されているウィンドウで
カレントバッファに表示した場合のコラム幅を返す。
@end defun

@defun string-width string
@tindex string-width
@c This function returns the width in columns of the string @var{string},
@c if it were displayed in the current buffer and the selected window.
この関数は、文字列@var{string}を選択されているウィンドウで
カレントバッファに表示した場合のコラム幅を返す。
@end defun

@defun truncate-string-to-width string width &optional start-column padding
@tindex truncate-string-to-width
@c This function returns the part of @var{string} that fits within
@c @var{width} columns, as a new string.
この関数は、幅@var{width}に収まる文字列@var{string}の部分を
新たな文字列として返す。

@c If @var{string} does not reach @var{width}, then the result ends where
@c @var{string} ends.  If one multi-column character in @var{string}
@c extends across the column @var{width}, that character is not included in
@c the result.  Thus, the result can fall short of @var{width} but cannot
@c go beyond it.
@var{string}が幅@var{width}に満たない場合、
@var{string}の終りで結果は終る。
@var{string}内の1つの複数コラム文字がコラム@var{width}を越える場合には、
その文字は結果に含めない。
したがって、結果は@var{width}より短くなりえるがそれを越えることはない。

@c The optional argument @var{start-column} specifies the starting column.
@c If this is non-@code{nil}, then the first @var{start-column} columns of
@c the string are omitted from the value.  If one multi-column character in
@c @var{string} extends across the column @var{start-column}, that
@c character is not included.
省略可能な引数@var{start-column}は、開始コラムを指定する。
これが@code{nil}以外であると、文字列のはじめの
@var{start-column}コラムを結果から省く。
@var{string}内の1つの複数コラム文字がコラム@var{start-column}を越える場合には、
その文字は結果に含めない。

@c The optional argument @var{padding}, if non-@code{nil}, is a padding
@c character added at the beginning and end of the result string, to extend
@c it to exactly @var{width} columns.  The padding character is used at the
@c end of the result if it falls short of @var{width}.  It is also used at
@c the beginning of the result if one multi-column character in
@c @var{string} extends across the column @var{start-column}.
省略可能な引数@var{padding}が@code{nil}以外であると、
結果の文字列の先頭や末尾に付加して
ちょうど@var{width}コラムにするためのパディング文字である。
@var{width}より短くなる場合に
結果の末尾にパディング文字を使う。
複数コラム文字がコラム@var{start-column}を越える場合には、
結果の先頭にパディング文字を使う。

@example
(truncate-string-to-width "\tab\t" 12 4)
     @result{} "ab"
(truncate-string-to-width "\tab\t" 12 4 ?\ )
     @result{} "    ab  "
@end example
@end defun

@node Faces, Blinking, Width, Display
@c @section Faces
@section フェイス
@c @cindex face
@cindex フェイス

@c A @dfn{face} is a named collection of graphical attributes: font,
@c foreground color, background color, and optional underlining.  Faces
@c control the display of text on the screen.
@dfn{フェイス}（face）とは、図形的な属性、つまり、
フォント、前景色、背景色、下線
の名前付きの集合体です。
フェイスはスクリーン上のテキストの表示を制御します。

@c @cindex face id
@cindex フェイス識別子
@c Each face has its own @dfn{face number}, which distinguishes faces at
@c low levels within Emacs.  However, for most purposes, you can refer to
@c faces in Lisp programs by their names.
各フェイスには固有の@dfn{フェイス番号}（face number）があり、
Emacs内部の下位レベルでフェイスを区別するために使われます。
しかし、ほとんどの目的には、
Lispプログラムでは名前でフェイスを参照できます。

@defun facep object
@c This function returns @code{t} if @var{object} is a face name symbol (or
@c if it is a vector of the kind used internally to record face data).  It
@c returns @code{nil} otherwise.
この関数は、@var{object}がフェイスを指名するシンボル
（あるいは、フェイスデータを記録するために内部的に使われる種類のベクトル）
であると@code{t}を返す。
さもなければ@code{nil}を返す。
@end defun

@c Each face name is meaningful for all frames, and by default it has the
@c same meaning in all frames.  But you can arrange to give a particular
@c face name a special meaning in one frame if you wish.
各フェイス名はすべてのフレームで有効であり、
デフォルトではすべてのフレームで同じ意味を持ちます。
しかし、望みの1つのフレームで特定のフェイス名に
特定の意味を持たせることもできます。

@menu
* Standard Faces::      The faces Emacs normally comes with.
* Defining Faces::      How to define a face with @code{defface}.
* Merging Faces::	How Emacs decides which face to use for a character.
* Face Functions::	How to define and examine faces.
@end menu

@node Standard Faces, Defining Faces, Faces, Faces
@c @subsection Standard Faces
@subsection 標準フェイス

@c   This table lists all the standard faces and their uses.
つぎの表はすべての標準フェイスとその用途です。

@table @code
@item default
@c @kindex default @r{(face name)}
@kindex default @r{（フェイス名）}
@c This face is used for ordinary text.
このフェイスは通常のテキストに対して使う。

@item modeline
@c @kindex modeline @r{(face name)}
@kindex modeline @r{（フェイス名）}
@c This face is used for mode lines and menu bars.
このフェイスはモード行とメニューバーに対して使う。

@item region
@c @kindex region @r{(face name)}
@kindex region @r{（フェイス名）}
@c This face is used for highlighting the region in Transient Mark mode.
このフェイスは、暫定マーク（transient-mark）モードでリージョンを
強調表示するために使う。

@item secondary-selection
@c @kindex secondary-selection @r{(face name)}
@kindex secondary-selection @r{（フェイス名）}
@c This face is used to show any secondary selection you have made.
このフェイスは、指定した任意の二次セレクションを示すために使う。

@item highlight
@c @kindex highlight @r{(face name)}
@kindex highlight @r{（フェイス名）}
@c This face is meant to be used for highlighting for various purposes.
このフェイスは、さまざま目的向けに強調表示するために使う。

@item underline
@c @kindex underline @r{(face name)}
@kindex underline @r{（フェイス名）}
@c This face underlines text.
このフェイスは、テキストに下線を引く。

@item bold
@c @kindex bold @r{(face name)}
@kindex bold @r{（フェイス名）}
@c This face uses a bold font, if possible.  It uses the bold variant of
@c the frame's font, if it has one.  It's up to you to choose a default
@c font that has a bold variant, if you want to use one.
このフェイスは、可能ならば太字（bold）フォントを使う。
フレームのフォントに太字（bold）変種があればそれを使う。
太字変種を使用したい場合には、
太字フォント変種を有するデフォルトフォントを選ぶのは読者の責任である。

@item italic
@c @kindex italic @r{(face name)}
@kindex italic @r{（フェイス名）}
@c This face uses the italic variant of the frame's font, if it has one.
このフェイスは、フレームのフォントに
斜体（italic）変種があればそれを使う。

@item bold-italic
@c @kindex bold-italic @r{(face name)}
@kindex bold-italic @r{（フェイス名）}
@c This face uses the bold italic variant of the frame's font, if it has
@c one.
このフェイスは、フレームのフォントに
太字斜体（bold-italic）変種があればそれを使う。
@end table

@node Defining Faces, Merging Faces, Standard Faces, Faces
@c @subsection Defining Faces
@subsection フェイスを定義する

@c   The way to define a new face is with @code{defface}.  This creates a
@c kind of customization item (@pxref{Customization}) which the user can
@c customize using the Customization buffer (@pxref{Easy Customization,,,
@c emacs, The GNU Emacs Manual}).
新たなフェイスを定義する方法は、@code{defface}を使うことです。
これは、カスタマイズバッファ
（@pxref{Easy Customization,, 簡便なカスタマイズ方法, emacs,
GNU Emacs マニュアル}）
を用いてユーザーがカスタマイズできる
カスタマイズ項目（@pxref{Customization}）の一種を作成します。

@defmac defface face spec doc [keyword value]... 
@tindex defface
@c Declare @var{face} as a customizable face that defaults according to
@c @var{spec}.  Do not quote the symbol @var{face}.  The argument @var{doc}
@c specifies the face documentation.
@var{spec}に従ったデフォルトを持つカスタマイズ可能なフェイスとして
@var{face}を宣言する。
シンボル@var{face}をクォートしないこと。
引数@var{doc}は、フェイスの説明文字列を指定する。

@c When @code{defface} executes, it defines the face according to
@c @var{spec}, then uses any customizations that were read from the
@c @file{.emacs} file to override that specification.
@code{defface}を実行すると、@var{spec}に従ったフェイスを定義し、
ファイル@file{.emacs}から読み取った任意のカスタマイズを
@var{spec}の指定に優先させる。

@c The purpose of @var{spec} is to specify how the face should appear on
@c different kinds of terminals.  It should be an alist whose elements have
@c the form @code{(@var{display} @var{atts})}.  The element's @sc{car},
@c @var{display}, specifies a class of terminals.  The @sc{cdr},
@c @var{atts}, is a list of face attributes and their values; it specifies
@c what the face should look like on that kind of terminal.  The possible
@c attributes are defined in the value of @code{custom-face-attributes}.
@var{spec}の目的は、異なる種類の端末でフェイスがどのような
見た目になるかを指定することである。
@code{(@var{display} @var{atts})}の形の要素から成る
連想リストであること。
要素の@sc{car}の@var{display}は端末の種類を指定する。
@sc{cdr}の@var{atts}はフェイスの属性とその値のリストであり、
その種類の端末上でそのフェイスがどのように見えるかを指定する。
可能な属性は、@code{custom-face-attributes}の値で定義される。

@c The @var{display} part of an element of @var{spec} determines which
@c frames the element applies to.  If more than one element of @var{spec}
@c matches a given frame, the first matching element is the only one used
@c for that frame.  There are two possibilities for @var{display}:
@var{spec}の要素の@var{display}部分は、要素を適用するフレームを決定する。
@var{spec}の1つより多くの要素が指定されたフレームに一致する場合、
そのフレームに一致した最初の要素だけを用いる。
@var{display}には2つの可能性がある。

@table @asis
@item @code{t}
@c This element of @var{spec} matches all frames.  Therefore, any
@c subsequent elements of @var{spec} are never used.  Normally
@c @code{t} is used in the last (or only) element of @var{spec}.
@var{spec}の要素はすべてのフレームで一致する。
したがって、@var{spec}の以降の要素をけっして使わない。
通常、@code{t}は@var{spec}の最後の（あるいは唯一）の要素に使う。

@c @item a list
@item リスト
@c If @var{display} is a list, each element should have the form
@c @code{(@var{characteristic} @var{value}@dots{})}.  Here
@c @var{characteristic} specifies a way of classifying frames, and the
@c @var{value}s are possible classifications which @var{display} should
@c apply to.  Here are the possible values of @var{characteristic}:
@var{display}がリストであると、
各要素は@code{(@var{characteristic} @var{value}@dots{})}の形であること。
ここで、@var{characteristic}はフレームの分類方法であり、
@var{value}は@var{display}を適用すべき分類とみなす値である。
特性@var{characteristic}の可能な値はつぎのとおりである。

@table @code
@item type
@c The kind of window system the frame uses---either @code{x}, @code{pc}
@c (for the MS-DOS console), @code{w32} (for MS Windows 9X/NT), or
@c @code{tty}.
フレームが使用するウィンドウシステムの種類であり、
@code{x}、@code{pc}（MS-DOSのコンソール）、
@code{w32}（MS Windows 9X/NT）、@code{tty}のいずれかである。

@item class
@c What kinds of colors the frame supports---either @code{color},
@c @code{grayscale}, or @code{mono}.
フレームで扱える表示色の種類であり、
@code{color}、@code{grayscale}、@code{mono}のいずれかである。

@item background
@c The kind of background---either @code{light} or @code{dark}.
背景の種類であり、@code{light}か@code{dark}のいずれかである。
@end table

@c If an element of @var{display} specifies more than one @var{value} for a
@c given @var{characteristic}, any of those values is acceptable.  If
@c @var{display} has more than one element, each element should specify a
@c different @var{characteristic}; then @emph{each} characteristic of the
@c frame must match one of the @var{value}s specified for it in
@c @var{display}.
@var{display}の1つの要素において、
指定された@var{characteristic}に
1つより多くの@var{value}を指定すると、
それらのいずれの値でも受け入れる。
@var{display}に1つより多くの要素がある場合、
各要素は異なる@var{characteristic}を指定すること。
そうすれば、フレームの@emph{各}特性は
@var{display}に指定されたそのフレーム向けの
@var{value}の1つに一致するはずである。
@end table
@end defmac

@c   Here's how the standard face @code{region} could be defined
@c with @code{defface}:
標準フェイス@code{region}を@code{defface}で
定義するとつぎのようになります。

@example
(defface region
         ((((class color) (background dark))
           (:background "blue"))
          (t (:background "gray")))
  "Used for displaying the region.")
@end example

@c   Internally, @code{defface} uses the symbol property
@c @code{face-defface-spec} to record the face attributes specified in
@c @code{defface}, @code{saved-face} for the attributes saved by the user
@c with the customization buffer, and @code{face-documentation} for the
@c documentation string.
内部的には@code{defface}は、
@code{defface}に指定されたフェイス属性の記録には
シンボルの属性@code{face-defface-spec}、
カスタマイズバッファでユーザーが保存した属性の記録には
@code{saved-face}、
説明文字列の記録には@code{face-documentation}を使います。

@tindex frame-background-mode
@defopt frame-background-mode
@c This option, if non-@code{nil}, specifies the background type to use for
@c interpreting face definitions.  If it is @code{dark}, then Emacs treats
@c all frames as if they had a dark background, regardless of their actual
@c background colors.  If it is @code{light}, then Emacs treats all frames
@c as if they had a light background.
このオプションが@code{nil}以外であると、
フェイスの定義を解釈する際に用いる背景の型を指定する。
これが@code{dark}であると、
実際の背景色に関わらずEmacsはすべてのフレームの背景は暗いとみなす。
これが@code{light}であると、
Emacsはすべてのフレームの背景は明るいとみなす。
@end defopt

@node Merging Faces, Face Functions, Defining Faces, Faces
@c @subsection Merging Faces for Display
@subsection 表示向けにフェイスを併合する

@c   Here are all the ways to specify which face to use for display of text:
テキストの表示に使用するフェイスを指定する方法はつぎのとおりです。

@itemize @bullet
@item
@c With defaults.  Each frame has a @dfn{default face}, which is used for
@c all text that doesn't somehow specify another face.  (We may change this
@c in a forthcoming Emacs version to serve as a default for all text.)
デフォルトを使う。
各フレームには@dfn{デフォルトのフェイス}があり、
他のフェイスを指定していないすべてのテキストに使用される。
（Emacsの将来の版では、
すべてのテキスト向けのデフォルトに変更するかもしれない。）

@item
@c With text properties.  A character may have a @code{face} property; if so,
@c it is displayed with that face.  @xref{Special Properties}.
テキスト属性を使う。
文字は属性@code{face}を持てる。
それがある場合、そのフェイスで表示される。
@pxref{Special Properties}。

@c If the character has a @code{mouse-face} property, that is used instead
@c of the @code{face} property when the mouse is ``near enough'' to the
@c character.
文字に属性@code{mouse-face}がある場合は、
マウスが文字に『十分近い』ときには属性@code{face}のかわりにそれを使う。

@item
@c With overlays.  An overlay may have @code{face} and @code{mouse-face}
@c properties too; they apply to all the text covered by the overlay.
オーバレイを使う。
オーバレイは属性@code{face}や@code{mouse-face}を持てる。
そのオーバレイが覆うすべてのテキストに適用される。

@item
@c With a region that is active.  In Transient Mark mode, the region is
@c highlighted with a particular face (see @code{region-face}, below).
活性なリージョンを使う。
暫定マーク（transient-mark）モードでは、
リージョンを特定のフェイス（下記の@code{region-face}を参照）
で強調表示する。

@item
@c With special glyphs.  Each glyph can specify a particular face 
@c number.  @xref{Glyphs}.
特別な字形を使う。
各字形では特定のフェイス番号を指定できる。
@pxref{Glyphs}。
@end itemize

@c   If these various sources together specify more than one face for a
@c particular character, Emacs merges the attributes of the various faces
@c specified.  The attributes of the faces of special glyphs come first;
@c then comes the face for region highlighting, if appropriate;
@c then come attributes of faces from overlays, followed by those from text
@c properties, and last the default face.
ある文字に対してこれらのさまざまな指定が
1つより多くのフェイスを指定する場合、
Emacsは指定されたさまざまなフェイスの属性を併合します。
特別な字形のフェイスが最初です。
適切ならば、つぎはリージョンの強調表示のフェイスです。
そのつぎはオーバレイのフェイスの属性、
さらにテキスト属性のフェイスが続き、
最後はデフォルトのフェイスです。

@c   When multiple overlays cover one character, an overlay with higher
@c priority overrides those with lower priority.  @xref{Overlays}.
複数のオーバレイが1つの文字を覆う場合、
高い優先順位のオーバレイが低いものに優先します。
@xref{Overlays}。

@c   If an attribute such as the font or a color is not specified in any of
@c the above ways, the frame's own font or color is used.
フォントや表示色のような属性がうえのどれでも指定されていない場合には、
フレーム独自のフォントや表示色を使います。

@node Face Functions,  , Merging Faces, Faces
@c @subsection Functions for Working with Faces
@subsection フェイスを扱う関数

@c   The attributes a face can specify include the font, the foreground
@c color, the background color, and underlining.  The face can also leave
@c these unspecified by giving the value @code{nil} for them.
フェイスの属性で指定できるのは、フォント、前景色、背景色、下線です。
フェイスでは値@code{nil}を指定することでこれらを未指定にできます。

@c   Here are the primitives for creating and changing faces.
以下は、フェイスを作成したり変更する基本関数です。

@defun make-face name
@c This function defines a new face named @var{name}, initially with all
@c attributes @code{nil}.  It does nothing if there is already a face named
@c @var{name}.
この関数は、すべての属性を@code{nil}とした
@var{name}という名前の新たなフェイスを定義する。
@var{name}という名前のフェイスが既存ならばなにもしない。
@end defun

@defun face-list
@c This function returns a list of all defined face names.
この関数は、定義済みのすべてのフェイス名のリストを返す。
@end defun

@defun copy-face old-face new-name &optional frame new-frame
@c This function defines the face @var{new-name} as a copy of the existing
@c face named @var{old-face}.  It creates the face @var{new-name} if that
@c doesn't already exist.
この関数は、既存の@var{old-face}という名前のフェイスのコピーとして
フェイス@var{new-name}を定義する。
@var{new-name}が既存でなければ、フェイス@var{new-name}を作成する。

@c If the optional argument @var{frame} is given, this function applies
@c only to that frame.  Otherwise it applies to each frame individually,
@c copying attributes from @var{old-face} in each frame to @var{new-face}
@c in the same frame.
省略可能な引数フレーム@var{frame}を指定すると、
この関数はそのフレームだけに適用する。
さもなければ、各フレームにおいて個別に、
そのフレームの@var{old-face}の属性を
同じフレームの@var{new-face}にコピーする。

@c If the optional argument @var{new-frame} is given, then @code{copy-face}
@c copies the attributes of @var{old-face} in @var{frame} to @var{new-name}
@c in @var{new-frame}.
省略可能な引数フレーム@var{new-frame}を指定すると、
@code{copy-face}は
フレーム@var{frame}の@var{old-face}の属性を
フレーム@var{new-frame}の@var{new-face}にコピーする。
@end defun

@c   You can modify the attributes of an existing face with the following
@c functions.  If you specify @var{frame}, they affect just that frame;
@c otherwise, they affect all frames as well as the defaults that apply to
@c new frames.
以下の関数を使って既存のフレームの属性を変更できます。
フレーム@var{frame}を指定すると、そのフレームだけに影響します。
さもなければ、新たなフレームに適用されるデフォルトに加えて
すべてのフレームに影響します。

@defun set-face-foreground face color &optional frame
@defunx set-face-background face color &optional frame
@c These functions set the foreground (or background, respectively) color
@c of face @var{face} to @var{color}.  The argument @var{color} should be a
@c string, the name of a color.
これらの関数は、フェイス@var{face}の前景色（あるいは背景色）として
@var{color}を設定する。
引数@var{color}は、表示色名の文字列であること。

@c Certain shades of gray are implemented by stipple patterns on
@c black-and-white screens.
白黒スクリーンでは、濃淡は点猫パターンで実現する。
@end defun

@defun set-face-stipple face pattern &optional frame
@c This function sets the background stipple pattern of face @var{face} to
@c @var{pattern}.  The argument @var{pattern} should be the name of a
@c stipple pattern defined by the X server, or @code{nil} meaning don't use
@c stipple.
この関数は、フェイス@var{face}の背景点猫パターンとして
@var{pattern}を設定する。
引数@var{pattern}は、Xサーバーで定義された背景点猫パターンの名前であること。
あるいは、点猫を使わないことを意味する@code{nil}であること。

@c Normally there is no need to pay attention to stipple patterns, because
@c they are used automatically to handle certain shades of gray.
白黒階調の特定の濃淡を扱うために自動的に点猫パターンを使うため、
普通は点猫パターンに注意する必要はない。
@end defun

@defun set-face-font face font &optional frame
@c This function sets the font of face @var{face}.  The argument @var{font}
@c should be a string, either a valid font name for your system or the name
@c of an Emacs fontset (@pxref{Fontsets}).  Note that if you set the font
@c explicitly, the bold and italic attributes cease to have any effect,
@c because the precise font that you specified is always used.
この関数は、フェイス@var{face}のフォントを設定する。
引数@var{font}は、読者のシステムの正しいフォント名か
Emacsのフォントセット名（@pxref{Fontsets}）の文字列であること。
フォントを明示的に設定するとつねに正確にそれを使うため、
太字（bold）や斜体（italic）の属性の効果は消失することに注意。
@end defun

@defun set-face-bold-p face bold-p &optional frame
@tindex set-face-bold-p
@c This function sets the bold attribute of face @var{face}.
@c Non-@code{nil} means bold; @code{nil} means non-bold.
この関数は、フェイス@var{face}の太字（bold）の属性を設定する。
@code{nil}以外は太字あり、@code{nil}は太字なしを意味する。
@end defun

@defun set-face-italic-p face italic-p &optional frame
@tindex set-face-italic-p
@c This function sets the italic attribute of face @var{face}.
@c Non-@code{nil} means italic; @code{nil} means non-italic.
この関数は、フェイス@var{face}の斜体（italic）の属性を設定する。
@code{nil}以外は斜体あり、@code{nil}は斜体なしを意味する。
@end defun

@defun set-face-underline-p face underline-p &optional frame
@c This function sets the underline attribute of face @var{face}.
@c Non-@code{nil} means do underline; @code{nil} means don't.
この関数は、フェイス@var{face}の下線の属性を設定する。
@code{nil}以外は下線あり、@code{nil}は下線なしを意味する。
@end defun

@defun invert-face face &optional frame
@c Swap the foreground and background colors of face @var{face}.  If the
@c face doesn't specify both foreground and background, then its foreground
@c and background are set to the default background and foreground,
@c respectively.
フェイス@var{face}の前景色と背景色を入れ換える。
フェイスに前景色と背景色の両者が設定されていないと、
その前景色と背景色にはデフォルトの背景色と前景色を設定する。
@end defun

@c   These functions examine the attributes of a face.  If you don't
@c specify @var{frame}, they refer to the default data for new frames.
つぎの関数は、フェイスの属性を調べます。
フレーム@var{frame}を指定しない場合、
新たなフレーム向けのデフォルトのデータを参照します。

@defun face-foreground face &optional frame
@defunx face-background face &optional frame
@c These functions return the foreground color (or background color,
@c respectively) of face @var{face}, as a string.
この関数は、フェイス@var{face}の前景色（あるいは背景色）を
文字列で返す。
@end defun

@defun face-stipple face &optional frame
@c This function returns the name of the background stipple pattern of face
@c @var{face}, or @code{nil} if it doesn't have one.
この関数は、フェイス@var{face}の背景点猫パターンの名前を返す。
なければ@code{nil}を返す。
@end defun

@defun face-font face &optional frame
@c This function returns the name of the font of face @var{face}.
この関数はフェイス@var{face}のフォントの名前を返す。
@end defun

@defun face-bold-p face &optional frame
@tindex face-bold-p
@c This function returns the bold attribute of face @var{face}.
この関数はフェイス@var{face}の太字（bold）属性を返す。
@end defun

@defun face-italic-p face &optional frame
@tindex face-italic-p
@c This function returns the italic attribute of face @var{face}.
この関数はフェイス@var{face}の斜体（italic）属性を返す。
@end defun

@defun face-underline-p face &optional frame
@c This function returns the underline attribute of face @var{face}.
この関数はフェイス@var{face}の下線属性を返す。
@end defun

@defun face-id face
@c This function returns the face number of face @var{face}.
この関数はフェイス@var{face}のフェイス番号を返す。
@end defun

@defun face-documentation face
@tindex face-documentation
@c This function returns the documentation string of face @var{face}, or
@c @code{nil} if none was specified for it.
この関数はフェイス@var{face}の説明文字列を返す。
なければ@code{nil}を返す。
@end defun

@defun face-equal face1 face2 &optional frame
@c This returns @code{t} if the faces @var{face1} and @var{face2} have the
@c same attributes for display.
この関数は、フェイス@var{face1}と@var{face2}が
表示上の同じ属性を持てば@code{t}を返す。
@end defun

@defun face-differs-from-default-p face &optional frame
@c This returns @code{t} if the face @var{face} displays differently from
@c the default face.  A face is considered to be ``the same'' as the normal
@c face if each attribute is either the same as that of the default face or
@c @code{nil} (meaning to inherit from the default).
この関数は、フェイス@var{face}の表示がデフォルトのフェイスの表示と
異なる場合には@code{t}を返す。
フェイスの各属性がデフォルトフェイスの対応する属性に等しいか
（デフォルトから継承すること意味する）@code{nil}であると、
フェイスはデフォルトのフェイスと『等しい』とみなす。
@end defun

@defvar region-face
@c This variable's value specifies the face number to use to display characters
@c in the region when it is active (in Transient Mark mode only).  The face
@c thus specified takes precedence over all faces that come from text
@c properties and overlays, for characters in the region.  @xref{The Mark},
@c for more information about Transient Mark mode.
この変数の値は、リージョンが活性（暫定マーク（transient-mark）モードのみ）
の場合にリージョン内の文字の表示に使用するフェイス番号を指定する。
リージョン内の文字では、これが指定するフェイスが
テキスト属性やオーバレイのすべてのフェイスに優先する。
暫定マーク（transient-mark）モードについて詳しくは、@pxref{The Mark}。

@c Normally, the value is the face number of the face named @code{region}.
通常、値は@code{region}という名前のフェイスのフェイス番号である。
@end defvar

@tindex frame-update-face-colors
@defun frame-update-face-colors frame
@c This function updates the way faces display on @var{frame}, for a change
@c in @var{frame}'s foreground or background color.
この関数は、フレーム@var{frame}の前景色や背景色を変更後に
フレーム@var{frame}上のフェイスの表示を更新する。
@end defun

@node Blinking, Inverse Video, Faces, Display
@c @section Blinking Parentheses
@section 括弧を点滅する
@c @cindex parenthesis matching
@c @cindex blinking
@c @cindex balancing parentheses
@c @cindex close parenthesis
@cindex 対応する括弧
@cindex 括弧
@cindex 釣り合った括弧
@cindex 閉じ括弧

@c   This section describes the mechanism by which Emacs shows a matching
@c open parenthesis when the user inserts a close parenthesis.
本節では、ユーザーが閉じ括弧を挿入したときに
Emacsが対応する開き括弧を指し示す機構について述べます。

@defvar blink-paren-function
@c The value of this variable should be a function (of no arguments) to
@c be called whenever a character with close parenthesis syntax is inserted.
@c The value of @code{blink-paren-function} may be @code{nil}, in which
@c case nothing is done.
この変数の値は、閉じ括弧構文の文字が挿入されるたびに
呼び出される（引数なしの）関数であること。
@code{blink-paren-function}の値が@code{nil}であると、なにもしない。
@end defvar

@defopt blink-matching-paren
@c If this variable is @code{nil}, then @code{blink-matching-open} does
@c nothing.
この変数が@code{nil}であると、@code{blink-matching-open}はなにもしない。
@end defopt

@defopt blink-matching-paren-distance
@c This variable specifies the maximum distance to scan for a matching
@c parenthesis before giving up.
この変数は、対応する括弧の走査を諦めるまでの最大距離を指定する。
@end defopt

@defopt blink-matching-delay
@c This variable specifies the number of seconds for the cursor to remain
@c at the matching parenthesis.  A fraction of a second often gives
@c good results, but the default is 1, which works on all systems.
この関数は、対応する括弧にカーソルを留める秒数を指定する。
秒未満を指定してもしばしば結果は良好であるが、
デフォルトはすべてのシステムで動作する1である。
@end defopt

@c @deffn Command blink-matching-open
@deffn コマンド blink-matching-open
@c This function is the default value of @code{blink-paren-function}.  It
@c assumes that point follows a character with close parenthesis syntax and
@c moves the cursor momentarily to the matching opening character.  If that
@c character is not already on the screen, it displays the character's
@c context in the echo area.  To avoid long delays, this function does not
@c search farther than @code{blink-matching-paren-distance} characters.
この関数は、@code{blink-paren-function}のデフォルト値である。
閉じ括弧構文の文字のうしろにポイントがあることを仮定し、
カーソルを対応する開き括弧へ一時的に移動する。
その文字がスクリーン上になければ、
その文字が現れる文脈をエコー領域に表示する。
遅れが大きくならないように、
@code{blink-matching-paren-distance}文字より離れては探さない。

@c Here is an example of calling this function explicitly.
つぎは、この関数を明示的に呼び出す例である。

@smallexample
@group
(defun interactive-blink-matching-open ()
@c Do not break this line! -- rms.
@c The first line of a doc string
@c must stand alone.
  "Indicate momentarily the start of sexp before point."
  (interactive)
@end group
@group
  (let ((blink-matching-paren-distance
         (buffer-size))
        (blink-matching-paren t))
    (blink-matching-open)))
@end group
@end smallexample
@end deffn

@node Inverse Video, Usual Display, Blinking, Display
@c @section Inverse Video
@section 反転表示
@c @cindex Inverse Video
@cindex 反転表示

@defopt inverse-video
@c @cindex highlighting
@cindex 強調表示
@c This variable controls whether Emacs uses inverse video for all text
@c on the screen.  Non-@code{nil} means yes, @code{nil} means no.  The
@c default is @code{nil}.
この変数は、スクリーン上のすべてのテキストに
反転表示を使うかどうかを制御する。
@code{nil}以外は使うことを意味し、
@code{nil}は使わないことを意味する。
デフォルトは@code{nil}である。
@end defopt

@defopt mode-line-inverse-video
@c This variable controls the use of inverse video for mode lines.  If it
@c is non-@code{nil}, then mode lines are displayed in inverse video.
@c Otherwise, mode lines are displayed normally, just like text.  The
@c default is @code{t}.
この変数は、モード行に反転表示を使うかどうかを制御する。
@code{nil}以外であると、モード行を反転表示する。
さもなければ、テキストと同様にモード行を普通に表示する。
デフォルトは@code{t}である。

@c For window frames, this displays mode lines using the face named
@c @code{modeline}, which is normally the inverse of the default face
@c unless you change it.
ウィンドウフレームでは、
@code{modeline}という名前のフェイスを使ってモード行を表示する。
このフェイスは、変更していなければ、デフォルトフェイスの反転表示である。
@end defopt

@node Usual Display, Display Tables, Inverse Video, Display
@c @section Usual Display Conventions
@section 通常の画面表示慣習

@c   The usual display conventions define how to display each character
@c code.  You can override these conventions by setting up a display table
@c (@pxref{Display Tables}).  Here are the usual display conventions:
通常の画面表示慣習は、各文字コードをどのように表示するかを定義します。
表示テーブル（@pxref{Display Tables}）を設定すれば、
これらの慣習を無効にできます。
通常の画面表示慣習をつぎに示します。

@itemize @bullet
@item
@c Character codes 32 through 126 map to glyph codes 32 through 126.
@c Normally this means they display as themselves.
文字コード32から126は、字形コード32から126に対応付ける。
これは各文字をそのまま表示することを普通は意味する。

@item
@c Character code 9 is a horizontal tab.  It displays as whitespace
@c up to a position determined by @code{tab-width}.
文字コード9は水平タブである。
@code{tab-width}で決定される位置まで空白として表示する。

@item
@c Character code 10 is a newline.
文字コード10は改行である。

@item
@c All other codes in the range 0 through 31, and code 127, display in one
@c of two ways according to the value of @code{ctl-arrow}.  If it is
@c non-@code{nil}, these codes map to sequences of two glyphs, where the
@c first glyph is the @sc{ASCII} code for @samp{^}.  (A display table can
@c specify a glyph to use instead of @samp{^}.)  Otherwise, these codes map
@c just like the codes in the range 128 to 255.
0から31の範囲とコード127のコードすべてには、
@code{ctl-arrow}の値に従って2つの表示方法の一方を使う。
@code{ctl-arrow}が@code{nil}以外であると、
これらのコードを2つの字形列に対応付け、
最初の字形は@samp{^}の@sc{ASCII}コードである。
（表示テーブルで@samp{^}のかわりに使う字形を指定できる。）
さもなければ、これらは128から255の範囲のコードと同様に対応付ける。

@item
@c Character codes 128 through 255 map to sequences of four glyphs, where
@c the first glyph is the @sc{ASCII} code for @samp{\}, and the others are
@c digit characters representing the character code in octal.  (A display
@c table can specify a glyph to use instead of @samp{\}.)
文字コード128から255は、4つの字形列に対応付ける。
つまり、最初の字形は@samp{\}の@sc{ASCII}コード、
残りは文字コードを8進数表示した数字文字である。
（表示テーブルで@samp{\}のかわりに使う字形を指定できる。）

@item
@c Multibyte character codes above 256 are displayed as themselves, or as a
@c question mark or empty box if the terminal cannot display that
@c character.
256を越えるマルチバイト文字コードは、そのまま表示する。
あるいは、端末に表示できない文字は、疑問符か白抜きの箱で表示する。
@end itemize

@c   The usual display conventions apply even when there is a display
@c table, for any character whose entry in the active display table is
@c @code{nil}.  Thus, when you set up a display table, you need only
@c specify the characters for which you want special behavior.
通常の画面表示慣習は、たとえ表示テーブルがあっても、
活性な表示テーブルにおいてその文字に対する項目が@code{nil}であるような
文字すべてに適用されます。
したがって、表示テーブルを設定するときには、
特別なふるまいをさせたい文字だけを指定すればよいのです。

@c   These variables affect the way certain characters are displayed on the
@c screen.  Since they change the number of columns the characters occupy,
@c they also affect the indentation functions.  These variables also affect
@c how the mode line is displayed; if you want to force redisplay of the
@c mode line using the new values, call the function
@c @code{force-mode-line-update} (@pxref{Mode Line Format}).
これらの変数は、特定の文字群のスクリーンへの表示方法に影響します。
これらは文字が占めるコラム数を変化させるので、
字下げ関数にも影響します。
これらの変数は、モード行の表示方法にも影響します。
新たな値を用いてモード行の再表示を強制したいときには、
関数@code{force-mode-line-update}（@pxref{Mode Line Format}）を
呼び出します。

@defopt ctl-arrow
@c @cindex control characters in display
@cindex コントロール文字の表示
@c This buffer-local variable controls how control characters are
@c displayed.  If it is non-@code{nil}, they are displayed as a caret
@c followed by the character: @samp{^A}.  If it is @code{nil}, they are
@c displayed as a backslash followed by three octal digits: @samp{\001}.
このバッファローカルな変数は、
コントロール文字の表示方法を制御する。
@code{nil}以外であると、@samp{^A}のように
カレットに続けて文字を表示する。
@code{nil}であると、@samp{\001}のように
バックスラッシュに続けて3桁の8進数字で表示する。
@end defopt

@c Following may have overfull hbox.
@defvar default-ctl-arrow
@c The value of this variable is the default value for @code{ctl-arrow} in
@c buffers that do not override it.  @xref{Default Value}.
この変数の値は、@code{ctl-arrow}を書き換えていないバッファ向けの
@code{ctl-arrow}のデフォルト値である。
@pxref{Default Value}。
@end defvar

@defopt tab-width
@c The value of this variable is the spacing between tab stops used for
@c displaying tab characters in Emacs buffers.  The default is 8.  Note
@c that this feature is completely independent of the user-settable tab
@c stops used by the command @code{tab-to-tab-stop}.  @xref{Indent Tabs}.
この変数の値は、Emacsのバッファ内のタブ文字の表示に使う
タブストップの間隔である。
デフォルトは8である。
この機能は、コマンド@code{tab-to-tab-stop}で設定する
ユーザー設定可能なタブストップとはまったく独立であることに注意。
@pxref{Indent Tabs}。
@end defopt

@node Display Tables, Beeping, Usual Display, Display
@c @section Display Tables
@section 表示テーブル

@c @cindex display table
@cindex 表示テーブル
@c You can use the @dfn{display table} feature to control how all possible
@c character codes display on the screen.  This is useful for displaying
@c European languages that have letters not in the @sc{ASCII} character
@c set.
@dfn{表示テーブル}（display table）機能を使って、
すべての可能な文字コードのスクリーンへの表示方法を制御できます。
これは、@sc{ASCII}文字集合にない文字を用いる
ヨーロッパの言語を表示するのに有用です。

@c The display table maps each character code into a sequence of
@c @dfn{glyphs}, each glyph being an image that takes up one character
@c position on the screen.  You can also define how to display each glyph
@c on your terminal, using the @dfn{glyph table}.
表示テーブルは、各文字コードを@dfn{字形}（glyph）の列に対応付けます。
各字形は、スクリーン上で1文字を占める像です。
@dfn{字形テーブル}（glyph table）を使えば、
読者の端末に各字形を表示する方法を定義することもできます。

@c Display tables affect how the mode line is displayed; if you want to
@c force redisplay of the mode line using a new display table, call
@c @code{force-mode-line-update} (@pxref{Mode Line Format}).
表示テーブルは、モード行の表示方法にも影響します。
新たな表示テーブルを用いてモード行の再表示を強制したいときには、
関数@code{force-mode-line-update}（@pxref{Mode Line Format}）を
呼び出します。

@menu
* Display Table Format::	What a display table consists of.
* Active Display Table::	How Emacs selects a display table to use.
* Glyphs::			How to define a glyph, and what glyphs mean.
@end menu

@node Display Table Format, Active Display Table, Display Tables, Display Tables
@c @subsection Display Table Format
@subsection 表示テーブルの書式

@c   A display table is actually a char-table (@pxref{Char-Tables}) with
@c @code{display-table} as its subtype.
表示テーブルは、実際にはサブタイプが@code{display-table}である
文字テーブル（@pxref{Char-Tables}）です。

@defun make-display-table
@c This creates and returns a display table.  The table initially has
@c @code{nil} in all elements.
表示テーブルを作成して返す。
テーブルのすべての要素の初期値は@code{nil}である。
@end defun

@c   The ordinary elements of the display table are indexed by character
@c codes; the element at index @var{c} says how to display the character
@c code @var{c}.  The value should be @code{nil} or a vector of glyph
@c values (@pxref{Glyphs}).  If an element is @code{nil}, it says to
@c display that character according to the usual display conventions
@c (@pxref{Usual Display}).
表示テーブルの通常の要素は、文字コードで添字付けします。
添字@var{c}の要素は、文字コード@var{c}の表示方法を指定します。
値は@code{nil}であるか、字形の値のベクトル（@pxref{Glyphs}）です。
要素が@code{nil}であると、その文字を通常の画面表示慣習
（@pxref{Usual Display}）に従って表示する指定です。

@c   If you use the display table to change the display of newline
@c characters, the whole buffer will be displayed as one long ``line.''
表示テーブルを使って改行文字の表示を変更すると、
バッファ全体は長い1つの『行』として表示されます。

@c   The display table also has six ``extra slots'' which serve special
@c purposes.  Here is a table of their meanings; @code{nil} in any slot
@c means to use the default for that slot, as stated below.
表示テーブルには6つの『追加スロット』もあり、
それらは特別な目的を果たします。
それらの意味をつぎに示します。
スロットの内容が@code{nil}であると、
そのスロットに対して以下に述べる
デフォルトを使うことを意味します。

@table @asis
@item 0
@c The glyph for the end of a truncated screen line (the default for this
@c is @samp{$}).  @xref{Glyphs}.
切り詰めたスクリーン行の末尾に使う字形
（デフォルトは@samp{$}）。
@pxref{Glyphs}。
@item 1
@c The glyph for the end of a continued line (the default is @samp{\}).
継続している行の末尾に使う字形
（デフォルトは@samp{\}）。
@item 2
@c The glyph for indicating a character displayed as an octal character
@c code (the default is @samp{\}).
文字を8進数文字コードで表示したことを表す字形
（デフォルトは@samp{\}）。
@item 3
@c The glyph for indicating a control character (the default is @samp{^}).
コントロール文字を表す字形
（デフォルトは@samp{^}）。
@item 4
@c A vector of glyphs for indicating the presence of invisible lines (the
@c default is @samp{...}).  @xref{Selective Display}.
符可視な行があることを表す字形のベクトル
（デフォルトは@samp{...}）。
@pxref{Selective Display}。
@item 5
@c The glyph used to draw the border between side-by-side windows (the
@c default is @samp{|}).  @xref{Splitting Windows}.
左右に隣り合ったウィンドウの境界に使う字形
（デフォルトは@samp{|}）。
@pxref{Splitting Windows}。
@end table

@c   For example, here is how to construct a display table that mimics the
@c effect of setting @code{ctl-arrow} to a non-@code{nil} value:
たとえば、@code{ctl-arrow}に@code{nil}以外の値を設定した効果を
模倣する表示テーブルの作成方法をつぎに示します。

@example
(setq disptab (make-display-table))
(let ((i 0))
  (while (< i 32)
    (or (= i ?\t) (= i ?\n)
        (aset disptab i (vector ?^ (+ i 64))))
    (setq i (1+ i)))
  (aset disptab 127 (vector ?^ ??)))
@end example

@defun display-table-slot display-table slot
@tindex display-table-slot
@c This function returns the value of the extra slot @var{slot} of
@c @var{display-table}.  The argument @var{slot} may be a number from 0 to
@c 5 inclusive, or a slot name (symbol).  Valid symbols are
@c @code{truncation}, @code{wrap}, @code{escape}, @code{control},
@c @code{selective-display}, and @code{vertical-border}.
この関数は表示テーブル@var{display-table}の
追加スロット@var{slot}の値を返す。
引数@var{slot}は0から5までの数であるか、
スロット名（シンボル）であること。
正しいシンボルは、@code{truncation}、@code{wrap}、
@code{escape}、@code{control}、@code{selective-display}、
@code{vertical-border}である。
@end defun

@defun set-display-table-slot display-table slot value
@tindex set-display-table-slot
@c This function stores @var{value} in the extra slot @var{slot} of
@c @var{display-table}.  The argument @var{slot} may be a number from 0 to
@c 5 inclusive, or a slot name (symbol).  Valid symbols are
@c @code{truncation}, @code{wrap}, @code{escape}, @code{control},
@c @code{selective-display}, and @code{vertical-border}.
この関数は表示テーブル@var{display-table}の
追加スロット@var{slot}に値@var{value}を保存する。
引数@var{slot}は0から5までの数であるか、
スロット名（シンボル）であること。
正しいシンボルは、@code{truncation}、@code{wrap}、
@code{escape}、@code{control}、@code{selective-display}、
@code{vertical-border}である。
@end defun

@node Active Display Table, Glyphs, Display Table Format, Display Tables
@c @subsection Active Display Table
@subsection 活性な表示テーブル
@c @cindex active display table
@cindex 活性な表示テーブル

@c   Each window can specify a display table, and so can each buffer.  When
@c a buffer @var{b} is displayed in window @var{w}, display uses the
@c display table for window @var{w} if it has one; otherwise, the display
@c table for buffer @var{b} if it has one; otherwise, the standard display
@c table if any.  The display table chosen is called the @dfn{active}
@c display table.
各ウィンドウに表示テーブルを指定でき、
各バッファにも表示テーブルを指定できます。
バッファ@var{b}がウィンドウ@var{w}に表示されているとき、
ウィンドウ@var{w}に表示テーブルがあればそれを使って表示します。
さもなければ、バッファ@var{b}に表示テーブルがあればそれを使います。
それ以外では、標準の表示テーブルがあればそれを使います。
選択されている表示テーブルを@dfn{活性な}表示テーブルと呼びます。

@defun window-display-table window
@c This function returns @var{window}'s display table, or @code{nil}
@c if @var{window} does not have an assigned display table.
この関数は、ウィンドウ@var{window}の表示テーブルを返す。
@var{window}に表示テーブルが割り付けられていなければ@code{nil}を返す。
@end defun

@defun set-window-display-table window table
@c This function sets the display table of @var{window} to @var{table}.
@c The argument @var{table} should be either a display table or
@c @code{nil}.
この関数は、ウィンドウ@var{window}の表示テーブルとして
@var{table}を設定する。
引数@var{table}は、表示テーブルであるか@code{nil}であること。
@end defun

@defvar buffer-display-table
@c This variable is automatically buffer-local in all buffers; its value in
@c a particular buffer specifies the display table for that buffer.  If it
@c is @code{nil}, that means the buffer does not have an assigned display
@c table.
この変数はすべてのバッファで自動的にバッファローカルである。
バッファでの値は、そのバッファに対して用いる表示テーブルを指定する。
それが@code{nil}であると、バッファに表示テーブルを
割り付けていないことを意味する。
@end defvar

@defvar standard-display-table
@c This variable's value is the default display table, used whenever a
@c window has no display table and neither does the buffer displayed in
@c that window.  This variable is @code{nil} by default.
この変数の値はデフォルトの表示テーブルであり、
ウィンドウに表示テーブルがなく
そのウィンドウのバッファにも表示テーブルがない場合に使われる。
この変数はデフォルトでは@code{nil}である。
@end defvar

@c   If there is no display table to use for a particular window---that is,
@c if the window specifies none, its buffer specifies none, and
@c @code{standard-display-table} is @code{nil}---then Emacs uses the usual
@c display conventions for all character codes in that window.  @xref{Usual
@c Display}.
特定のウィンドウにおいて使用する表示テーブルがない場合には、
つまり、ウィンドウで未指定であり、そのバッファでも未指定であり、
@code{standard-display-table}が@code{nil}である場合には、
そのウィンドウ内のすべての文字コードには通常の画面表示慣習を使います。
@xref{Usual Display}。

@node Glyphs,  , Active Display Table, Display Tables
@c @subsection Glyphs
@subsection 字形

@c @cindex glyph
@cindex 字形
@c   A @dfn{glyph} is a generalization of a character; it stands for an
@c image that takes up a single character position on the screen.  Glyphs
@c are represented in Lisp as integers, just as characters are.
@dfn{字形}（glyph）は、文字を一般化したものです。
スクリーン上で1文字を占める像を表します。
文字と同様に、字形はLispでは整数で表現します。

@c @cindex glyph table
@cindex 字形テーブル
@c   The meaning of each integer, as a glyph, is defined by the glyph
@c table, which is the value of the variable @code{glyph-table}.
字形としての各整数の意味は、字形テーブルで定義されます。
これは変数@code{glyph-table}の値です。

@defvar glyph-table
@c The value of this variable is the current glyph table.  It should be a
@c vector; the @var{g}th element defines glyph code @var{g}.  If the value
@c is @code{nil} instead of a vector, then all glyphs are simple (see
@c below).
この変数の値は、現在の字形テーブルである。
これはベクトルであること。
@var{g}番目の要素は、字形コード@var{g}を定義する。
値がベクトルではなく@code{nil}であると、
すべての字形は単純（下記参照）である。
@end defvar

@c   Here are the possible types of elements in the glyph table:
字形テーブルの要素として可能な型はつぎのとおりです。

@table @asis
@item @var{string}
@c Send the characters in @var{string} to the terminal to output
@c this glyph.  This alternative is available on character terminals,
@c but not under a window system.
この字形を出力するために端末へ@var{string}の文字群を送出する。
これは文字端末では使えるがウィンドウシステムでは使えない。

@item @var{integer}
@c Define this glyph code as an alias for glyph code @var{integer}.  You
@c can use an alias to specify a face code for the glyph; see below.
この字形コードを字形コード@var{integer}の別称として定義する。
字形に対してフェイスコードを指定するために別称を使うことができる。
下記参照。

@item @code{nil}
@c This glyph is simple.  On an ordinary terminal, the glyph code mod
@c 524288 is the character to output.  In a window system, the glyph code
@c mod 524288 is the character to output, and the glyph code divided by
@c 524288 specifies the face number (@pxref{Face Functions}) to use while
@c outputting it.  (524288 is
この字形は単純である。
通常の端末では、字形コード mod 524288 は出力すべき文字である。
ウィンドウシステムでは、字形コード mod 524288 は出力すべき文字あり、
字形コードを524288で除した値は出力中に使用すべきフェイス番号
（@pxref{Face Functions}）である。
（524288は
@ifinfo
@c 2**19.)
2**19。）
@end ifinfo
@tex
%c $2^{19}$.)
$2^{19}$。）
@end tex
@c @xref{Faces}.
@pxref{Faces}。
@end table

@c   If a glyph code is greater than or equal to the length of the glyph
@c table, that code is automatically simple.
字形コードが字形テーブルの長さに等しいか大きいと、
そのコードは自動的に単純とします。

@node Beeping, Window Systems, Display Tables, Display
@c @section Beeping
@section ベルを鳴らす
@c @cindex beeping
@c @cindex bell
@cindex ベルを鳴らす

@c   This section describes how to make Emacs ring the bell (or blink the
@c screen) to attract the user's attention.  Be conservative about how
@c often you do this; frequent bells can become irritating.  Also be
@c careful not to use just beeping when signaling an error is more
@c appropriate.  (@xref{Errors}.)
本節では、ユーザーの注意を引くためにEmacsにベルを鳴らせる
（あるいはスクリーンを点滅させる）方法について述べます。
ベルを鳴らす頻度はなるべく控えめにしてください。
頻繁にベルが鳴るとわずらわしいものです。
エラーを通知するほうがふさわしいときには、
単にベルを鳴らさないように注意してください。
（@pxref{Errors}。）

@defun ding &optional do-not-terminate
@c @cindex keyboard macro termination
@cindex キーボードマクロの終了
@c This function beeps, or flashes the screen (see @code{visible-bell} below).
@c It also terminates any keyboard macro currently executing unless
@c @var{do-not-terminate} is non-@code{nil}.
この関数は、ベルを鳴らすかスクリーンを点滅する
（下記の@code{visible-bell}を参照）。
また、@var{do-not-terminate}が@code{nil}であると
現在実行中のキーボードマクロを終了する。
@end defun

@defun beep &optional do-not-terminate
@c This is a synonym for @code{ding}.
@code{ding}の同義語。
@end defun

@defopt visible-bell
@c This variable determines whether Emacs should flash the screen to
@c represent a bell.  Non-@code{nil} means yes, @code{nil} means no.  This
@c is effective on a window system, and on a character-only terminal
@c provided the terminal's Termcap entry defines the visible bell
@c capability (@samp{vb}).
この変数は、ベルを鳴らすかわりにスクリーンを点滅させるかどうかを決定する。
@code{nil}以外であると点滅するを意味し、
@code{nil}であると点滅しないを意味する。
これは、ウィンドウシステムを用いている場合か、
端末のtermcapの定義にビジュアルベル機能（@samp{vb}）がある
文字端末で有効である。
@end defopt

@defvar ring-bell-function
@tindex ring-bell-function
@c If this is non-@code{nil}, it specifies how Emacs should ``ring the
@c bell.''  Its value should be a function of no arguments.
これが@code{nil}以外であると、
Emacsに『ベルを鳴らす』方法を指定する。
この値は、引数なしの関数であること。
@end defvar

@node Window Systems,  , Beeping, Display
@c @section Window Systems
@section ウィンドウシステム

@c   Emacs works with several window systems, most notably the X Window
@c System.  Both Emacs and X use the term ``window'', but use it
@c differently.  An Emacs frame is a single window as far as X is
@c concerned; the individual Emacs windows are not known to X at all.
Emacsはいくつかのウィンドウシステムで、
特にXウィンドウシステムで動作します。
EmacsもXも用語『ウィンドウ』を使いますが、用法は異なります。
Emacsの1つのフレームは、Xでは1つのウィンドウです。
Emacsの個々のウィンドウについては、Xはまったくわかりません。

@defvar window-system
@c This variable tells Lisp programs what window system Emacs is running
@c under.  The possible values are
この変数は、Emacsが動作しているウィンドウシステムの種類を
Lispプログラムに伝える。
可能な値はつぎのとおりである。

@table @code
@item x
@c @cindex X Window System
@cindex Xウィンドウシステム
@c Emacs is displaying using X.
Xを用いて表示している。
@item pc
@c Emacs is displaying using MSDOS.
MSDOSを用いて表示している。
@item w32
@c Emacs is displaying using Windows NT or Windows 95.
Windows NTかWindows 95を用いて表示している。
@item nil
@c Emacs is using a character-based terminal.
文字ベースの端末を用いて表示している。
@end table
@end defvar

@defvar window-setup-hook
@c This variable is a normal hook which Emacs runs after handling the
@c initialization files.  Emacs runs this hook after it has completed
@c loading your @file{.emacs} file, the default initialization file (if
@c any), and the terminal-specific Lisp code, and running the hook
@c @code{term-setup-hook}.
この変数は、Emacsが初期化ファイルを処理したあとに実行する
ノーマルフックである。
読者のファイル@file{.emacs}、（あれば）デフォルトの初期化ファイル、
端末固有のLispコードをすべてロードし、
フック@code{term-setup-hook}を実行し終えてから、
このフック実行する。

@c This hook is used for internal purposes: setting up communication with
@c the window system, and creating the initial window.  Users should not
@c interfere with it.
このフックは内部目的用であり、
ウィンドウシステムとの通信を設定し、最初のウィンドウを作成する。
ユーザーが干渉すべきではない。
@end defvar
