switch version easily

This commit is contained in:
Jay McCarthy 2018-01-04 16:22:00 -05:00
parent d7216e29d7
commit 6d713577d2
1 changed files with 39 additions and 38 deletions

View File

@ -6,7 +6,6 @@
racket/system racket/system
ansi ansi
(submod ansi/lcd-terminal event-structs) (submod ansi/lcd-terminal event-structs)
ansi/private/tty-raw-extension
unix-signals unix-signals
lux/chaos lux/chaos
raart/draw raart/draw
@ -15,45 +14,47 @@
(struct term (f in out)) (struct term (f in out))
(define default-tty "/dev/tty") (define-syntax-rule (define-stty-term open-term close-term)
(begin
#; (define default-tty "/dev/tty")
(define stty-minus-f-arg-string (define stty-minus-f-arg-string
(case (system-type 'os) (case (system-type 'os)
((macosx) "-f") ((macosx) "-f")
(else "-F"))) (else "-F")))
#; (define (open-term #:tty [tty default-tty])
(define (open-term #:tty [tty default-tty])
(system* "/bin/stty" (system* "/bin/stty"
stty-minus-f-arg-string stty-minus-f-arg-string
tty tty
"raw" "raw"
"pass8"
"-echo") "-echo")
(define-values (in out) (define-values (in out)
(open-input-output-file tty #:exists 'update)) (open-input-output-file tty #:exists 'update))
(file-stream-buffer-mode in 'none)
(file-stream-buffer-mode out 'none)
(term tty in out)) (term tty in out))
#; (define (close-term t)
(define (close-term t)
(match-define (term f in out) t) (match-define (term f in out) t)
(close-input-port in) (close-input-port in)
(close-output-port out) (close-output-port out)
(system* "/bin/stty" (system* "/bin/stty"
stty-minus-f-arg-string stty-minus-f-arg-string
f f
"cooked" "sane"))))
"echo"))
(define (open-term) (define-syntax-rule (define-stdin-term open-term close-term)
(begin
(require ansi/private/tty-raw-extension)
(define (open-term #:tty [tty #f])
(when tty
(error 'open-term "Custom tty not supported in this version"))
(tty-raw!) (tty-raw!)
(term #f (current-input-port) (current-output-port))) (term #f (current-input-port) (current-output-port)))
(define (close-term t) (define (close-term t)
(tty-restore!)) (tty-restore!))))
(define (with-term f #:tty [tty default-tty]) #;(define-stty-term open-term close-term)
(define t (open-term #:tty tty)) (define-stdin-term open-term close-term)
(define (close!) (close-term t))
(with-handlers ([exn:fail? (λ (x) (close!) (raise x))])
(begin0 (f t) (close!))))
(define (display/flush v op) (define (display/flush v op)
(display v op) (display v op)