diff --git a/collects/lang/private/provide-and-scribble.rkt b/collects/lang/private/provide-and-scribble.rkt index b34ef9d747..95112f0a94 100644 --- a/collects/lang/private/provide-and-scribble.rkt +++ b/collects/lang/private/provide-and-scribble.rkt @@ -100,7 +100,7 @@ tests to run: (defproc #:id [ex (datum->syntax c 'ex)] (ex args ...) range w ...)))] [(defthing name range w ...) - #'(lambda (c) (defthing name range w ...))])) + #'(lambda (c) (defthing #:id (datum->syntax c 'name) name range w ...))])) (map rewrite-one-def defs names)) diff --git a/collects/scribble/private/manual-proc.rkt b/collects/scribble/private/manual-proc.rkt index 7cac0409f3..4ea402c959 100644 --- a/collects/scribble/private/manual-proc.rkt +++ b/collects/scribble/private/manual-proc.rkt @@ -913,18 +913,21 @@ ;; ---------------------------------------- -(define-syntax defthing - (syntax-rules () - [(_ #:kind kind id result desc ...) - (with-togetherable-racket-variables - () - () - (*defthing kind - (list (quote-syntax/loc id)) (list 'id) #f - (list (racketblock0 result)) - (lambda () (list desc ...))))] - [(_ id result desc ...) - (defthing #:kind #f id result desc ...)])) +(define-syntax (defthing stx) + (syntax-parse stx + [(_ kind:kind-kw + (~optional (~seq #:id id-expr) + #:defaults ([id-expr #'#f])) + id + result + desc ...) + #'(with-togetherable-racket-variables + () + () + (*defthing kind.kind + (list (or id-expr (quote-syntax/loc id))) (list 'id) #f + (list (racketblock0 result)) + (lambda () (list desc ...))))])) (define-syntax defthing* (syntax-rules () diff --git a/collects/scribblings/scribble/manual.scrbl b/collects/scribblings/scribble/manual.scrbl index 63026fa1d7..4dfd861572 100644 --- a/collects/scribblings/scribble/manual.scrbl +++ b/collects/scribblings/scribble/manual.scrbl @@ -1040,18 +1040,26 @@ Like @racket[defparam], but the contract on a parameter argument is @racket[boolean?].} -@defform[(defthing maybe-kind id contract-expr-datum pre-flow ...)]{ +@defform/subs[(defthing maybe-kind maybe-id id contract-expr-datum + pre-flow ...) + ([maybe-kind code:blank + (code:line #:kind kind-string-expr)] + [maybe-id code:blank + (code:line #:id id-expr)])]{ Like @racket[defproc], but for a non-procedure binding. -If @racket[#:kind kind-string-expr] is supplied as -@racket[maybe-kind], it is used in the same way as for +If @racket[#:kind kind-string-expr] is supplied, +it is used in the same way as for @racket[defproc], but the default kind is @racket["value"]. +If @racket[#:id id-expr] is supplied, then the result of +@racket[id-expr] is used in place of @racket[id]. + Examples: @codeblock[#:keep-lang-line? #f]|{ #lang scribble/manual -@defthing[moldy-sandwich sandwich?] +@defthing[moldy-sandwich sandwich?]{ Don't eat this. Provided for backwards compatibility. } }| diff --git a/doc/release-notes/racket/HISTORY.txt b/doc/release-notes/racket/HISTORY.txt index cd27c3ee29..82e97ee9e3 100644 --- a/doc/release-notes/racket/HISTORY.txt +++ b/doc/release-notes/racket/HISTORY.txt @@ -3,6 +3,7 @@ Added module-compiled-cross-phase-persistent? Added 'so-mode mode for system-type ffi/unsafe: changed ffi-lib to use (system-type 'so-mode) slideshow/balloon: add balloon-enable-3d +scribble/manual: added #:id option to defthing Version 5.3.3.6 Added "phase-collapse" module inference and instantiation