FWIW, an unreleased Racket mode for Emacs (which did fast incremental
lexing, and some higher parsing[1]) intentionally colored the entire
expression after `#;` as a comment. I don't recall whether I decided to
have it skip over the commented expression for sibling-level sexp-based
editor operations, like move-point-to-start-of-next-expression, though
it probably did sexp operations and matching paren-highlighting while
inside the commented expression.
I considered `#;` a convenience for quickly commenting out a sexp, since
that's how I recall seeing it used. Though sexp-aware editor commands
can easily make quick sexp commenting and uncommenting easy using `;;`,
including simple automatic unsnuggling and resnuggling of close-parens.
I didn't realize that some people wanted to treat `#;` as meaningful
code-like sexp text that's not actually code. (For pedagogic purposes,
I suppose it makes sense to be clear that not all code-level-ish
abstractions&artifacts in the process are code, so maybe you use a
comment in a beginner `#lang` for that, even if you want to use a sexp
too. But, for later purposes, maybe you actually want that particular
sexp thing to be code in a syntax extension or `#lang`. Then you get
Contracts, Typed Racket, or embedded API docs, or embedded
specification, or something else.)
Incidentally, a pertinent bit of the Emacs mode tests (below) makes
framework-restricted coders cry (in that case, the framework was based
on regexps, legacy kludgey character syntax classes, and a few fixed
concepts of syntax). But those tears turn into ones of joy, when the
coder remembers that they are actually a CS-educated software engineer,
who can make a technical assessment and business case that the framework
is a barrier to smash, and roll up their sleeves, for some some good
old-fashioned automata theory, algorithm design, and efficient programming.
(insert "(define (f x #:y (y 0) #:z (z 0))\n")
(insert " (xxx '''(yyy (\"(\"\n")
(insert " ;; (\n")
(insert " (zzz #\\( ppp)\n")
(insert " #| #| ( |# ( |#\n")
(insert " qqq)\n")
(insert " #;#;(1\n")
(insert " 2)\n")
(insert " (3 '(4 5) 6)\n")
(insert " (n)\n")
(insert " rrr)\n")
(insert " #;)\n")
(insert " sss))\n")
[1] It got mothballed when my book was, the pre-Git SCM repo was lost,
the only known survivor of the main file was in a checkout workspace, in
middle of an architecture change, and I don't have free person-days to
reconstruct the prior/next version. Meow was a big advance beyond Quack
(the original poor substitute for DrScheme), but it didn't do the great
things Greg's `racket-mode` now does, anyway.
--
You received this message because you are subscribed to the Google Groups "Racket
Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.