Next: 出力変数のオーバーライド, Previous: 出力関数, Up: Lispオブジェクトの読み取りとプリント [Contents][Index]
この変数の値はデフォルト出力ストリーム(stream引数がnil
のときプリント関数が使用するストリーム)である。デフォルトはt
で、これはエコーエリアに表示することを意味する。
これが非nil
なら、省略されたリーダー構文(たとえば(quote
foo)
を'foo
、(function
foo)
を#'foo
のように)を使用してクォートされたフォームをプリントすることを意味する。デフォルトはt
。
この変数が非nil
なら、文字列内の改行は‘\n’、改ページは‘\f’でプリントされる。これらの文字は通常は実際の改行と改ページとしてプリントされる。
この変数はクォートつきのプリントを行うプリント関数prin1
とprint
に影響を与える。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
のローカルバインドが効果をもつが、結果をプリントするときには効果がない。
この変数が非nil
なら、クォートつきでプリントするプリント関数prin1
とprint
は、文字列内のコントロール文字をバックスラッシュシーケンスとしてプリントする。この変数とprint-escape-newlines
がいずれも非nil
なら改行と改頁には後者が優先される。
この変数が非nil
なら、クォートつきでプリントするプリント関数prin1
とprint
は文字列内のユニバイトの非ASCII文字を無条件でバックスラッシュシーケンスとしてプリントする。
これらの関数は出力ストリームがマルチバイトバッファー、あるいはマーカーがマルチバイトバッファーをポイントするときは、この変数の値に関わらずユニバイト非ASCII文字にたいしてバックスラッシュシーケンスを使用する。
この変数が非nil
なら、クォートつきでプリントするプリント関数prin1
とprint
は、文字列内のマルチバイトの非ASCII文字を無条件でバックスラッシュシーケンスとしてプリントする。
これらの関数は出力ストリームがユニバイトバッファー、あるいはマーカーがユニバイトバッファーをポイントするときは、この変数の値に関わらずマルチバイト非ASCII文字にたいしてバックスラッシュシーケンスを使用する。
この変数は文字列のプリントにおいてテキストプロパティ‘charset’のプリントを制御する。値はnil
、t
、またはdefault
のいずれか。
値がnil
ならcharset
テキストプロパティを決してプリントせず、t
なら常にプリントする。
値がdefault
なら“予期せぬ(unexpected)”charset
プロパティがある場合だけcharset
テキストプロパティをプリントする。ASCII文字ではすべてのcharsetが“期待された(expected)”ものとみなされる。それ以外なら文字の期待されるcharset
プロパティはchar-charset
により与えられる。
この変数の値は任意のリスト、ベクター、ブールベクターをプリントする際の最大要素数である。プリントされるオブジェクトがこれより多くの要素をもつ場合は、省略記号(“...”)で省略される。
値がnil
(デフォルト)の場合は無制限。
(setq print-length 2) ⇒ 2
(print '(1 2 3 4 5)) -| (1 2 ...) ⇒ (1 2 ...)
この変数の値はプリント時の丸カッコ(parentheses: “()”)と角カッコ(brackets:
“[]"’)のネスト最大深さである。この制限を超える任意のリストとベクターは省略記号(“...”)で省略される。値nil
(デフォルト)は無制限を意味する。
これらはeval-expression
によって使用されるprint-length
とprint-level
の値であり、したがって間接的に多くのインタラクティブな評価コマンドにより使用される(Evaluating Emacs Lisp Expressions in The GNU Emacs Manualを参照)。
以下の変数は循環構造および共有構造の検出と報告に使用されます:
非nil
なら、この変数はプリント時の循環構造と共有構造の検出を有効にする。循環オブジェクトの読み取り構文を参照のこと。
デフォルトでは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"
非nil
なら、この変数はプリント時のインターンされていないシンボル(シンボルの作成とinternを参照)の検出を有効にする。これが有効なら、インターンされていないシンボルはプレフィックス‘#:’とともにプリントされる。このプレフィックスは、Lispリーダーにたいしてインターンされていないシンボルを生成するよう告げる。
非nil
なら、複数のプリント呼び出しを通じて通番が振られることを意味する。これは‘#n=’ラベルと‘#m#’参照にたいしてプリントされる数字に影響する。この変数をsetq
でセットしてはならない。let
を使用して一時的にt
にバインドすること。これを行う場合はprint-number-table
もnil
にバインドすること。
この変数はprint-circle
機能を実装するために、プリント処理で内部的に使用されるベクターを保持する。print-continuous-numbering
をバインドするときにこの変数をnil
にバインドする以外は、この変数を使用するべきではない。
この変数は浮動小数点数をプリントする方法を指定する。デフォルトはnil
で、これは情報を失わずにその数値を表せるもっとも短い出力を使用することを意味する。
出力フォーマットをより精密に制御するために、この変数に文字列をセットできる。この文字列にはCのsprintf
関数で使用される‘%’指定子をセットする。この変数で使用することのできる制限についての詳細は、この変数のドキュメント文字列を参照のこと。
この変数が非nil
ならグラフィックベース文字を表す整数はLispの文字構文を用いてプリントされる(基本的な文字構文を参照)。それ以外の数は通常の方法でプリントされる。たとえばリスト(4 65 -1 10)
は‘(4 ?A -1
?\n)’のようにプリントされるだろう。
正確にはUnicode一般カテゴリーLetter、Number、Punctuation、Symbol、Private-useに属する文字(文字のプロパティを参照)を表す文字、同じように改行のようなエスケープシーケンスを独自にもつコントロール文字にたいする値は、文字構文を使用してプリントされる。
このユーザーオプションは出力を見栄えよくするために、pp
が使用する関数を指定する。デフォルトではpp-fill
を使用する。この関数は速度とfill-column
に適合するような自然な見栄えの出力生成との間で、良好なバランスを達成しようと試みる。以前のデフォルトであるpp-28
はより高速だったが、見栄えの自然さとコンパクト性において劣っていた。
Next: 出力変数のオーバーライド, Previous: 出力関数, Up: Lispオブジェクトの読み取りとプリント [Contents][Index]