add stepper button to Lazy Racket

This commit is contained in:
Stephen Chang 2011-04-01 16:30:35 -04:00
parent 2ebcb2afd1
commit da456f2e37
2 changed files with 94 additions and 8 deletions

View File

@ -1,10 +1,18 @@
#lang setup/infotab
(require string-constants)
(define name "Lazy Scheme")
(define scribblings '(("lazy.scrbl" () (experimental))))
(define drscheme-language-modules '(("lazy.ss" "lazy")))
(define drscheme-language-positions
`((,(string-constant experimental-languages) "Lazy Racket")))
(define drscheme-language-numbers '((1000 -500)))
(define drscheme-language-one-line-summaries '("Lazy Racket"))
;; STC 2010-06-01
;; Changing lazy to be a tools-based language so I can use
;; stepper-lanugage-interface to add a stepper button. This change is temporary
;; until the stepper works with #lang languages.
;(require string-constants)
;(define name "Lazy Scheme")
;(define scribblings '(("lazy.scrbl" () (experimental))))
;(define drscheme-language-modules '(("lazy.ss" "lazy")))
;(define drscheme-language-positions
; `((,(string-constant experimental-languages) "Lazy Racket")))
;(define drscheme-language-numbers '((1000 -500)))
;(define drscheme-language-one-line-summaries '("Lazy Racket"))
(define drracket-tools '(("lazy-tool.rkt")))
(define drracket-tool-names '("Lazy Racket"))

View File

@ -0,0 +1,78 @@
#lang racket
(require string-constants
drracket/tool
lang/stepper-language-interface)
(provide tool@)
(define tool@
(unit
(import drracket:tool^)
(export drracket:tool-exports^)
(define (stepper-settings-language %)
(if (implementation? % stepper-language<%>)
(class* % (stepper-language<%>)
(init-field stepper:supported)
(init-field stepper:enable-let-lifting)
(init-field stepper:show-lambdas-as-lambdas)
(define/override (stepper:supported?)
stepper:supported)
(define/override (stepper:enable-let-lifting?)
stepper:enable-let-lifting)
(define/override (stepper:show-lambdas-as-lambdas?)
stepper:show-lambdas-as-lambdas)
(super-new))
(class* % ()
(init stepper:supported)
(init stepper:enable-let-lifting)
(init stepper:show-lambdas-as-lambdas)
(super-new))))
; extends class implementing module-based-language<%> to use different
; default-settings, ie, 'constructor printing-style instead of 'print
(define (module-based-language-extension %)
(class* % ()
(define/override (default-settings)
(drracket:language:make-simple-settings
#t ; case sensitive
'constructor ; printing-style
'mixed-fraction-e ; fraction-style
#f ; show-sharing
#t ; insert-newlines
'none)) ; annotations
(define/override (default-settings? s)
(and (super default-settings? s)
(eq? (drracket:language:simple-settings-printing-style s)
'constructor)))
; (equal? (drracket:language:simple-settings->vector s)
; (drracket:language:simple-settings->vector (default-settings))))
(super-new)))
(define (phase1) (void))
;; phase2 : -> void
(define (phase2)
(define lazy-language%
(stepper-settings-language
((drracket:language:get-default-mixin)
(drracket:language:module-based-language->language-mixin
(module-based-language-extension
(drracket:language:simple-module-based-language->module-based-language-mixin
drracket:language:simple-module-based-language%))))))
(drracket:language-configuration:add-language
(instantiate lazy-language% ()
(one-line-summary "Lazy Racket")
(module '(lib "lazy/lazy.rkt"))
(language-position `(,(string-constant experimental-languages)
"Lazy Racket"))
(language-numbers '(1000 -500))
(stepper:supported #t)
(stepper:enable-let-lifting #t)
(stepper:show-lambdas-as-lambdas #t)))
)))