aboutsummaryrefslogtreecommitdiff
path: root/scm/extant-input.scm
blob: d50a7fe648f1cbe7ff32f89894b8faa7fde2ebd8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
(define-module (extant input)
  #:export (register-handler!))

(define *handlers* '())

(define (register-handler! proc)
  (set! *handlers* (cons proc *handlers*)))

(define (dispatch-input text)
  (let loop ((handlers *handlers*))
    (if (null? handlers)
	`((text . "No handlers found!")
	  (style . "error"))
	(let ((result ((car handlers) text)))
	  (or result (loop (cdr handlers)))))))