add stepper button to Lazy Racket
This commit is contained in:
parent
2ebcb2afd1
commit
da456f2e37
|
@ -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"))
|
78
collects/lazy/lazy-tool.rkt
Normal file
78
collects/lazy/lazy-tool.rkt
Normal 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)))
|
||||
)))
|
Loading…
Reference in New Issue
Block a user