Hi, Reading the style guide for Racket, I came up with a few debatable suggestions. ( http://www.ccs.neu.edu/home/matthias/Style/style/Textual_Matters.html )
Apologies if this has already been longly debated. * Indentation: adding new indentations constructs to DrRacket >From the guide: "Caveat 1: Until language specifications come with fixed indentation rules, we need to use the default settings of DrRacket’s indentation for this rule to make sense." Maybe a special submodule like drracket-indentation with declarations like: (module+ drracket-indentation (like-lambda my-lambda my-function ....) (like-begin my-begin ....) ) could be useful for user-specific indentation. As a submodule, Racket can read&load it only at appropriate moments. When indenting the file, DrRacket could first load the drracket-indentation module of the file to know how to indent it. One could then create a whole language with its own indentation rules. It would also be easier to add good indentations for for/fold and others. * Graphical syntax "When we figure out how to save such files in an editor-compatible way, we may relax this constraint." Maybe the graphical job should be done by DrRacket only, and the file itself should remain textual. For example, special forms can be turned into graphics by DrRacket when reading the file: You write: (image "balloon.jpg") and DrRacket turns this into the image (if the option is turned on somewhere in the preferences). Of course, the s-exp should still be editable, for example with a contextual menu that proposes "Back to s-exp" or "Turn me into graphical form". Or even surround it with a form like (drracket-show-image (image "balloon.jpg") 48 48) for better rendering (that form obviously expands into (image "balloon.jpg") for Racket). Same for code folding, 2 options: - either surround s-exps with a (drracket-fold ....) form to inform DrRacket to fold the s-exp, and Racket to just do what's inside the form, (but that "pollutes" the file for external editors, though an `unfold-file' function should not be too difficult to do) - or do not save folding into the file (loading a file displays it unfolded, then it can be folded as desired). This might be problematic with DrSync though, unless the file is not reverted if it has not changed. But I agree all this would require some work, certainly. Laurent
_________________________ Racket Developers list: http://lists.racket-lang.org/dev