[racket] examples of hooking a #lang into DrRacket?
Still having some trouble with this:
When I use '#lang scratchy' in DrRacket, the #lang line is black and the DrRacket toolbar buttons show up, as they should.
After some trial & error, what I found is that if I simply change pollen/main.rkt to use the Scratchy parser and reader, like so:
;;--------------------------------pollen/main.rkt
#lang racket/base
(require scratchy/scratchy)
(provide (all-from-out scratchy/scratchy))
(module reader racket/base
(require scratchy/reader)
(provide (all-from-out scratchy/reader)))
... then '#lang pollen' invokes the Scratchy parser & reader correctly (= it will run sample Scratchy code).
Unfortunately the '#lang pollen' line still shows up in red, and there are still no DrRacket toolbar buttons (and still no error message in the bottom of the window)
Since a brain transplant hasn't fixed the problem, what else might DrRacket be looking for to validate '#lang pollen'?
On Jul 14, 2014, at 12:53 AM, Matthew Flatt <mflatt at cs.utah.edu> wrote:
> The most relevant section of the documentation is
>
> http://docs.racket-lang.org/guide/language-get-info.html
>
>
> The Scratchy language is intended to be an example:
>
> https://github.com/mflatt/scratchy
>
>
> You could also check "reader.rkt" as part of
>
> http://queue.acm.org/downloads/2011/racket/6-color/README.txt
> http://queue.acm.org/downloads/2011/racket/6-color/txtadv.rkt
> http://queue.acm.org/downloads/2011/racket/6-color/world.rkt
> http://queue.acm.org/downloads/2011/racket/6-color/lang/color.rkt
> http://queue.acm.org/downloads/2011/racket/6-color/lang/reader.rkt
>
> which is from "Creating Languages in Racket" in "Queue". The
> "reader.rkt" module has the relevant part at the end:
>
> ;; DrRacket asks `get-info' for a 'color-lexer module:
> (require racket/runtime-path)
> (define-runtime-path color-lexer-path "color.rkt")
> (define (get-info in mod line col pos)
> (lambda (key default)
> (case key
> [(color-lexer)
> (dynamic-require color-lexer-path 'color-lexer)]
> [else default])))
>
> The Scratchy example is more recent and I think better organized,
> though.
>
>
> At Mon, 14 Jul 2014 00:18:27 -0700, Matthew Butterick wrote:
>> Pollen source files run fine in DrRacket. But the `#lang pollen` line shows up
>> as red (though no error is reported in the bottom of the window) and no toolbar
>> buttons are available. So something is not quite right.
>>
>> I gather that this has something to do with telling DrRacket about
>> language-specific capabilities. [1]
>>
>> However, many of the custom #langs in Racket use the standard #lang s-exp
>> syntax/module-reader, which seems to eliminate these problems from the start.
>>
>> Q: To supplement the documentation, are there particular #langs that show
>> examples of this kind of configuration file?
>>
>> [1]
>> http://docs.racket-lang.org/tools/Language-Specific_Capabilities.html?q=Customiz
>> ing%20DrRacket%u2019s%20Behavior
>