On Sat, May 12, 2012 at 12:49 AM, Eli Barzilay <e...@barzilay.org> wrote:
> 5 hours ago, Neil Toronto wrote: > > On 05/09/2012 02:18 AM, Laurent wrote: > > > 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. > > > > That would be awesome for Typed Racket macros in particular. Its > > `for' macros are great examples of forms that should have fairly > > complex indentation rules. Optional type declarations make it > > difficult to classify them as "begin-like", "define-like" or > > "lambda-like". > > That kind of indentation specification is more fitting in the language > info, together with coloring etc. > Probably. But how can the user specify its own rules then? (genuine question, I don't know where the language info lies, and how it can be extended) > > For specific macros in some random file something that I suggested in > the past could work better: have an ability to use "sub-namespaces" > where an identifier can have a number of related bindings -- so you > could define `foo' and some `foo@indent' (or whatever) which specifies > indentation. The reason that this would work better is that any > context that receives the `foo' binding would also get its > indentation. Interesting idea. Could sub-namespaces be loaded independently from the main identifier, in case you don't need it? Anyway, submodules already exists, hence my suggestion. Eg, think about providing it as `bar' -- if the rules > are in a sub-module, then it won't work unless you construct your own > sub-module. > Unless `bar' knows its real name is `foo'? (which it does, maybe?) Currently, DrRacket does not seem to be able to do this anyway (which may be why you proposed sub-namespaces?): #lang racket (require (rename-in racket [define gabuzomeu])) (gabuzomeu (foo bar) (list bar)) So probably sub-moduled indentation rules would be a less important change than adding sub-namespaces, and thus requires less work which makes it more probable to appear in a near future? Laurent
_________________________ Racket Developers list: http://lists.racket-lang.org/dev