[wg-camlp4] A new branch to experiment with extension points
Alain Frisch
alain.frisch at lexifi.com
Wed Mar 6 13:18:12 GMT 2013
On 03/06/2013 01:57 PM, Leo White wrote:
> I'm not sure that I understand the need for general attributes not
> attached to anything in the middle of the module. If their position is
> important then there must be some item that they are essentially
> attached to, if their position is not important then they can just be
> placed at the top of the module.
I was mentioning ocamldoc section headers. Without "floating"
attributes, one can write:
[^^doc section "....."] include sig
...
end
On the one hand, this is nice, because it materializes the scope of the
section (and you can benefit from your editor's folding feature). But
on the other hand, it is quite verbose and forces some extra
indentation. More fundamentally, this might not interact nicely with
other features/tools, which might require a different nesting structure.
For instance, imagine a global dead code detector, for which one might
want to exclude whole "sections" of exported declarations. One could
use the same technique as for ocamldoc sections:
[^^dead_code_detector ignore] include sig
...
end
But then we need to close/reopen those sections so that they remain
nested within ocamldoc ones. With floating attributes, one can write:
[*doc section "Section 1"]
[*dead_code_detector ignore true]
....
[*doc section "Section 2"]
....
[*dead_code_detector ignore false]
....
Does it make sense?
Alain
More information about the wg-camlp4
mailing list