On 18/2/2006, at 6:20, Charilaos Skiadas wrote:
The current Io bundle does this. For the records though, the way it is achieved is by having the language grammar match empty parenthesis and have it assign a scope name to that construct (for example meta.empty-parenthesis.io).
But the same effect with curly braces instead of parentheses does not need any extra stuff like that, does it? How is that done, and why can't we use the same for parens?
Ah no, the curly brace automation is hardcoded.
It could be changed to also be specified by overloading return -- I like that latter part of it. But having to put in all those language grammar rules, I'm not too fond of. One option is the talked about possibility of making a “base” language grammar for source code that all others include, but this is only of limited use, e.g. as mentioned on IRC yesterday, it would be nice to match Doxygen keywords and maybe Subversion magic words as well, but this happens in comments (well, the latter could likely be in strings), so each language would still need to have some knowledge about this (i.e. where to include the svn or Doxygen language grammar).
Adding to this, there is also the problem where a construct is both matched for behavior altering and for styling, or where it is matched simply to make the language parse correctly. For example LaTeX do parse { and }, although in this case it wouldn't conflict, because the potential base grammar would only match them, when nothing was in between.