入出力


*eol-cr*

type: Variable
package: editor
file: encoding.l
改行コードのCRを表す値です。
プロセスやバッファの入出力の改行コードを設定するのに使用します。

seealso: *eol-lf*
seealso: *eol-crlf*
seealso: set-buffer-eol-code
[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

*eol-crlf*

type: Variable
package: editor
file: encoding.l
改行コードのCRLFを表す値です。
プロセスやバッファの入出力の改行コードを設定するのに使用します。

seealso: *eol-cr*
seealso: *eol-lf*
seealso: set-buffer-eol-code
[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

*eol-lf*

type: Variable
package: editor
file: encoding.l
改行コードのLFを表す値です。
プロセスやバッファの入出力の改行コードを設定するのに使用します。

seealso: *eol-cr*
seealso: *eol-crlf*
seealso: set-buffer-eol-code
[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

*keyboard*

type: Variable
package: editor
キーボードからの入力を表すストリームです。

seealso: *standard-input*
[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

*readtable*

type: Variable
package: lisp
現在のリードテーブルを格納している変数です。

seealso: si:*set-readtable-case
seealso: readtable-case
seealso: readtablep
seealso: copy-readtable
seealso: *ole-readtable*
[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

*standard-input*

type: Variable
package: lisp
標準入力を表すストリームです。
普段はキーボードからの入力になっています。

seealso: *standard-output*
seealso: *keyboard*
[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

*standard-output*

type: Variable
package: lisp
標準出力を表すストリームです。
普段はステータスバーのウィンドウへの出力になっています。
lisp-interaction-mode の C-j(eval-print-last-sexp) では
そのバッファへの出力になっています。

使用例:
  ;;; eval-expression で評価した場合
  *standard-output*  
  => #<status window stream 48042808>

  ;;; eval-print-last-sexp で評価した場合
  *standard-output*
  => #<buffer stream 48042280>

seealso: *standard-input*
[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

broadcast-stream-streams

type: Function
arguments: broadcast-stream-streams BROADCAST-STREAM
package: lisp
file: builtin.l
make-broadcast-streamで作られたBROADCAST-STREAMの出力先のストリームのリ
ストを返します。

使用例:
  ;;; hogeの出力先をリストで得る。
  (with-open-stream (foo (open "foo.txt" :direction :output))
    (with-open-stream (bar (open "bar.txt" :direction :output))
      (with-open-stream (hoge (make-broadcast-stream foo bar))
        (broadcast-stream-streams hoge))))
  => (#<file-output stream: C:/applications/xyzzy/foo.txt>
      #<file-output stream: C:/applications/xyzzy/bar.txt>)

seealso: make-broadcast-stream
[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

buffer-stream-buffer

type: Function
arguments: buffer-stream-buffer STREAM
package: editor
file: builtin.l
buffer-streamであるストリームが関連付けられているバッファを返します。

  STREAM : buffer-streamであるストリームを指定します。

seealso: make-buffer-stream
seealso: buffer-stream-point
seealso: xyzzyで提供されているストリームの種類
[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

buffer-stream-p

type: Function
arguments: buffer-stream-p STREAM
package: editor
file: builtin.l
ストリームがbuffer-streamかどうかを返します。

  STREAM : 判定するストリーム

  t   ストリームはbuffer-streamである。
  nil ストリームはbuffer-streamではない。

seealso: make-buffer-stream
seealso: xyzzyで提供されているストリームの種類
[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

buffer-stream-point

type: Function
arguments: buffer-stream-point STREAM
package: editor
file: builtin.l
buffer-streamであるストリームの入出力のポイントを返します。

  STREAM : buffer-streamであるストリームを指定します。

seealso: buffer-stream-set-point
seealso: buffer-stream-buffer
seealso: file-position
seealso: make-buffer-stream
seealso: read
seealso: xyzzyで提供されているストリームの種類
[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

buffer-stream-set-point

type: Function
arguments: buffer-stream-set-point STREAM POINT
package: editor
file: builtin.l
buffer-streamであるストリームの入出力のポイントを指定します。

  STREAM : buffer-streamであるストリームを指定します。
  POINT  : buffer-stream上の入出力のポイントを指定します。

参考:
  misc.lの with-output-to-buffer とか with-input-from-buffer

seealso: buffer-stream-point
seealso: xyzzyで提供されているストリームの種類
[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

clear-input

type: Function
arguments: clear-input &optional INPUT-STREAM
package: lisp
file: builtin.l
入力ストリームにバッファリングされている入力をクリアします。

seealso: open
[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

clear-message

type: Function
arguments: clear-message
package: editor
file: misc.l
ステータスバーのメッセージを消去します。

seealso: message
[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

close

type: Function
arguments: close STREAM &key :abort
package: lisp
file: builtin.l
指定されたストリームをクローズします。

  STREAM : クローズするストリームを指定します。
  :abort : 異常終了時に指定します。
        t       ストリームに対する副作用を取り消そうとします。
        nil     ストリーム普通に終了します。

seealso: open
[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

concatenated-stream-streams

type: Function
arguments: concatenated-stream-streams CONCATENATED-STREAM
package: lisp
file: builtin.l
make-concatenated-streamで作られたCONCATENATED-STREAMの入力元のストリームのリ
ストを返します。

使用例:
  ;;; hogeの入力元をリストで得る。
  (with-open-stream (foo (make-string-input-stream "foo"))
    (with-open-stream (bar (make-string-input-stream "bar"))
      (with-open-stream (hoge (make-concatenated-stream foo bar))
        (concatenated-stream-streams hoge))))
  => (#<string-input stream 48042632>
      #<string-input stream 48042544>)

seealso: make-concatenated-stream
[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

connect

type: Function
arguments: connect HOSTNAME SERVICE &key :encoding :ssl (:ssl-verify-mode :peer)
package: editor
file: builtin.l
ホストのポートとのTCP接続を開きます。
成功すれば接続へのストリームを返します。

  HOSTNAME         : 接続先のホスト名またはIPアドレスを指定します。
  SERVICE          : サービス名またはポート番号を指定します。
  :encoding        : エンコーディングのモードを指定します。
        :binary        バイナリモードです。
        :text          テキストモードです。(省略時は:text)
        :canonical     :text と同じ意味になります。
        :raw           改行コードの扱いが、LF のみになります。
                       それ以外は :text と同じです。
  :ssl             : SSL通信を行う場合はtを指定します。
  :ssl-verify-mode : SSL証明書の検証モードを指定します。
        :none          サーバ証明書を検証しません。
        :peer          サーバ証明書を検証します。
                       検証が失敗した場合socket-errorが通知されます。
                       デフォルトは:peerです。

参考:
  ;;; http://www.yahoo.co.jp/を取得してみる。
  (with-open-stream (stream (connect "www.yahoo.co.jp" 80))
    (format stream "GET / HTTP/1.0\n\n")
    (while (setq in (read-line stream nil))
      (insert in "\n")))

  ;;; https://www.google.co.jp/を取得してみる。
  (with-open-stream (stream (connect "www.google.co.jp" "https" :ssl t))
    (format stream "GET / HTTP/1.1\n")
    (format stream "Host: www.google.co.jp\n\n")
    (while (setq in (read-line stream nil))
      (insert in "\n")))

備考:
  SSL接続は xyzzy 0.2.2.248 から利用可能です。

seealso: open-network-stream
seealso: socket-stream-ssl-p
seealso: ssl-do-handshake
seealso: xyzzyで提供されているストリームの種類
[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

copy-readtable

type: Function
arguments: copy-readtable &optional FROM-READTABLE TO-READTABLE
package: lisp
file: builtin.l
リードテーブルをコピーします。

  FROM-READTABLE : コピー元 (デフォルトは *readtable*)
                   nil を明示的に与えるとデフォルトのリードテーブルをコピー。
  TO-READTABLE   : コピー先。省略時は新しく作成。

seealso: *readtable*
[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

debug-output-stream-p

type: Function
arguments: debug-output-stream-p STREAM
package: editor
file: builtin.l
ストリームがdebug-output-streamかどうかを返します。

  STREAM : 判定するストリーム

  t   ストリームはdebug-output-streamである。
  nil ストリームはdebug-output-streamではない。

補足:
  xyzzy 0.2.2.246 から利用可能です。

seealso: *debug-output*
seealso: xyzzyで提供されているストリームの種類
[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

echo-stream-input-stream

type: Function
arguments: echo-stream-input-stream ECHO-STREAM
package: lisp
file: builtin.l
make-echo-streamで作られたECHO-STREAMの入力元のストリームを返します。

seealso: make-echo-stream
[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

echo-stream-output-stream

type: Function
arguments: echo-stream-output-stream ECHO-STREAM
package: lisp
file: builtin.l
make-echo-streamで作られたECHO-STREAMの出力先のストリームを返します。

seealso: make-echo-stream
[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

file-position

type: Function
arguments: file-position FILE-STREAM &optional POSITION
package: lisp
file: builtin.l
FILE-STREAM上の現在位置を取得・変更します。
POSITIONを省略すると、FILE-STREAMの現在位置を返します。
POSITIONを指定すると、FILE-STREAMの現在位置を変更します。

  FILE-STREAM : 入出力するストリームを指定します。
  POSITION    : ストリームの先頭からの位置を指定します。
                0を基底とするインデックスです。

POSITIONには負の数値を指定することはできません。
また、ストリームの終端を越えた数値を指定すると、
その間はNUL文字が詰められます。

使用例:
  ;;; "01234567"と出力後、移動して"abc"と出力します。
  (setq foo (open "abc.txt" :direction :output))
  => #<file-output stream: C:/applications/xyzzy/abc.txt>
  (princ "0123456" foo)         => "0123456"
  (file-position foo 10)        => t
  (princ "abc" foo)             => "abc"
  (close foo)                   => t

seealso: buffer-stream-point
seealso: buffer-stream-set-point
[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

format

type: Function
arguments: format DESTINATION CONTROL-STRING &rest ARGUMENTS
package: lisp
file: builtin.l
出力書式に従って出力します。

  DESTINATION : 出力先を指定します。
        t       標準出力に出力
        nil     文字列として結果を返す
        fp      指定のストリームに出力

  CONTROL-STRING : 以下の出力指定子で整形します。
        ~A      Ascii(アスキー指示)。princタイプで出力。
        ~S      S-Expression(S式指示)。prin1タイプで出力。
        ~%      改行。~n%はn個の改行
        ~&      出力ストリームが行頭でなければ改行。fresh-line参照。
        ~|      改ページ
        ~~      Tilde(チルダ指示)
        ~改行   改行とそれに続く空白文字を無視する
        ~T      Tabulate(タブ指示)
        ~*      次のargumentを無視
        ~?      Indirection(間接指示)
        ~D      10進数
        ~B      Binary(2進指示)
        ~O      Octal(8進指示)
        ~X      Hexadecimal(16進指示)
        ~R      Radix(基数指示)
        ~P      Plural(複数形指示)
        ~C      Character(文字指示)
        ~F      Fixed-format floating-point(固定小数点形式浮動小数指示)
        ~E      Exponential floating-point(指数形式浮動小数指示)
        ~G      General floating-point(一般浮動小数点指示)
        ~$      Dollars floating-point(ドル浮動小数点指示)
        ~(      Case conversion(ケース変換指示)
        ~)      ~(を閉じる
        ~[      Conditional expression(条件選択指示)
        ~]      ~[を閉じる
        ~{      Iteration(反復指示)
        ~}      ~{を閉じる
        ~^      Up and out(ゼロ終了指示)

使用例:
  ;;; 整数に0を付けて出力 ("~[最小桁数][,パディング文字][,桁区切り文字]D")
  (format nil "~5,'0D" 4)
  => "00004"

  ;;; 整数を3桁ごとにカンマで区切って出力
  (format nil "~:D" 1234567890)
  => "1,234,567,890"

  ;;; 文字列を最低桁カラムになるように空白を追加して出力
  (format nil "~10A" "foo")
  => "       foo"
  (format nil "~10@A" "foo")
  => "foo       "

  ;;; ケース変換の例
  (format nil "~(~A~)" "FOO BAR")  ;全て小文字
  => "foo bar"
  (format nil "~:(~A~)" "foo bar") ;単語の先頭の文字を大文字
  => "Foo Bar"
  (format nil "~@(~A~)" "foo bar") ;先頭の文字を大文字
  => "Foo bar"
  (format nil "~:@(~A~)" "foo bar");全て大文字
  => "FOO BAR"

  ;;; 間接指示の例
  (format nil "~? ~D" "[~A ~D]" '("foo" 2) 3)
  => "[foo 2] 3"
  (format nil "~@? ~D" "[~A ~D]" "foo" 2 3)
  => "[foo 2] 3"

  ;;; 条件選択指示の例
  (format nil "Windows ~[NT~;98~;95~]" 0)
  => "Windows NT"
  (format nil "Windows ~[NT~;98~;95~]" 1)
  => "Windows 98"
  ;デフォルト値 "~:;"
  (format nil "Windows ~[NT~;98~;95~:;3.1~]" 5)
  => "Windows 3.1"

  ;;; 反復指示の例
  ; "~{" 引数はリスト
  (format nil "~{ ~A~}" '("dog" "cat" "pig"))
  => " dog cat pig"
  ; "~:{"  引数はリストのリスト
  (format nil "~:{[~A ~D]~}" '(("a" 1) ("b" 2) ("c" 3)))
  => "[a 1][b 2][c 3]"
  ; "~@{" 残りの引数をリストとして用いる
  (format nil "~@{[~A ~D]~}" "a" 1 "b" 2 "c" 3)
  => "[a 1][b 2][c 3]"
  ; "~@:{" 引数のリストをリストとして用いる
  (format nil "~:@{[~A ~D]~}" '("a" 1) '("b" 2) '("c" 3))
  => "[a 1][b 2][c 3]"

  ;;; ゼロ終了指示の例
  ;引数がなければ終了
  (format nil "Done.~^ ~D warning~:P.~^ ~D error~:P.")
  => "Done."
  (format nil "Done.~^ ~D warning~:P.~^ ~D error~:P." 3)
  => "Done. 3 warnings."
  (format nil "Done.~^ ~D warning~:P.~^ ~D error~:P." 3 5)
  => "Done. 3 warnings. 5 errors."

  ;;; 反復指示とゼロ終了指示
  ;副リストの中の引数がもうなければ "~{" をそこで閉じる
  (format nil "~:{/~S~^ ...~}" '((hot dog) (hamburger) (ice cream) (french fries)))
  => "/hot .../hamburger/ice .../french ..."
  ;リストが終わりならそこで ":{" 全体を終了
  (format nil "~:{/~S~:^ ...~}" '((hot dog) (hamburger) (ice cream) (french fries)))
  => "/hot .../hamburger .../ice .../french"
  ;副リストの中の引数がもうなければ全体を終了
  (format nil "~:{/~S~#:^ ...~}" '((hot dog) (hamburger) (ice cream) (french fries)))
  => "/hot .../hamburger"

  ;;; 16進数のformat書式の書き方
  (format nil "~2,'0x" 10)
  => "0a"
  (format nil "~:@(~2,'0x~)" 10)
  => "0A"

[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

fresh-line

type: Function
arguments: fresh-line &optional OUTPUT-STREAM
package: lisp
file: builtin.l
OUTPUT-STREAM が行の先頭ではないときだけ改行 (#\LFD) を出力します。

seealso: terpri
[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

get-dispatch-macro-character

type: Function
arguments: get-dispatch-macro-character DISP-CHAR SUB-CHAR &optional READTABLE
package: lisp
file: builtin.l
ディスパッチマクロを取得します。
SUB-CHAR は大文字小文字を区別しません。

DISP-CHAR がディスパッチマクロ文字でなければエラーとなります。

seealso: make-dispatch-macro-character
seealso: set-dispatch-macro-character
[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

get-macro-character

type: Function
arguments: get-macro-character CHAR &optional READTABLE
package: lisp
file: builtin.l
マクロ文字 CHAR に割り当てられている関数を返します。マクロ文字でない
場合は nil を返します。
また、マクロ文字である場合には二番目の戻り値として CHAR が 
non-terminating かどうかを返します。

使用例:
  ;;; # は non-terminating macro character
  (get-macro-character #\#)
  => system:|#-reader|
  => t
  ;;; ' は terminating macro character
  (get-macro-character #\')
  => system:|'-reader|
  => nil
  ;;; A はマクロ文字ではない
  (get-macro-character #\A)
  => nil

seealso: set-macro-character
[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

listen

type: Function
arguments: listen &optional INPUT-STREAM
package: lisp
file: builtin.l
指定された入力ストリームに何か入力がある状態ならばt、ないならばnilを返します。

seealso: read-char-no-hang
[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

make-broadcast-stream

type: Function
arguments: make-broadcast-stream &rest STREAMS
package: lisp
file: builtin.l
ブロードキャスト用の出力ストリームを作成します。
STREAMS に指定した複数のストリームに対して同時に出力することができます。

参考:
                        OUTPUT━━┓
                    ┌→┃STREAM1 ┠→
                    │  ┗━━━━┛
        BROADCAST ┓│  OUTPUT━━┓
    ─→┃STREAM  ┠┼→┃STREAM2 ┠→
        ┗━━━━┛│  ┗━━━━┛
                    │  OUTPUT━━┓
                    └→┃STREAM3 ┠→
                        ┗━━━━┛
使用例:
  ;;; fooとbarという出力ストリームを作ってから、
  ;;; hogeというブロードキャスト用ストリームを作り一括して出力
  (with-open-stream (foo (open "foo.txt" :direction :output))
    (with-open-stream (bar (open "bar.txt" :direction :output))
      (with-open-stream (hoge (make-broadcast-stream foo bar))
        (princ "abc" hoge))))
  => "abc"

seealso: broadcast-stream-streams
seealso: broadcast-stream-p
seealso: make-concatenated-stream
seealso: make-echo-stream
seealso: xyzzyで提供されているストリームの種類
[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

make-buffer-stream

type: Function
arguments: make-buffer-stream BUFFER &optional POINT EOB
package: editor
file: builtin.l
バッファ上にbuffer-streamを作成します。

  BUFFER : buffer-streamを作成するバッファを指定します。
  POINT  : 入出力を開始するポイントを指定します。
        nil     バッファの先頭が開始位置
        nil以外 指定されたポイントが開始位置
  EOB    : 終端のポイントを指定します。
        nil     バッファの最後が終端
        nil以外 指定されたポイントが終端

seealso: buffer-stream-buffer
seealso: buffer-stream-point
seealso: buffer-stream-set-point
seealso: xyzzyで提供されているストリームの種類
[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

make-concatenated-stream

type: Function
arguments: make-concatenated-stream &rest STREAMS
package: lisp
file: builtin.l
STREAMS に指定した複数の入力ストリームをくっつけて、順番に読み出すための
一つの入力ストリームを作ります。

参考:
                        INPUT ━━┓    
                      ┌┨STREAM1 ┃←─
                      │┗━━━━┛    
        CONCAT━━┓  │INPUT ━━┓    
    ←─┨STREAM  ┃←┼┨STREAM2 ┃←─
        ┗━━━━┛  │┗━━━━┛    
                      │INPUT ━━┓    
                      └┨STREAM3 ┃←─
                        ┗━━━━┛    

使用例:
  ;;; 文字列の入力ストリームを二本作った後、一本に連接してみる。
  (with-open-stream (foo (make-string-input-stream "foo"))
    (with-open-stream (bar (make-string-input-stream "bar"))
      (with-open-stream (hoge (make-concatenated-stream foo bar))
        (while (setq in (read-char hoge nil))
          (write-char in)))))

seealso: make-broadcast-stream
seealso: xyzzyで提供されているストリームの種類
[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

make-dispatch-macro-character

type: Function
arguments: make-dispatch-macro-character CHAR &optional NON-TERMINATING-P READTABLE
package: lisp
file: builtin.l
ディスパッチマクロ文字を新たに作成します。
CHAR が既にディスパッチマクロ文字であれば何もしません。

seealso: set-dispatch-macro-character
seealso: get-dispatch-macro-character
[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

make-echo-stream

type: Function
arguments: make-echo-stream INPUT-STREAM OUTPUT-STREAM
package: lisp
file: builtin.l
INPUT-STREAM からの入力を OUTPUT-STREAM に出力するストリームを作成します。
make-two-way-stream と異なり、 INPUT-STREAM から入力された内容は、全て
OUTPUT-STREAM にエコーされます。

参考:

     ECHO STREAM━┓    INPUT ━━┓
    ←─┨←───┨←─┨STREAM  ┃←─
        ┃    ┌─┨    ┗━━━━┛
        ┃    └→┃    OUTPUT━━┓
    ─→┠───→┠─→┃STREAM  ┠─→
        ┗━━━━┛    ┗━━━━┛

seealso: echo-stream-input-stream
seealso: echo-stream-output-stream
seealso: echo-stream-p
seealso: make-two-way-stream
seealso: make-broadcast-stream
seealso: xyzzyで提供されているストリームの種類
[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

make-string-input-stream

type: Function
arguments: make-string-input-stream STRING &optional START END
package: lisp
file: builtin.l
文字列からの入力用ストリームを作成します。
以後、このストリームからは文字列の内容を順番に取得可能です。

  STRING : 対象の文字列を指定します。
  START  : 入力ストリームとする開始位置です。
  END    : 入力ストリームとする終了位置です。

複数の入力ストリームを使用するのでなければ、with-input-from-string を使
用する方が簡単です。

使用例:
  ;;; 文字列の入力用ストリームからひとつ読み出してみる。
  (with-open-stream (foo (make-string-input-stream "abc def"))
    (read foo))
  => abc  

  ;;; with-input-from-stringを使って同じ事をしてみる。
  (with-input-from-string (foo "abc def")
    (read foo))
  => abc  

seealso: make-string-output-stream
seealso: with-input-from-string
seealso: xyzzyで提供されているストリームの種類
[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

make-two-way-stream

type: Function
arguments: make-two-way-stream INPUT-STREAM OUTPUT-STREAM
package: lisp
file: builtin.l
入力をINPUT-STREAM、出力をOUTPUT-STREAMにする入出力ストリームを作成します。

参考:
        TWO WAY
          STREAM━┓    INPUT ━━┓
    ←─┨←───┨←─┨STREAM  ┃←─
        ┃        ┃    ┗━━━━┛
        ┃        ┃    OUTPUT━━┓
    ─→┠───→┠─→┃STREAM  ┠─→
        ┗━━━━┛    ┗━━━━┛

seealso: two-way-stream-input-stream
seealso: two-way-stream-output-stream
seealso: make-echo-stream
seealso: xyzzyで提供されているストリームの種類
[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

message

type: Function
arguments: message FMT &rest ARGS
package: lisp
file: misc.l
メッセージをステータスバーに出力します。

  FMT  : format同様の書式が指定できます。
  ARGS : 出力書式へのパラメタとなります。

seealso: clear-message
seealso: msgbox
seealso: message-box
seealso: minibuffer-message
seealso: with-interval-message
seealso: format
seealso: *status-window*
seealso: status-window-stream-p
[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

open

type: Function
arguments: open FILENAME &key :direction :if-exists :if-does-not-exist :encoding :share
package: lisp
file: builtin.l
ファイルへのストリームを作成して返します。ストリームのクローズには close 
を使いますが、 with-open-stream を使えば close の手間が省ける上に安全です。

  FILENAME           : ストリームを作成するファイル名を指定します。
  :direction         : ストリームの入出力の方向を指定します。
        :input          入力(省略時)
        :output         出力
        :io             入出力
        :probe          ファイルテスト?
                        戻り値のストリームは無効になっています。
  :if-exists         : ファイルが存在する場合の動作を指定します。
        :error          エラーを出力します。(省略時)
        :skip           エラーは出力せず、nilを返します。
        :append         既存ファイルに追加します。
                        ストリームの位置はファイル終端になります。
        :overwrite      上書きします。
        :new-version    ファイルを作成します。
                        既にあれば上書きされます。
        ---- 以下詳細不明 ----
        :supersede      更新?
        :rename         リネーム用にストリームを開く?
        :rename-and-delete  リネーム用にストリームを開く?
  :if-does-not-exist : ファイルが存在しない場合の動作を指定します。
        :error          エラーを出力します。(省略時)
        :create         エラーは出力せず、入力ファイルを作成します。
  :encoding          : エンコーディングのモードを指定します。
        :binary         バイナリモードです。
        :text           テキストモードです。(省略時は:text)
        :canonical      :text と同じ意味になります。
        :raw            改行コードの扱いが、LF のみになります。
                        それ以外は :text と同じです。
  :share             : ファイルの共有モードを指定します。
        省略時     :direction が :input または :probe なら :read に、
                        それ以外は共有不可になります。
        :read           読み取りの共有が可能になります。
        :write          書き込みの共有が可能になります。
        :read-write     読み書きの共有が可能になります。

使用例:
  ;;; ストリーム経由でファイルに書き出してみる。
  (setq foo (open "abc.txt" :direction :output))
  => #<file-output stream: C:/applications/xyzzy/abc.txt>
  (princ "test" foo)
  => "test"
  (close foo)
  => t

seealso: close
seealso: clear-input
seealso: xyzzyで提供されているストリームの種類
seealso: with-open-file
seealso: with-open-stream
[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

open-stream-p

type: Function
arguments: streamp OBJECT
package: lisp
file: builtin.l
OBJECTが開いたストリームか否かを返します。
  t    OBJECTは開いたストリームです。
  nil  OBJECTはストリームでないか、閉じています。

seealso: streamp
[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

parse-integer

type: Function
arguments: parse-integer STRING &key :start :end :radix :junk-allowed
package: lisp
file: builtin.l
文字列から整数を読み取ります。
C言語のatoiに相当します。

  STRING  : 対象の文字列
  :start  : 読み取り開始位置
  :end    : 読み取り終了位置
  :radix  : 基数
  :junk-allowed
          : non-nilなら前後の空白を無視します

多値で二つの値を返します。
一つ目は読み込んだ整数値です。読み込めなかった場合はnilを返します。
二つ目は読んだ最後の文字の次の文字のインデックスです。文字列の最後まで読
んだ場合は文字列の長さになります。

例:
  (parse-integer "16")
  =>16
  =>2
  (parse-integer "016")
  =>16
  =>3
  (parse-integer " 16 ")
  =>不正な数値の形式です: " 16 "
  (parse-integer " 16 " :junk-allowed t)
  =>16
  =>3

備考:
  Common Lispの同名の関数と動作が異なります。
  Common Lispのparse-integerは:junk-allowedがnilでも前後の空白を無視し、
  non-nilのときは前後の空白のみならず数字以外の文字も無視します。

[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

peek-char

type: Function
arguments: peek-char &optional PEEK-TYPE INPUT-STREAM EOF-ERROR-P EOF-VALUE RECURSIVE-P
package: lisp
file: builtin.l
ストリームから文字を覗き見ます。read-charしてunread-charするようなもんです。

  PEEK_TYPE      : 覗き見る文字の種類を指定します。
        nil        全ての種類の文字を受け付けます。
        文字       指定された文字とEOFのみを受け付けます。
        上記以外   空白以外を受け付けます。
                   空白には 水平タブ 改行 垂直タブ 改ページ 行頭復帰 スペース が該当します。
                   キーでは TAB C-i LFD C-j RET C-m SPC が該当します。
  INPUT-STREAM   : 入力元のストリームを指定します。
  EOF-ERROR-P    : EOFをエラーとするかどうかを指定します。
        t          エラーとします。
        nil        エラーとせず、nilを返します。
  EOF-VALUE      : EOFのときにnilの代わりに返す文字を指定します。
  RECURSIVE-P    : 結果に影響しません。

戻り値は文字です。

使用例:
  ;;; 標準入力の文字を除き見る。
  (peek-char nil *standard-input* nil nil)

seealso: read-char
[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

prin1

type: Function
arguments: prin1 OBJECT &optional STREAM
package: lisp
file: stream.l
オブジェクトをストリームに出力します。

  OBJECT : 出力するオブジェクトを指定します。
  STREAM : ストリームを指定します。

STREAMを省略されたときは、標準出力に出力します。princでの出力とよく似て
いますが、エスケープ文字を出力することや文字列が引用符で囲まれる点が異な
ります。

使用例:
  ;;; princとprin1の出力の違い
  (princ "abc") => abc  (prin1 "abc") => "abc"
  (princ #\a)   => a    (prin1 #\a)   => #\a

seealso: princ
[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

princ

type: Function
arguments: princ OBJECT &optional STREAM
package: lisp
file: stream.l
オブジェクトをストリームに出力します。

  OBJECT : 出力するオブジェクトを指定します。
  STREAM : ストリームを指定します。

STREAMを省略されたときは、標準出力に出力します。prin1での出力とよく似て
いますが、エスケープ文字を出力しないことや文字列が引用符で囲まれない点が
異なります。
※CLtL2(Common Lisp the Language, 2nd edition)によると人間に読み易いよう
  に意図しているそうです。

使用例:
  ;;; princとprin1の出力の違い
  (princ "abc") => abc  (prin1 "abc") => "abc"
  (princ #\a)   => a    (prin1 #\a)   => #\a

seealso: prin1
[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

read

type: Function
arguments: read &optional INPUT-STREAM EOF-ERROR-P EOF-VALUE RECURSIVE-P
package: lisp
file: builtin.l
INPUT-STREAM から Lisp のオブジェクトを読み込んで返します。

  INPUT-STREAM : 入力元のストリーム
  EOF-ERROR-P  : EOFの状態でread-charしたときにどうするか?
        t               エラーとする。
        nil             エラーとせず、nilを返します。
  EOF-VALUE    : EOFの状態でreadしたときにnilの代わりに返す文字を指定します。
  RECURSIVE-P  : (詳細不明)

[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

read-as-string

type: Function
arguments: read-as-string STREAM &optional EOF-ERROR-P EOF-VALUE
package: editor
file: builtin.l
ストリームからトークンを読み込んで文字列として返します。
マクロ文字やエスケープ文字は読み取りません。

seealso: read
[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

read-char

type: Function
arguments: read-char &optional INPUT-STREAM EOF-ERROR-P EOF-VALUE RECURSIVE-P
package: lisp
file: builtin.l
指定された入力ストリームから一文字読み込んで、文字を返します。

  INPUT-STREAM : 入力ストリーム
  EOF-ERROR-P  : EOFの状態でread-charしたときにどうするか?
        t               エラーとする。
        nil             エラーとせず、nilを返します。
  EOF-VALUE    : EOFの状態でread-charしたときにnilの代わりに返す文字を指定します。
  RECURSIVE-P  : (詳細不明)

使用例:
  (read-char *keyboard*) <-- "a"を入力
  => #\a

補足:
  蛇足ですが、EOFはEnd Of Fileの略です。ファイルやストリームをすっかり読
  み終わってしまった状態を指します。

seealso: read-char-no-hang
seealso: write-char
[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

read-char-no-hang

type: Function
arguments: read-char-no-hang &optional INPUT-STREAM EOF-ERROR-P EOF-VALUE
package: lisp
file: builtin.l
read-char と同じです。ただし、入力がなければ待たずに nil を返します。

seealso: read-char
seealso: listen
[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

read-delimited-list

type: Function
arguments: read-delimited-list CHAR &optional INPUT-STREAM RECURSIVE-P
package: lisp
file: builtin.l
指定した文字が現れるまで Lisp オブジェクトを読み込み、結果のリストを返します。

  CHAR         : リストの終わりを表す文字
  INPUT-STREAM : 入力元のストリーム
  RECURSIVE-P  : nil ならトップレベル、non-nil なら再帰呼び出しとして読み込む

seealso: read
[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

read-from-string

type: Function
arguments: read-from-string STRING &optional EOF-ERROR-P EOF-VALUE &key :start :end :preserve-whitespace
package: lisp
file: stream.l
文字列を読み、多値で2つの値を返します。1つ目の戻り値は Lisp Reader が読
み込んだオブジェクトそのもの、2つ目の戻り値は文字列中において読まなかっ
た最初の文字の位置です。文字列を最後まで読んだ場合、2つ目の戻り値はその
文字列の長さと等しくなります。

  STRING               : 読む対象である文字列
  EOF-ERROR-P          : EOFの状態でread-from-stringしたときにどうするか?
                non-nil    エラーとします。(デフォルト)
                nil        エラーとせず、nilを返します。
  EOF-VALUE            : EOFの状態でread-from-stringしたときにnilの代わ
                         りに返す文字を指定します。
  :start               : 読み始める位置(デフォルトは0)
  :end                 : 読み終わる位置(デフォルトは文字列の長さ)
  :preserve-whitespace : (詳細不明)                non-nil                    nil        

seealso: parse-integer
[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

read-into

type: Function
arguments: read-into STRING &optional INPUT-STREAM EOF-ERROR-P EOF-VALUE MAX-LENGTH
package: editor
file: builtin.l
指定された入力ストリームから文字列を読み込み、指定された文字列に格納します。
結果の書き込みは破壊的に行われます。

  STRING       : 結果を格納する文字列。フィルポインタを持たなければならない
  INPUT-STREAM : 入力元のストリーム
  EOF-ERROR-P  : non-nil なら、入力ストリームが終端に達しているとエラー
  EOF-VALUE    : 入力ストリームが最初から終端に達していた場合の戻り値
  MAX-LENGTH   : 読み込む長さの上限。デフォルトは STRING の本来の長さ

INPUT-STREAM が終端に達していた場合を除いて戻り値は STRING です。

使用例:
  (let ((x (make-vector 2 :element-type 'character :fill-pointer 0)))
    (read-into x (make-string-input-stream "abcdef")))
  => "ab"

  (let ((x (make-vector 10 :element-type 'character :fill-pointer 0)))
    (read-into x (make-string-input-stream "abcdef")))
  => "abcdef"

  (let ((x (make-vector 10 :element-type 'character :fill-pointer 0)))
    (read-into x (make-string-input-stream "abcdef") t nil 3))
  => "abc"

seealso: read
[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

read-line

type: Function
arguments: read-line &optional INPUT-STREAM EOF-ERROR-P EOF-VALUE RECURSIVE-P
package: lisp
file: builtin.l
指定された入力ストリームから一行読み込んで文字列として返します。

  INPUT-STREAM : 入力元のストリーム
  EOF-ERROR-P  : nil 以外の場合、入力ストリームが終端に達しているとエラー
  EOF-VALUE    : 入力ストリームが最初から終端に達していた場合の戻り値

二つ目の戻り値として、改行文字を読み込んだ場合は nil を、に達した場合
は t を返します。

RECURSIVE-P は、与えることはできますが使用されません。

[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

read-line-into

type: Function
arguments: read-line-into STRING &optional INPUT-STREAM EOF-ERROR-P EOF-VALUE
package: editor
file: builtin.l
指定された入力ストリームから一行読み込んで、指定された文字列に格納します。
格納先の文字列は破壊されます。

  STRING       : 結果を埋め込む先の文字列。
                 フィルポインタを持ち、かつアジャスタブルでなければならない
  INPUT-STREAM : 入力元のストリーム
  EOF-ERROR-P  : non-nil なら、入力ストリームが終端に達しているとエラー
  EOF-VALUE    : 入力ストリームが最初から終端に達していた場合の戻り値

INPUT-STREAM が終端に達していた場合を除いて戻り値は STRING です。
また二つ目の戻り値として、改行文字を読み込んだ場合は nil を、終端に達
した場合は t を返します。

使用例:
  (let ((x (make-vector 2 :element-type 'character :fill-pointer 0 :adjustable t)))
    (read-line-into x (make-string-input-stream "abcdef")))
  => "abcdef"
  => t

  (let ((x (make-vector 2 :element-type 'character :fill-pointer 0 :adjustable t)))
    (read-line-into x (make-string-input-stream "abc\ndef")))
  => "abc"
  => nil

seealso: read-line
seealso: read-into
seealso: read
[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

read-preserving-whitespace

type: Function
arguments: read-preserving-whitespace &optional IN-STREAM EOF-ERROR-P EOF-VALUE RECURSIVE-P
package: lisp
file: builtin.l
ストリームから Lisp のオブジェクトを読み込んで返します。
read とほぼ同じですが、読んだ最後の文字が空白文字だった場合、その文字を
ストリームへ戻します。

seealso: read
[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

readtable-case

type: Function
arguments: readtable-case READTABLE
package: lisp
file: builtin.l
READTABLE の case sensitivity を返します。
この値はシンボルの read および print の際の挙動に影響します。

戻り値
  :upcase       read の際にアルファベットを大文字に変換
                print の際に小文字を含むシンボル名をエスケープ
  :downcase     read の際にアルファベットを小文字に変換
                print の際に大文字を含むシンボル名をエスケープ
  :preserve     大文字小文字の変換・エスケープをしない (デフォルト)
  :invert       read 時は :preserve と同じ?
                print の際にアルファベットを含むシンボル名をエスケープ

リードテーブルの case sensitivity を変更するには si:*set-readtable-case
または setf を使います。

例:
  (let ((*readtable* (copy-readtable *readtable*)))
    (dolist (rtc '(:upcase :downcase :preserve :invert))
      (setf (readtable-case *readtable*) rtc)
      (print (read-from-string "Foo"))))
  -> FOO
  -> foo
  -> Foo
  -> |Foo|
  => nil

seealso: si:*set-readtable-case
seealso: *readtable*
[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

readtablep

type: Function
arguments: readtablep OBJECT
package: lisp
file: builtin.l
OBJECT がリードテーブルなら t 、それ以外なら nil を返します。

seealso: *readtable*
[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

set-dispatch-macro-character

type: Function
arguments: set-dispatch-macro-character DISP-CHAR SUB-CHAR FUNCTION &optional READTABLE
package: lisp
file: builtin.l
ディスパッチマクロ文字を設定します。
SUB-CHAR は大文字小文字を区別しません。

DISP-CHAR がディスパッチマクロ文字でなければエラーとなります。
また SUB-CHAR に [0-9] は指定できません。

seealso: make-dispatch-macro-character
seealso: get-dispatch-macro-character
[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

set-macro-character

type: Function
arguments: set-macro-character CHAR FUNCTION &optional NON-TERMINATING-P READTABLE
package: lisp
file: builtin.l
マクロ文字を設定します。

  CHAR                  マクロ文字にする文字
  FUNCTION              CHAR が読まれたときに呼ばれる関数
  NON-TERMINATING-P     トークンの途中に現れた CHAR をマクロ文字とみなさない
  READTABLE             設定するリードテーブル

使用例:
  (set-macro-character #\? 'read-test)
  (defun read-test (stream ch)
    (list '*question* (read stream)))
  (read-from-string "?a")
  => (*question* a)
  => 2

seealso: get-macro-character
[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

si:*set-readtable-case

type: Function
arguments: *set-readtable-case READTABLE CASE
package: system
file: builtin.l
READTABLE の case sensitivity を CASE に設定します。

seealso: readtable-case
seealso: *readtable*
[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

si:*stream-line-number

type: Misc
arguments: *stream-line-number &optional STREAM
package: system
file: builtin.l
(詳細不明)
(si:*stream-line-number *standard-input*)

[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

socket-stream-ssl-p

type: Function
arguments: socket-stream-ssl-p STREAM
package: editor
file: builtin.l
STREAMがSSLストリームならtを返します。

補足:
  xyzzy 0.2.2.248 から利用可能です。

[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

ssl-do-handshake

type: Function
arguments: ssl-do-handshake STREAM SERVER-NAME &key (:ssl-verify-mode :peer)
package: editor
file: builtin.l
STREAMに対してSSL認証を行いSSLストリームに変換しtを返します。
STREAMがすでにSSLストリームなら何もせずnilを返します。
その後の通信はすべてSSL通信となります。

  STREAM           : ストリームを指定します。
  SERVER-NAME      : 証明書の検証に使用するサーバ名(コモンネーム)を指定します。
  :ssl-verify-mode : SSL証明書の検証モードを指定します。
        :none          サーバ証明書を検証しません。
        :peer          サーバ証明書を検証します。
                       検証が失敗した場合socket-errorが通知されます。
                       デフォルトは:peerです。

参考:
  ;;; Proxy経由でhttps://www.google.co.jp/を取得してみる。
  (defun proxy-https-get (proxy-host proxy-port host port path)
    (let (line res)
      (with-open-stream (stream (connect proxy-host proxy-port))
        (format stream "CONNECT ~A:~A HTTP/1.0~%~%" host port)
        (setq line (read-line stream))
        (unless (string-match "^HTTP/[0-9]\.[0-9] 200" line)
          (plain-error "CONNECT failed: ~S" line))
        (ssl-do-handshake stream host)
        (format stream "GET ~A HTTP/1.0~%" path)
        (format stream "Host: ~A~%~%" host)
        (while (setq line (read-line stream nil))
          (push line res))
        (nreverse res))))

  (format t "~{~A~%~}"
          (proxy-https-get "proxy.example.com" 8080
                           "www.google.co.jp" 443 "/"))

補足:
  xyzzy 0.2.2.248 から利用可能です。

seealso: connect
seealso: socket-stream-ssl-p
[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

streamp

type: Function
arguments: streamp OBJECT
package: lisp
file: builtin.l
OBJECTがストリームか否かを返します。
  t    OBJECTはストリームである。
  nil  OBJECTはストリームでない。

seealso: open-stream-p
[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

terpri

type: Function
arguments: terpri &optional OUTPUT-STREAM
package: lisp
file: builtin.l
OUTPUT-STREAM に改行 (#\LFD) を出力して nil を返します。

seealso: fresh-line
[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

two-way-stream-input-stream

type: Function
arguments: two-way-stream-input-stream TWO-WAY-STREAM
package: lisp
file: builtin.l
make-two-way-stream で作られた TWO-WAY-STREAM の入力元のストリームを返します。

seealso: make-two-way-stream
[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

two-way-stream-output-stream

type: Function
arguments: two-way-stream-output-stream TWO-WAY-STREAM
package: lisp
file: builtin.l
make-two-way-stream で作られた TWO-WAY-STREAM の出力先のストリームを返します。

seealso: make-two-way-stream
[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

unread-char

type: Function
arguments: unread-char CHARACTER &optional INPUT-STREAM
package: lisp
file: builtin.l
入力ストリームに一文字戻します。

  CHARACTER    : 入力ストリームに戻す文字
  INPUT-STREAM : 入力ストリーム

[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

with-input-from-buffer

type: Macro
arguments: with-input-from-buffer (BUFFER &optional POINT EOB) &rest BODY
package: editor
file: misc.l
バッファを入力ストリームとして扱えるようになり、
*standard-input*から読み込まれるようになります。

使用例:
  ;;; *scratch*の内容を*Output*に吐き出す。
  (with-output-to-buffer ((switch-to-buffer "*Output*"))
    (with-input-from-buffer ((switch-to-buffer "*scratch*"))
      (while (setq line (read-line *standard-input* nil))
        (princ line)
        (princ "\n"))))

seealso: with-output-to-buffer
[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

with-input-from-selected-buffer

type: Macro
arguments: with-input-from-selected-buffer &rest BODY
package: editor
file: misc.l
現在のバッファを標準入力にして読み込みます。

使用例:
  ;;; 現在のバッファから読み込んで変数に入れる。
  (with-input-from-selected-buffer
    (setq name (read) count (read) exp (read)))

[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

with-input-from-string

type: Macro
arguments: with-input-from-string (VAR STRING &key :index :start :end) &body BODY
package: lisp
file: stream.l
文字列を標準入力にして読み込みます。

seealso: make-string-input-stream
seealso: with-output-to-string
[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

with-interval-message

type: Macro
arguments: with-interval-message (INTERVAL) &body BODY
package: editor
file: misc.l
BODY 内で message コマンドによる表示の更新間隔を制限します。

  INTERVAL : 表示の最低更新間隔(ミリ秒)。
             前回 message を実行したときから INTERVAL ミリ秒以上経過していない場合、
             新たなメッセージを表示しません。

使用例:
  ;; 更新間隔を 100 ミリ秒にしてみる。
  (with-interval-message (100)
    (dotimes (i 100000)
      (message "~D" i)))

seealso: message
[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

with-open-file

type: Macro
arguments: with-open-file (STREAM FILENAME &rest OPTIONS) &body BODY
package: lisp
file: stream.l
指定されたファイルからストリームを作成し、本体を評価します。

  STREAM    : ストリームに束縛される変数
  FILENAME  : ストリームを作成するファイル名
  OPTIONS   : キーワード引数。open へ渡せるものと同じ
  BODY      : 実行する本体

使用例:
  (with-open-file (fp (merge-pathnames "lisp/henmi/c++-kwd.txt" (si:system-root)))
    (let ((line nil))
      (while (setq line (read-line fp nil nil nil))
        (push line *kekka*))))

seealso: with-open-stream
seealso: open
[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

with-open-stream

type: Macro
arguments: with-open-stream (VAR STREAM) &body BODY
package: lisp
file: stream.l
局所変数をストリームに束縛して本体を評価し、ストリームを閉じます。

参考:
  connect の例を参照のこと

seealso: with-open-file
seealso: connect
[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

with-output-to-buffer

type: Macro
arguments: with-output-to-buffer (BUFFER &optional POINT) &rest BODY
package: editor
file: misc.l
標準出力を指定されたバッファにリダイレクトします。

  BUFFER : 出力するバッファ
  POINT  : 出力をするポイントを指定します。
           指定しない場合には、バッファの先頭から出力されます。
  BODY   : 実行するフォーム

使用例:
  ;;; *scratch*に書き出してみる。
  (with-output-to-buffer ((find-buffer "*scratch*"))
     (format t "foo~%")
     (format t "bar~%"))

seealso: with-output-to-selected-buffer
seealso: with-output-to-temp-buffer
[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

with-output-to-selected-buffer

type: Function
arguments: with-output-to-selected-buffer &rest BODY
package: editor
file: misc.l
標準出力をカレントバッファにリダイレクトします。
ポイントがある位置から出力されます。
  
使用例:
  ;;; カレントバッファに書き出してみる。
  (with-output-to-selected-buffer
     (format t "foo~%")
     (format t "bar~%"))

seealso: with-output-to-buffer
[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

with-output-to-string

type: Macro
arguments: with-output-to-string (VAR &optional STRING) &body BODY
package: lisp
file: stream.l
文字列を出力するストリームを作成します。

使用例:
  ;;; ストリームを使って文字列を出力してみる。
  (setq var
        (with-output-to-string (out)
          (prin1 "test" out)))
  => "test"

seealso: make-string-output-stream
seealso: with-input-from-string
[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

with-output-to-temp-buffer

type: Macro
arguments: with-output-to-temp-buffer (BUFNAME &optional (POPUP t)) &rest BODY
package: editor
file: misc.l
指定されたバッファを作成し、標準出力をそのバッファにリダイレクトします。
同じ名前のバッファがあった場合には、そのバッファの内容は破棄されます。
単に処理結果だけを書き込むような場合に便利です。

  BUFNAME : バッファの名前を指定します。
  POPUP   : バッファを分割表示する際の行数/列数を指定します。
        t       ニ分割します。
        整数    指定行数/列数で分割します。
        nil     バッファを分割表示しません。
  VERT-P  : バッファの分割方法を指定します。
            POPUP が nil の場合は意味を持ちません。
        non-nil 左右にバッファを分割します。
        nil     上下にバッファを分割します。

使用例:
  ;;; *Help*を作ってそこに書き出してみる。
  (with-output-to-temp-buffer ("*Help*")
     (format t "foo~%")
     (format t "bar~%"))

互換性:
   muleにもCommon Lispにもありません。

seealso: with-output-to-buffer
[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

write

type: Function
arguments: write OBJECT &key :stream :escape :pretty :base :radix :circle :level :length :readably
package: lisp
file: builtin.l
OBJECTを印字表現でストリームに出力します。

  OBJECT       : 出力するオブジェクトを指定します。

  :stream      : 出力するストリームを指定します。
                 省略すると*standard-output*に出力します。

  :escape      : エスケープするかどうか指定します。
                 デフォルトの値は*print-escape*です。
        non-nil  prin1やformat指定子の~Sと同じように出力されます。
        nil      princやformat指定子の~Aと同じように出力されます。

  :pretty      : 式の表示を見やすくするかどうかを指定します。
                 デフォルトの値は*print-pretty*です。
        non-nil  見やすくします。
        nil      見やすくしません。

  :base        : 基数を指定します。
                 2〜36までを指定でき、それ以外は10進数になります。
                 デフォルトの値は*print-base*です。

  :radix       : 基数を主力するかどうかを指定します。
                 デフォルトの値は*print-radix*です。
        non-nil  #(基数)r(数)の形で出力します。
                 10進数の時はこの形ではなく、最後に . が付きます。
                 2進数,8進数,16進数の基数はそれぞれ、b,o,xと表示され、
                 それ以外の時は基数自体は10進数で表示されます。
        nil      数のみ出力します。

  :circle      : 循環リストを考慮するかどうかを指定します。
                 デフォルトの値は*print-circle*です。
        non-nil  考慮し、#1=(a . #1#) のような形で表示します。
        nil      考慮しません。無限に表示されるのでC-gで止める必要があります。

  :level       : リスト出力の深さの制限を指定します。
                 制限よりも深い位置にあるリストは、#で表示されます。
                 デフォルトの値は*print-level*です。

  :length      : リスト出力の長さの制限を指定します。
                 制限よりも長いリストは途中で打ち切られ、
                 ... で表示されます。
                 デフォルトの値は*print-length*です。

  :readably    : 読めるように出力します。
                 デフォルトの値は*print-readably*です。
        non-nil  :lengthや:levelのnon-nil指定を無効にし、
                 :escapeがnilでもnon-nilを指定したように出力します。

seealso: read
[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

write-char

type: Function
arguments: write-char CHARACTER &optional OUTPUT-STREAM
package: lisp
file: builtin.l
OUTPUT-STREAM に CHARACTER を出力し、その CHARACTER を返します。

seealso: read-char
[ Intro | 目次 | 索引 | 目的別 | 入出力 ]

xyzzyで提供されているストリームの種類

type: Tips
(途中)
以下はxyzzyで提供されているストリームの種類です。

  Commonと同じ
  ---------------------------------------------
  file-input-stream       open
  file-output-stream      open
  file-io-stream          open
  string-input-stream     make-string-input-stream
  string-output-stream    make-string-output-stream
  synonym-stream          make-synonym-stream
  broadcast-stream        make-broadcast-stream
  concatenated-stream     make-concatenated-stream
  echo-stream             make-echo-stream
  two-way-stream          make-two-way-stream
  ---------------------------------------------

synonym-stream以降は使ったことないんで(^^;、動くかどうか分からないんです
が多分動くでしょう(^^)。

  独自
  ---------------------------------------------
  buffer-stream           make-buffer-stream
  status-window-stream    なし
  keyboard-stream         なし
  wstreams-stream         なし
  debug-output-stream     なし
  ---------------------------------------------

独自ストリームの概要:
  buffer-stream
    バッファをストリームとみなして入出力どっちでもできます。  
  status-window-stream
    ステータスウィンドウをストリームとみなして出力ができます。
    グローバル変数*status-window*の値です。
  keyboard-stream
    キーボードをストリームとみなして入力ができます。
    グローバル変数*keyboard*の値です。
  wstreams-stream
    formatからコールバックが呼ばれたときのstreamの実体。
  debug-output-stream
    現在のデバッガをストリームとみなして出力ができます。
    グローバル変数*debug-output*の値です。

補足:
  debug-output-stream は xyzzy 0.2.2.246 から利用可能です。

seealso: open
seealso: make-string-input-stream
seealso: make-string-output-stream
seealso: make-synonym-stream
seealso: make-broadcast-stream
seealso: make-concatenated-stream
seealso: make-echo-stream
seealso: make-two-way-stream
seealso: make-buffer-stream
seealso: connect
seealso: stream-encoding
seealso: set-stream-encoding
[ Intro | 目次 | 索引 | 目的別 | 入出力 ]