Remove highlights after editing.
This commit is contained in:
parent
14be886288
commit
2ecec626b3
|
@ -2,3 +2,5 @@
|
|||
|
||||
(define scribblings '(("scribblings/ts-reference.scrbl" (multi-page) (language 4))
|
||||
("scribblings/ts-guide.scrbl" (multi-page) (language 5))))
|
||||
(define drracket-tools '(("optimizer/tool/tool.rkt")))
|
||||
(define drracket-tool-names '("Performance Report"))
|
||||
|
|
|
@ -1,12 +1,14 @@
|
|||
#lang racket/base
|
||||
|
||||
(require racket/unit racket/class racket/port racket/list
|
||||
racket/gui/base mrlib/switchable-button)
|
||||
(require racket/class racket/port racket/list
|
||||
racket/gui/base mrlib/switchable-button
|
||||
racket/unit drracket/tool)
|
||||
|
||||
(require (prefix-in tr: typed-scheme/typed-reader)
|
||||
typed-scheme/optimizer/logging)
|
||||
|
||||
(provide performance-report-drracket-button)
|
||||
(provide performance-report-drracket-button
|
||||
tool@)
|
||||
|
||||
;; DrRacket tool for reporting missed optimizations in the editor.
|
||||
|
||||
|
@ -23,6 +25,8 @@
|
|||
(send bdc set-bitmap #f)
|
||||
bmp))
|
||||
|
||||
(define highlights '())
|
||||
|
||||
;; performance-report-callback : drracket:unit:frame<%> -> void
|
||||
(define (performance-report-callback drr-frame)
|
||||
(define defs (send drr-frame get-definitions-text)) ; : text%
|
||||
|
@ -40,15 +44,17 @@
|
|||
(expand (tr:read-syntax portname input)))))
|
||||
(set! log (reverse log))
|
||||
;; highlight
|
||||
(for ([l (in-list log)])
|
||||
(let ([stx (log-entry-stx l)]
|
||||
[pos (sub1 (log-entry-pos l))]
|
||||
;; opt or missed opt?
|
||||
[opt? (regexp-match #rx"^TR opt:" (log-entry-msg l))])
|
||||
(send defs highlight-range
|
||||
pos
|
||||
(+ pos (syntax-span stx))
|
||||
(if opt? "lightgreen" "pink"))))
|
||||
(define new-highlights
|
||||
(for/list ([l (in-list log)])
|
||||
(let* ([stx (log-entry-stx l)]
|
||||
[pos (sub1 (log-entry-pos l))]
|
||||
[end (+ pos (syntax-span stx))]
|
||||
;; opt or missed opt?
|
||||
[opt? (regexp-match #rx"^TR opt:" (log-entry-msg l))]
|
||||
[color (if opt? "lightgreen" "pink")])
|
||||
(send defs highlight-range pos end color)
|
||||
(list pos end color)))) ; record the highlight, to undo it later
|
||||
(set! highlights (append new-highlights highlights))
|
||||
(message-box
|
||||
"Performance Report"
|
||||
(with-output-to-string
|
||||
|
@ -56,6 +62,28 @@
|
|||
(for ([l (in-list log)])
|
||||
(displayln (log-entry-msg l)))))))
|
||||
|
||||
(define remove-highlights-mixin
|
||||
(mixin ((class->interface text%)) ()
|
||||
(inherit begin-edit-sequence
|
||||
end-edit-sequence
|
||||
insert
|
||||
get-text)
|
||||
(define (clear-highlights)
|
||||
(for ([h (in-list highlights)])
|
||||
(send this unhighlight-range . h)))
|
||||
(define/augment (after-insert start len)
|
||||
(clear-highlights))
|
||||
(define/augment (after-delete start len)
|
||||
(clear-highlights))
|
||||
(super-new)))
|
||||
|
||||
(define-unit tool@
|
||||
(import drracket:tool^)
|
||||
(export drracket:tool-exports^)
|
||||
(define (phase1) (void))
|
||||
(define (phase2) (void))
|
||||
(drracket:get/extend:extend-definitions-text remove-highlights-mixin))
|
||||
|
||||
(define performance-report-drracket-button
|
||||
(list
|
||||
"Performance Report"
|
||||
|
|
Loading…
Reference in New Issue
Block a user