[Date Prev] [Date Index] [Date Next]
[Thread Prev] [Thread Index] [Thread Next]

[xyzzy:03225] Re: process-output



Tetsuya Kamei さんは書きました:
>えーと、すいません。いまいち状況が分からないのですが、
>もう少し具体的になりますでしょうか?

すいません間違えました。sentinel ではなくて、
filter と言いたかったのでした。

で説明しますと、

まずチャットなので入力用と出力用のバッファを用意します。
  (setq italk-log-buffer (create-new-buffer italk-log-buffer-name))
  (setq italk-input-buffer (create-new-buffer italk-input-buffer-name))
サーバに接続して、process-filterを設定します。
  (setq italk-process (open-network-stream italk-log-buffer italk-server-host-name 12345))
  (set-process-filter italk-process 'italk-display-filter)
入力バッファでは改行を打った時に行全体を送るコマンドを実行します。
  (setq italk-input-map (make-sparse-keymap))
  (define-key italk-input-map #\C-m 'italk-send-message-full)
  (defun italk-send-message-full () ....
    (process-send-string italk-process (concat str "\n"))
  ....)

で、process-filter は、次のようになっています。
(defun italk-display-filter (process string)
  (save-excursion
    (set-buffer (find-buffer italk-log-buffer-name))
    (insert string)
  )
)

ネットワークから他者の発言が送られて来ていても
なんらかのイベント(キー入力、マウスのクリック、ウィンドウ切り替え)を
ユーザーがしない限り、画面にその発言が表示されないのです。

ということですが、これで分かりますでしょうか?
lispコードそのものをこちらに置いておきます。
http://www.tky.3web.ne.jp/~applause/italk.l

ではでは。

Applause こと 寺川 愛印
http://www.tky.3web.ne.jp/~applause/

----
寺川 愛印  applause@xxxxxxxxxxxxxx

Index Home