この変数の値はデフォルトの出力ストリーム—print関数がstream引数にnilを指定した際に使用するストリームです。デフォルトはtで、これはエコー領域への表示を意味します。
これが nil
以外の場合、短縮されたリーダー構文を用いて引用形式を出力することを意味します。例えば、(quote
foo) は 'foo として、(function foo) は #'foo
として出力されます。デフォルトは t です。
この変数が nil 以外の場合、文字列内の改行文字は ‘\n’ として、フォームフィードは ‘\f’
として出力されます。通常、これらの文字は実際の改行文字およびフォームフィードとして出力されます。
この変数は、クォート付きで出力するprint関数 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 の場合、「予期しない」 charset プロパティが存在する場合にのみ、charset
テキストプロパティを出力します。ASCII文字については、すべての文字セットが「想定内」とみなされます。それ以外の場合、文字の想定される charset プロパティは char-charset
で指定されます。
この変数の値は、任意のリスト、ベクトル、またはbool-vectorにおいて出力される要素の最大数です。出力対象のオブジェクトがこの数を超える要素を持つ場合は、省略記号を用いて省略されます。
値が nil(デフォルト)の場合、制限はありません。
(setq print-length 2)
⇒ 2
(print '(1 2 3 4 5))
⊣ (1 2 ...)
⇒ (1 2 ...)
この変数の値は、出力時の括弧や角括弧の最大ネスト深度です。この制限を超える深度にあるリストやベクトルは、省略記号で省略されます。nil(デフォルト値)という値は、制限がないことを意味します。
これらは eval-expression が使用し、ひいては多くの対話型評価コマンドが使用する
print-length および print-level の値です(The GNU Emacs
Manual の Evaluating
Emacs Lisp Expressions を参照)。
これらの変数は、循環構造や共有構造の検出および報告に使用されます:
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"
non-nil の場合、この変数を有効にすると、出力時にインターニングされていないシンボル(シンボルの作成とインターニングを参照)を検出できるようになります。これを有効にすると、インターニングされていないシンボルは接頭辞
‘#:’ を付けて出力され、これにより 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の一般カテゴリである「文字」、「数字」、「句読点」、「記号」および「私用」に属する文字(文字プロパティを参照)のほか、改行のように独自のエスケープ構文を持つ制御文字を指します。
このユーザー変数は、pp が出力を整形する際に使用する関数を指定します。デフォルトでは pp-fill が使用されており、これは処理速度と、fill-column
に収まる自然な見た目の出力生成とのバランスを良好に保とうとするものです。以前のデフォルトは pp-28 で、こちらは処理速度が速い傾向にありますが、出力の自然さに欠け、コンパクトさも劣ります。