Previous: 出力に影響する変数, Up: Lispオブジェクトの読み取りとプリント [Contents][Index]
前のセクション(出力に影響する変数を参照)では、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
をオーバーライドする。
将来的には変数に直接マップされない、このパラメーターだけを介してのみ使用できるオーバーライドが更に提供されるかもしれません。