(define-library (chibi term edit-line)
  (export make-line-editor edit-line edit-line-repl
          make-history history-insert! history-reset!
          history-commit! history->list list->history buffer->string
          make-buffer buffer-make-completer
          buffer-clear buffer-refresh buffer-draw
          buffer-row buffer-col
          make-keymap make-standard-keymap)
  (import (scheme base) (scheme char) (scheme write))
  (cond-expand
   ((library (srfi 151)) (import (srfi 151)))
   ((library (srfi 33)) (import (srfi 33)))
   (else (import (srfi 60))))
  (cond-expand
   (chibi
    (import (chibi stty)))
   (chicken
    (import stty))
   (else
    (define (with-stty spec thunk)
      (thunk))))
  (cond-expand
   (chibi
    (import (only (chibi) protect print-exception)
            (chibi ast)))
   (else
    (begin
      (define (with-raw-io port thunk)
        (with-stty '(not icanon isig echo) thunk port))
      (define (get-terminal-width . x) 80)
      (define-syntax protect
        (syntax-rules () ((protect . x) (guard . x))))
      (define (print-exception exn . o)
        (let ((out (if (pair? o) (car o) (current-error-port))))
          (write exn out)
          (newline out)))
      (define (exception? x) #f)
      (define (exception-kind x) #f))))
  (include "edit-line.scm"))