Function: xscheme-process-filter
xscheme-process-filter is a byte-compiled function defined in
xscheme.el.gz.
Signature
(xscheme-process-filter PROC STRING)
Source Code
;; Defined in /usr/src/emacs/lisp/progmodes/xscheme.el.gz
(defun xscheme-process-filter (proc string)
(let ((xscheme-filter-input string)
(call-noexcursion nil))
(while xscheme-filter-input
(setq call-noexcursion nil)
(with-current-buffer (process-buffer proc)
(cond ((eq xscheme-process-filter-state 'idle)
(let ((start (string-search "\e" xscheme-filter-input)))
(if start
(progn
(xscheme-process-filter-output
(substring xscheme-filter-input 0 start))
(setq xscheme-filter-input
(substring xscheme-filter-input (1+ start)))
(setq xscheme-process-filter-state 'reading-type))
(let ((string xscheme-filter-input))
(setq xscheme-filter-input nil)
(xscheme-process-filter-output string)))))
((eq xscheme-process-filter-state 'reading-type)
(if (zerop (length xscheme-filter-input))
(setq xscheme-filter-input nil)
(let ((char (aref xscheme-filter-input 0)))
(setq xscheme-filter-input
(substring xscheme-filter-input 1))
(let ((entry (assoc char xscheme-process-filter-alist)))
(if entry
(funcall (nth 2 entry) (nth 1 entry))
(progn
(xscheme-process-filter-output ?\e char)
(setq xscheme-process-filter-state 'idle)))))))
((eq xscheme-process-filter-state 'reading-string)
(let ((start (string-search "\e" xscheme-filter-input)))
(if start
(let ((string
(concat xscheme-string-accumulator
(substring xscheme-filter-input 0 start))))
(setq xscheme-filter-input
(substring xscheme-filter-input (1+ start)))
(setq xscheme-process-filter-state 'idle)
(if (listp xscheme-string-receiver)
(progn
(setq xscheme-string-receiver
(car xscheme-string-receiver))
(setq call-noexcursion string))
(funcall xscheme-string-receiver string)))
(progn
(setq xscheme-string-accumulator
(concat xscheme-string-accumulator
xscheme-filter-input))
(setq xscheme-filter-input nil)))))
(t
(error "Scheme process filter -- bad state"))))
(if call-noexcursion
(funcall xscheme-string-receiver call-noexcursion)))))