Next: , Previous: , Up: Lispオブジェクトの読み取りとプリント   [Contents][Index]


20.6 出力に影響する変数

Variable: standard-output

この変数の値はデフォルト出力ストリーム(stream引数がnilのときプリント関数が使用するストリーム)である。デフォルトはtで、これはエコーエリアに表示することを意味する。

Variable: print-quoted

これが非nilなら、省略されたリーダー構文(たとえば(quote foo)'foo(function foo)#'fooのように)を使用してクォートされたフォームをプリントすることを意味する。デフォルトはt

Variable: print-escape-newlines

この変数が非nilなら、文字列内の改行は‘\n’、改ページは‘\f’でプリントされる。これらの文字は通常は実際の改行と改ページとしてプリントされる。

この変数はクォートつきのプリントを行うプリント関数prin1printに影響を与える。princに影響はない。以下はprin1を使用した場合の例である:

(prin1 "a\nb")
     -| "a
     -| b"
     ⇒ "a
b"

(let ((print-escape-newlines t))
  (prin1 "a\nb"))
     -| "a\nb"
     ⇒ "a
b"

2つ目の式ではprin1を呼び出す間はprint-escape-newlinesのローカルバインドが効果をもつが、結果をプリントするときには効果がない。

Variable: print-escape-control-characters

この変数が非nilなら、クォートつきでプリントするプリント関数prin1printは、文字列内のコントロール文字をバックスラッシュシーケンスとしてプリントする。この変数とprint-escape-newlinesがいずれも非nilなら改行と改頁には後者が優先される。

Variable: print-escape-nonascii

この変数が非nilなら、クォートつきでプリントするプリント関数prin1printは文字列内のユニバイトの非ASCII文字を無条件でバックスラッシュシーケンスとしてプリントする。

これらの関数は出力ストリームがマルチバイトバッファー、あるいはマーカーがマルチバイトバッファーをポイントするときは、この変数の値に関わらずユニバイト非ASCII文字にたいしてバックスラッシュシーケンスを使用する。

Variable: print-escape-multibyte

この変数が非nilなら、クォートつきでプリントするプリント関数prin1printは、文字列内のマルチバイトの非ASCII文字を無条件でバックスラッシュシーケンスとしてプリントする。

これらの関数は出力ストリームがユニバイトバッファー、あるいはマーカーがユニバイトバッファーをポイントするときは、この変数の値に関わらずマルチバイト非ASCII文字にたいしてバックスラッシュシーケンスを使用する。

Variable: print-charset-text-property

この変数は文字列のプリントにおいてテキストプロパティ‘charset’のプリントを制御する。値はnilt、またはdefaultのいずれか。

値がnilならcharsetテキストプロパティを決してプリントせず、tなら常にプリントする。

値がdefaultなら“予期せぬ(unexpected)”charsetプロパティがある場合だけcharsetテキストプロパティをプリントする。ASCII文字ではすべてのcharsetが“期待された(expected)”ものとみなされる。それ以外なら文字の期待されるcharsetプロパティはchar-charsetにより与えられる。

Variable: print-length

この変数の値は任意のリスト、ベクター、ブールベクターをプリントする際の最大要素数である。プリントされるオブジェクトがこれより多くの要素をもつ場合は、省略記号(“...”)で省略される。

値がnil(デフォルト)の場合は無制限。

(setq print-length 2)
     ⇒ 2
(print '(1 2 3 4 5))
     -| (1 2 ...)
     ⇒ (1 2 ...)
Variable: print-level

この変数の値はプリント時の丸カッコ(parentheses: “()”)と角カッコ(brackets: “[]"’)のネスト最大深さである。この制限を超える任意のリストとベクターは省略記号(“...”)で省略される。値nil(デフォルト)は無制限を意味する。

User Option: eval-expression-print-length
User Option: eval-expression-print-level

これらはeval-expressionによって使用されるprint-lengthprint-levelの値であり、したがって間接的に多くのインタラクティブな評価コマンドにより使用される(Evaluating Emacs Lisp Expressions in The GNU Emacs Manualを参照)。

以下の変数は循環構造および共有構造の検出と報告に使用されます:

Variable: print-circle

nilなら、この変数はプリント時の循環構造と共有構造の検出を有効にする。循環オブジェクトの読み取り構文を参照のこと。

Variable: print-unreadable-function

デフォルトではEmacsは読み取り可能ではないオブジェクトを‘#<...>"’のようにプリントする。たとえば:

(prin1-to-string (make-marker))
     ⇒ "#<marker in no buffer>"

この変数が非nilなら、これらのオブジェクトにたいするプリントを処理するために呼び出される関数であること。この関数はそのオブジェクト、およびプリント関数(出力関数を参照)によって使用されるnoescapeフラグという2つの引数で呼び出される。

この関数はnil(通常のようにオブジェクトをプリント)、文字列(プリントする文字列)、あるいは他のオブジェクト(そのオブジェクトをプリントしない)のいずれかをリターンすること。たとえば:

(let ((print-unreadable-function
       (lambda (object escape) "hello")))
  (prin1-to-string (make-marker)))
     ⇒ "hello"
Variable: print-gensym

nilなら、この変数はプリント時のインターンされていないシンボル(シンボルの作成とinternを参照)の検出を有効にする。これが有効なら、インターンされていないシンボルはプレフィックス‘#:’とともにプリントされる。このプレフィックスは、Lispリーダーにたいしてインターンされていないシンボルを生成するよう告げる。

Variable: print-continuous-numbering

nilなら、複数のプリント呼び出しを通じて通番が振られることを意味する。これは‘#n=’ラベルと‘#m#’参照にたいしてプリントされる数字に影響する。この変数をsetqでセットしてはならない。letを使用して一時的にtにバインドすること。これを行う場合はprint-number-tablenilにバインドすること。

Variable: print-number-table

この変数はprint-circle機能を実装するために、プリント処理で内部的に使用されるベクターを保持する。print-continuous-numberingをバインドするときにこの変数をnilにバインドする以外は、この変数を使用するべきではない。

Variable: float-output-format

この変数は浮動小数点数をプリントする方法を指定する。デフォルトはnilで、これは情報を失わずにその数値を表せるもっとも短い出力を使用することを意味する。

出力フォーマットをより精密に制御するために、この変数に文字列をセットできる。この文字列にはCのsprintf関数で使用される‘%’指定子をセットする。この変数で使用することのできる制限についての詳細は、この変数のドキュメント文字列を参照のこと。

Variable: print-integers-as-characters

この変数が非nilならグラフィックベース文字を表す整数はLispの文字構文を用いてプリントされる(基本的な文字構文を参照)。それ以外の数は通常の方法でプリントされる。たとえばリスト(4 65 -1 10)は‘(4 ?A -1 ?\n)’のようにプリントされるだろう。

正確にはUnicode一般カテゴリーLetter、Number、Punctuation、Symbol、Private-useに属する文字(文字のプロパティを参照)を表す文字、同じように改行のようなエスケープシーケンスを独自にもつコントロール文字にたいする値は、文字構文を使用してプリントされる。


Next: 出力変数のオーバーライド, Previous: 出力関数, Up: Lispオブジェクトの読み取りとプリント   [Contents][Index]