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))
|
(define scribblings '(("scribblings/ts-reference.scrbl" (multi-page) (language 4))
|
||||||
("scribblings/ts-guide.scrbl" (multi-page) (language 5))))
|
("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
|
#lang racket/base
|
||||||
|
|
||||||
(require racket/unit racket/class racket/port racket/list
|
(require racket/class racket/port racket/list
|
||||||
racket/gui/base mrlib/switchable-button)
|
racket/gui/base mrlib/switchable-button
|
||||||
|
racket/unit drracket/tool)
|
||||||
|
|
||||||
(require (prefix-in tr: typed-scheme/typed-reader)
|
(require (prefix-in tr: typed-scheme/typed-reader)
|
||||||
typed-scheme/optimizer/logging)
|
typed-scheme/optimizer/logging)
|
||||||
|
|
||||||
(provide performance-report-drracket-button)
|
(provide performance-report-drracket-button
|
||||||
|
tool@)
|
||||||
|
|
||||||
;; DrRacket tool for reporting missed optimizations in the editor.
|
;; DrRacket tool for reporting missed optimizations in the editor.
|
||||||
|
|
||||||
|
@ -23,6 +25,8 @@
|
||||||
(send bdc set-bitmap #f)
|
(send bdc set-bitmap #f)
|
||||||
bmp))
|
bmp))
|
||||||
|
|
||||||
|
(define highlights '())
|
||||||
|
|
||||||
;; performance-report-callback : drracket:unit:frame<%> -> void
|
;; performance-report-callback : drracket:unit:frame<%> -> void
|
||||||
(define (performance-report-callback drr-frame)
|
(define (performance-report-callback drr-frame)
|
||||||
(define defs (send drr-frame get-definitions-text)) ; : text%
|
(define defs (send drr-frame get-definitions-text)) ; : text%
|
||||||
|
@ -40,15 +44,17 @@
|
||||||
(expand (tr:read-syntax portname input)))))
|
(expand (tr:read-syntax portname input)))))
|
||||||
(set! log (reverse log))
|
(set! log (reverse log))
|
||||||
;; highlight
|
;; highlight
|
||||||
(for ([l (in-list log)])
|
(define new-highlights
|
||||||
(let ([stx (log-entry-stx l)]
|
(for/list ([l (in-list log)])
|
||||||
[pos (sub1 (log-entry-pos l))]
|
(let* ([stx (log-entry-stx l)]
|
||||||
;; opt or missed opt?
|
[pos (sub1 (log-entry-pos l))]
|
||||||
[opt? (regexp-match #rx"^TR opt:" (log-entry-msg l))])
|
[end (+ pos (syntax-span stx))]
|
||||||
(send defs highlight-range
|
;; opt or missed opt?
|
||||||
pos
|
[opt? (regexp-match #rx"^TR opt:" (log-entry-msg l))]
|
||||||
(+ pos (syntax-span stx))
|
[color (if opt? "lightgreen" "pink")])
|
||||||
(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
|
(message-box
|
||||||
"Performance Report"
|
"Performance Report"
|
||||||
(with-output-to-string
|
(with-output-to-string
|
||||||
|
@ -56,6 +62,28 @@
|
||||||
(for ([l (in-list log)])
|
(for ([l (in-list log)])
|
||||||
(displayln (log-entry-msg l)))))))
|
(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
|
(define performance-report-drracket-button
|
||||||
(list
|
(list
|
||||||
"Performance Report"
|
"Performance Report"
|
||||||
|
|
Loading…
Reference in New Issue
Block a user