From 7041ea1d80342c48a4d426eb1fcaa9a96c1ebc92 Mon Sep 17 00:00:00 2001 From: Robby Findler Date: Mon, 24 Dec 2012 12:31:55 -0600 Subject: [PATCH] adjust online expansion's internals to call set-dirty only at the end of an edit sequence instead of on every edit inside the edit sequence --- collects/drracket/private/module-language.rkt | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/collects/drracket/private/module-language.rkt b/collects/drracket/private/module-language.rkt index 47867a537e..e7616a3ce6 100644 --- a/collects/drracket/private/module-language.rkt +++ b/collects/drracket/private/module-language.rkt @@ -1085,7 +1085,7 @@ get-tab get-canvas invalidate-bitmap-cache set-position get-start-position get-end-position highlight-range dc-location-to-editor-location - begin-edit-sequence end-edit-sequence) + begin-edit-sequence end-edit-sequence in-edit-sequence?) (define/public (fetch-data-to-send) @@ -1312,14 +1312,26 @@ (values x y w h)) + (define need-to-dirty? #f) + (define/augment (after-insert start end) - (oc-set-dirty (get-tab)) + (if (in-edit-sequence?) + (set! need-to-dirty? #t) + (oc-set-dirty (get-tab))) (inner (void) after-insert start end)) (define/augment (after-delete start end) - (oc-set-dirty (get-tab)) + (if (in-edit-sequence?) + (set! need-to-dirty? #t) + (oc-set-dirty (get-tab))) (inner (void) after-delete start end)) + (define/augment (after-edit-sequence) + (when need-to-dirty? + (set! need-to-dirty? #f) + (oc-set-dirty (get-tab))) + (inner (void) after-edit-sequence)) + (define/augment (after-load-file success?) (when success? (oc-set-dirty (get-tab)))