breakpoints now persist across execution and debugging sessions
svn: r3443
This commit is contained in:
parent
5cd44fdbc3
commit
ec47ef318f
|
@ -128,26 +128,49 @@
|
||||||
|
|
||||||
(define/augment (on-delete start len)
|
(define/augment (on-delete start len)
|
||||||
(begin-edit-sequence)
|
(begin-edit-sequence)
|
||||||
|
(let ([breakpoints (if parent (send parent get-breakpoints) (make-hash-table))]
|
||||||
|
[shifts empty])
|
||||||
|
(hash-table-for-each
|
||||||
|
breakpoints
|
||||||
|
(lambda (pos status)
|
||||||
|
(cond
|
||||||
|
; deletion after breakpoint: no effect
|
||||||
|
[(<= pos start)]
|
||||||
|
; deletion of breakpoint: remove from table
|
||||||
|
[(and (< start pos)
|
||||||
|
(<= pos (+ start len)))
|
||||||
|
(hash-table-remove! breakpoints pos)]
|
||||||
|
; deletion before breakpoint: shift breakpoint
|
||||||
|
[(> pos (+ start len))
|
||||||
|
(hash-table-remove! breakpoints pos)
|
||||||
|
(set! shifts (cons (cons (- pos len) status) shifts))])))
|
||||||
|
(for-each (lambda (p) (hash-table-put! breakpoints (car p) (cdr p)))
|
||||||
|
shifts))
|
||||||
(inner (void) on-delete start len))
|
(inner (void) on-delete start len))
|
||||||
(define/augment (after-delete start len)
|
(define/augment (after-delete start len)
|
||||||
(inner (void) after-delete start len)
|
(inner (void) after-delete start len)
|
||||||
(clean-up)
|
(when (and parent debug?)
|
||||||
|
(send parent hide-debug))
|
||||||
(end-edit-sequence))
|
(end-edit-sequence))
|
||||||
|
|
||||||
(define/augment (on-insert start len)
|
(define/augment (on-insert start len)
|
||||||
(begin-edit-sequence)
|
(begin-edit-sequence)
|
||||||
|
(let ([breakpoints (if parent (send parent get-breakpoints) (make-hash-table))]
|
||||||
|
[shifts empty])
|
||||||
|
(hash-table-for-each
|
||||||
|
breakpoints
|
||||||
|
(lambda (pos status)
|
||||||
|
(when (< start pos)
|
||||||
|
(hash-table-remove! breakpoints pos)
|
||||||
|
(set! shifts (cons (cons (+ pos len) status) shifts)))))
|
||||||
|
(for-each (lambda (p) (hash-table-put! breakpoints (car p) (cdr p)))
|
||||||
|
shifts))
|
||||||
(inner (void) on-insert start len))
|
(inner (void) on-insert start len))
|
||||||
(define/augment (after-insert start len)
|
(define/augment (after-insert start len)
|
||||||
(inner (void) after-insert start len)
|
(inner (void) after-insert start len)
|
||||||
(clean-up)
|
(when (and parent debug?)
|
||||||
(end-edit-sequence))
|
|
||||||
|
|
||||||
(define/private (clean-up)
|
|
||||||
(when debug?
|
|
||||||
(set! debug? #f)
|
|
||||||
(when parent
|
|
||||||
(send parent hide-debug))
|
(send parent hide-debug))
|
||||||
(invalidate-bitmap-cache)))
|
(end-edit-sequence))
|
||||||
|
|
||||||
(define/private (get-pos/text event)
|
(define/private (get-pos/text event)
|
||||||
(let ([event-x (send event get-x)]
|
(let ([event-x (send event get-x)]
|
||||||
|
@ -487,7 +510,16 @@
|
||||||
(vector-set! pos-vec (+ i (syntax-position bound)) binding)
|
(vector-set! pos-vec (+ i (syntax-position bound)) binding)
|
||||||
(loop (add1 i))))))
|
(loop (add1 i))))))
|
||||||
void)])
|
void)])
|
||||||
(for-each (lambda (posn) (hash-table-put! breakpoints posn #f)) break-posns)
|
(hash-table-for-each
|
||||||
|
breakpoints
|
||||||
|
(lambda (pos status)
|
||||||
|
; possible efficiency problem for large files with many breakpoints
|
||||||
|
(when (and (>= pos 0) (not (memq pos break-posns)))
|
||||||
|
(hash-table-remove! breakpoints pos))))
|
||||||
|
(for-each (lambda (posn)
|
||||||
|
(hash-table-put!
|
||||||
|
breakpoints posn
|
||||||
|
(hash-table-get breakpoints posn (lambda () #f)))) break-posns)
|
||||||
;(display-results (list orig-exp))
|
;(display-results (list orig-exp))
|
||||||
annotated))))]))))))
|
annotated))))]))))))
|
||||||
|
|
||||||
|
@ -685,7 +717,7 @@
|
||||||
(hide-debug))
|
(hide-debug))
|
||||||
(set! current-language-settings (and debug?
|
(set! current-language-settings (and debug?
|
||||||
(send (get-definitions-text) get-next-settings)))
|
(send (get-definitions-text) get-next-settings)))
|
||||||
(set! breakpoints (make-hash-table))
|
;(set! breakpoints (make-hash-table))
|
||||||
(hash-table-put! breakpoints -1 #t)
|
(hash-table-put! breakpoints -1 #t)
|
||||||
(set! pos-vec (make-vector (add1 (send (get-definitions-text) last-position)) #f))
|
(set! pos-vec (make-vector (add1 (send (get-definitions-text) last-position)) #f))
|
||||||
(set! resume-ch (make-channel))
|
(set! resume-ch (make-channel))
|
||||||
|
|
Loading…
Reference in New Issue
Block a user