From da456f2e37e542579e32abdf0f4503f5d00fb110 Mon Sep 17 00:00:00 2001 From: Stephen Chang Date: Fri, 1 Apr 2011 16:30:35 -0400 Subject: [PATCH] add stepper button to Lazy Racket --- collects/lazy/info.rkt | 24 ++++++++---- collects/lazy/lazy-tool.rkt | 78 +++++++++++++++++++++++++++++++++++++ 2 files changed, 94 insertions(+), 8 deletions(-) create mode 100644 collects/lazy/lazy-tool.rkt diff --git a/collects/lazy/info.rkt b/collects/lazy/info.rkt index 92bd040cf5..623a778954 100644 --- a/collects/lazy/info.rkt +++ b/collects/lazy/info.rkt @@ -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")) \ No newline at end of file diff --git a/collects/lazy/lazy-tool.rkt b/collects/lazy/lazy-tool.rkt new file mode 100644 index 0000000000..e65c260853 --- /dev/null +++ b/collects/lazy/lazy-tool.rkt @@ -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))) + )))