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


20.7 出力変数のオーバーライド

前のセクション(出力に影響する変数を参照)では、Emacs Lispプリンターが出力用にデータをどのようにフォーマットするかを制御するさまざまな変数を説明しました。これらは一般的には変更用にユーザーが利用できますが、デフォルトのフォーマットでデータを出力したり、あるいは他の手段でユーザーセッティングをオーバーライドしたい場合があるかもしれません。たとえばEmacs Lispのデータをファイルに格納したい場合には、そのデータがprint-lengthのセッティングによって短縮されたくはないでしょう。

そのためにprin1およびprin1-to-stringという関数にはオプションとしてoverrides引数があります。この引数にはt(すべてのプリント用変数をデフォルト値にリセット)、あるいはいくつかの変数にたいするセッティングのリストのいずれかを指定できます。このリストの要素はそれぞれt(“デフォルトへのリセット”を意味しており、通常はリストの最初の要素)、あるいはcarが出力変数を意味するシンボルでcdrがその変数にたいする値であるようなペアーを指定できます。

たとえば以下はデフォルトだけを用いてプリントします:

(prin1 object nil t)

以下はカレントのプリントセッティングを用いてobjectをプリントしますが、print-lengthの値を5にオーバーライドします:

(prin1 object nil '((length . 5)))

そして最後はprint-lengthを5にバインドする以外はデフォルトセッティングを用いてobjectをプリントする例です:

(prin1 object nil '(t (length . 5)))

以下は使用できるシンボルと、それらのシンボルがマップされる変数のリストです:

length

print-lengthをオーバーライドする。

level

print-levelをオーバーライドする。

circle

print-circleをオーバーライドする。

quoted

print-quotedをオーバーライドする。

escape-newlines

print-escape-newlinesをオーバーライドする。

escape-control-characters

print-escape-control-charactersをオーバーライドする。

escape-nonascii

print-escape-nonasciiをオーバーライドする。

escape-multibyte

print-escape-multibyteをオーバーライドする。

charset-text-property

print-charset-text-propertyをオーバーライドする。

unreadeable-function

print-unreadable-functionをオーバーライドする。

gensym

print-gensymをオーバーライドする。

continuous-numbering

print-continuous-numberingをオーバーライドする。

number-table

print-number-tableをオーバーライドする。

float-format

float-output-formatをオーバーライドする。

integers-as-characters

print-integers-as-charactersをオーバーライドする。

将来的には変数に直接マップされない、このパラメーターだけを介してのみ使用できるオーバーライドが更に提供されるかもしれません。