One of the items in etc/TODO is: ** Beefed-up syntax-tables. *** recognize multi-character syntactic entities like `begin' and `end'. Lately I'm using languages where this would be quite useful and would be interested in adding support. Before I dive in, are there any strong opinions about how this should be implemented? The approach I was thinking of taking is defining a new syntax character class (let's say, *) which inherits from the previous character (recursively if the previous character is *). The important distinction is that they would not be treated as a new instance of that syntax class, so point movement by syntax class or paren matching would work (e.g. begin would be (****, and would only add 1 level of paren nesting). A mode would use a syntax-propertize-function to tag keywords with appropriate text properties. So something like Ruby: class Foo def Bar if condition ... end end end would have syntax classes like: (**** www (** www (* wwwwwwwww ... )** )** )**