closes PR 11277

This commit is contained in:
Robby Findler 2010-10-02 09:31:33 -05:00
parent c739128703
commit 1ed2c7c417
2 changed files with 75 additions and 32 deletions

View File

@ -137,35 +137,78 @@ If the namespace does not, they are colored the unbound color.
;; adds a begin/end-edit-sequence to the insertion and deletion
;; to ensure that the on-change method isn't called until after
;; the arrows are cleared.
(define clearing-text-mixin
(mixin ((class->interface text%)) ()
(inherit begin-edit-sequence end-edit-sequence)
(define/augment (on-delete start len)
(begin-edit-sequence)
(inner (void) on-delete start len))
(define/augment (after-delete start len)
(inner (void) after-delete start len)
(clean-up)
(end-edit-sequence))
(define/augment (on-insert start len)
(begin-edit-sequence)
(inner (void) on-insert start len))
(define/augment (after-insert start len)
(inner (void) after-insert start len)
(clean-up)
(end-edit-sequence))
(define/private (clean-up)
(let ([st (find-syncheck-text this)])
(when (and st
(is-a? st drracket:unit:definitions-text<%>))
(let ([tab (send st get-tab)])
(send tab syncheck:clear-error-message)
(send tab syncheck:clear-highlighting)))))
(super-new)))
(define (clearing-text-mixin super%)
(define-local-member-name set-do-cleanup)
(define cs-clearing<%>
(interface ()
set-do-cleanup))
;; the commented out definition of extra
;; is because of PR 11279. When it is fixed, use it
;; instead of this one.
(define (extra super%)
(class super%
(inherit set-do-cleanup)
(define/augment (begin-metadata-changes)
(set-do-cleanup #f)
(inner (void) begin-metadata-changes))
(define/augment (end-metadata-changes)
(set-do-cleanup #t)
(inner (void) end-metadata-changes))
(super-new)))
#;
(define extra
(mixin (cs-clearing<%> drracket:unit:definitions-text<%>) ()
(inherit set-do-cleanup)
(define/augment (begin-metadata-changes)
(set-do-cleanup #f)
(inner (void) begin-metadata-changes))
(define/augment (end-metadata-changes)
(set-do-cleanup #t)
(inner (void) end-metadata-changes))
(super-new)))
(define basic
(mixin ((class->interface text%)) (cs-clearing<%>)
(inherit begin-edit-sequence end-edit-sequence)
(define/augment (on-delete start len)
(begin-edit-sequence)
(inner (void) on-delete start len))
(define/augment (after-delete start len)
(inner (void) after-delete start len)
(clean-up)
(end-edit-sequence))
(define/augment (on-insert start len)
(begin-edit-sequence)
(inner (void) on-insert start len))
(define/augment (after-insert start len)
(inner (void) after-insert start len)
(clean-up)
(end-edit-sequence))
(define do-cleanup #t)
(define/public (set-do-cleanup s)
(set! do-cleanup s))
(define/private (clean-up)
(when do-cleanup
(let ([st (find-syncheck-text this)])
(when (and st
(is-a? st drracket:unit:definitions-text<%>))
(let ([tab (send st get-tab)])
(send tab syncheck:clear-error-message)
(send tab syncheck:clear-highlighting))))))
(super-new)))
(cond
[(implementation? super% drracket:unit:definitions-text<%>)
(extra (basic super%))]
[else
(basic super%)]))
(define make-syncheck-text%
(λ (super%)

View File

@ -540,7 +540,6 @@ module browser threading seems wrong.
(define (make-definitions-text%)
(let ([definitions-super%
(linked-scroller
((get-program-editor-mixin)
(text:first-line-mixin
(drracket:module-language:module-language-put-file-mixin
(scheme:text-mixin
@ -552,7 +551,8 @@ module browser threading seems wrong.
(drracket:rep:drs-autocomplete-mixin
(λ (x) x)
(text:normalize-paste-mixin
text:info%))))))))))))])
text:info%)))))))))))])
((get-program-editor-mixin)
(class* definitions-super% (definitions-text<%>)
(inherit get-top-level-window is-locked? lock while-unlocked highlight-first-line)
@ -910,7 +910,7 @@ module browser threading seems wrong.
(is-a? (drracket:language-configuration:language-settings-language next-settings)
drracket:module-language:module-language<%>))
(inherit set-max-undo-history)
(set-max-undo-history 'forever))))
(set-max-undo-history 'forever)))))
;; is-lang-line? : string -> boolean
;; given the first line in the editor, this returns #t if it is a #lang line.