Next: Output Streams, Previous: Input Streams, Up: Read and Print [Contents][Index]
このセクションでは、読み取りに関係のあるLisp関数と変数について説明します。
以下の関数ではstreamは入力ストリーム(前のセクションを参照)を意味します。streamがnil
または省略された場合のデフォルト値はstandard-input
です。
読み取りにおいて終端されていないリスト、ベクター、文字列に遭遇したらend-of-file
がシグナルされます。
この関数はstreamからテキスト表現されたLisp式を1つ読み取ってLispオブジェクトとしてリターンする。これは基本的なLisp入力関数である。
この関数はstring内のテキストからテキスト表現された最初のLisp式を読み取る。リターン値はCARがその式で、CDRが次に読み取られるその文字列内の残りの文字(読み取られていない最初の文字)の位置を与える整数であるようなコンスセルである。
startが与えられると、文字列内のインデックスstart(最初の文字はインデックス0)から読み取りが開始される。endを指定すると、残りの文字列が存在しないかのごとくそのインデックスの直前で読み取りがストップされる。
たとえば:
(read-from-string "(setq x 55) (setq y 5)") ⇒ ((setq x 55) . 11)
(read-from-string "\"A short string\"") ⇒ ("A short string" . 16)
;; 最初の文字から読み取りを開始
(read-from-string "(list 112)" 0)
⇒ ((list 112) . 10)
;; 2つ目の文字から読み取りを開始
(read-from-string "(list 112)" 1)
⇒ (list . 5)
;; 7番目の文字から読み取りを開始 ;; して9番目の文字で停止 (read-from-string "(list 112)" 6 8) ⇒ (11 . 8)
この変数はデフォルト入力ストリーム(引数streamがnil
のときにread
が使用するストリーム)を保持する。デフォルトはt
で、これはミニバッファーを使用することを意味する。
非nil
なら、この変数は循環構造(circular structure)と共有構造(shared
structures)の読み取りを有効にする。Circular Objectsを参照のこと。デフォルト値はt
。
batchモードでEmacsプロセスの標準入力ストリームや標準出力ストリームにたいして読み取りや書き込みを行う際には、任意のバイナリーデータにたいしてそのまま読み取りや書き込みを行ったり、改行とCRLFの変換を行わないことが要求されるときがあります。これはMS-WindowsとMS-DOSだけに存在し、Posixホストには存在しない問題です。以下の関数によってEmacsプロセスの標準ストリームすべての入出力モードを制御できます。
streamの入出力モードのテキストとバイナリーを切り替える。modeが非nil
ならバイナリーモード、それ以外ならテキストモードに切り替える。streamの値はstdin
、stdout
、stderr
のいずれか。この関数は副作用として保留されているstreamの出力データをすべてフラッシュして、streamの以前の入出力モードをリターンする。Posixホストでは常に非nil
値をリターンして、保留中の出力のフラッシュ以外は何も行わない。