- bug fixes

- got spreadsheet working again

svn: r507
This commit is contained in:
Greg Cooper 2005-07-30 20:45:28 +00:00
parent 38ae4e952b
commit e9593ed546
4 changed files with 35 additions and 13 deletions

View File

@ -2,17 +2,20 @@
(require (lib "class.ss") (require (lib "class.ss")
(all-except (lib "mred.ss" "mred") send-event) (all-except (lib "mred.ss" "mred") send-event)
(rename mzscheme mz:define-struct define-struct)
"preprocessor2.ss" "preprocessor2.ss"
(lifted "ss-funcs.ss" inflate-data) (lifted "ss-funcs.ss" inflate-data)
"quotes.ss" "quotes.ss"
(as-is:unchecked (lib "match.ss") match-lambda) (as-is:unchecked (lib "match.ss") match-lambda)
(as-is:unchecked (lib "frp-core.ss" "frtime") signal-value
proc->signal)
(lib "framework.ss" "framework") (lib "framework.ss" "framework")
(as-is:unchecked (lib "string.ss") expr->string) (as-is:unchecked (lib "string.ss") expr->string)
(as-is:unchecked (lib "etc.ss") build-vector) (as-is:unchecked (lib "etc.ss") build-vector)
(lifted mzscheme regexp-match) (lifted mzscheme regexp-match)
(as-is:unchecked mzscheme make-hash-table hash-table-put! hash-table-get (as-is:unchecked mzscheme make-hash-table hash-table-put! hash-table-get
hash-table-remove! let*-values vector-set! make-string hash-table-remove! let*-values vector-set! make-string
exn? eof-object? exn?
open-input-file open-output-file read write hash-table-map open-input-file open-output-file read write hash-table-map
file-exists? delete-file open-input-string eof file-exists? delete-file open-input-string eof
flush-output close-output-port dynamic-require)) flush-output close-output-port dynamic-require))
@ -44,7 +47,7 @@
(set-cell! raise-exceptions #t) (set-cell! raise-exceptions #t)
(define-struct ss-loc (row col)) (mz:define-struct ss-loc (row col))
(define (ss-format val) (define (ss-format val)
(if (or (and (signal? val) (if (or (and (signal? val)
@ -142,7 +145,7 @@
cols cols
(lambda (_) (make-hash-table)))) (lambda (_) (make-hash-table))))
(define-struct ss-cell (expr value updater)) (mz:define-struct ss-cell (expr value updater))
(define (ss-get-cell-text row col) (define (ss-get-cell-text row col)
(cond (cond
@ -212,7 +215,7 @@
(eval `(let ([row ,row] (eval `(let ([row ,row]
[col ,col]) [col ,col])
,processed-expr)))) ,processed-expr))))
(synchronize) ;(synchronize)
(send canvas draw-cell row col)) (send canvas draw-cell row col))
(send canvas focus))) (send canvas focus)))

View File

@ -250,9 +250,12 @@
(define-syntax snapshot/sync (define-syntax snapshot/sync
(syntax-rules () (syntax-rules ()
[(_ (id ...) expr ...) [(_ (id ...) expr ...)
(let-values ([(id ...) (sync/read id ...)]) (let-values ([(id ...) (value-now/sync id ...)])
expr ...)])) expr ...)]))
(define (synchronize)
(snapshot/sync () (void)))
(define-syntax snapshot (define-syntax snapshot
(syntax-rules () (syntax-rules ()
[(_ (id ...) expr ...) [(_ (id ...) expr ...)
@ -702,6 +705,7 @@
hold hold
for-each-e! for-each-e!
snapshot/sync snapshot/sync
synchronize
snapshot snapshot
snapshot-e snapshot-e
snapshot/apply snapshot/apply
@ -736,7 +740,7 @@
value-now/sync value-now/sync
frtime-version frtime-version
signal-count signal-count
signal?
) )
) )

View File

@ -141,7 +141,10 @@
(lambda (_) (lambda (_)
(loop (unbox (signal:switching-current v)))) (loop (unbox (signal:switching-current v))))
(signal:switching-trigger v))] (signal:switching-trigger v))]
[(signal? v) (printf "access to ~a in ~a~n" acc (value-now/no-copy v)) (lift #t acc v)] [(signal? v) #;(printf "access to ~a in ~a~n" acc
(value-now/no-copy v))
(lift #t acc v)]
[(undefined? v) undefined]
[else (acc v)])))) [else (acc v)]))))
(define frp:car (define frp:car
@ -252,7 +255,7 @@
; FORBIDS MUTATION ; FORBIDS MUTATION
(define (frp:make-struct-field-mutator acc i sym) (define (frp:make-struct-field-mutator acc i sym)
(lambda (s) (lambda (s _)
(error "MUTATION NOT ALLOWED IN FrTime STRUCTURES"))) (error "MUTATION NOT ALLOWED IN FrTime STRUCTURES")))
(define-syntax (frp:define-struct stx) (define-syntax (frp:define-struct stx)
@ -280,11 +283,23 @@
[(_ s (field ...)) [(_ s (field ...))
#'(frp:define-struct (s #f) (field ...) (current-inspector))])) #'(frp:define-struct (s #f) (field ...) (current-inspector))]))
(define (find pred lst)
(cond
[(empty? lst) #f]
[(pred (first lst)) (first lst)]
[else (find pred (rest lst))]))
(define (ensure-no-signal-args val name)
(if (procedure? val)
(lambda args
(cond
[(find signal? args)
=>
(lambda (v)
(raise-type-error name "non-signal"
(format "#<signal: ~a>" (signal-value v))))]
[else (apply val args)]))))
;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;

View File

@ -306,7 +306,7 @@
seconds->date seconds->date
expand syntax-object->datum exn-message continuation-mark-set->list exn-continuation-marks expand syntax-object->datum exn-message continuation-mark-set->list exn-continuation-marks
exn:fail? exn:fail?
list->vector make-vector vector-set!) list->vector make-vector)
(rename eq? mzscheme:eq?) (rename eq? mzscheme:eq?)
make-exn:fail current-inspector make-inspector make-exn:fail current-inspector make-inspector