multi-line strings containing printf formatters are colorized properly

It's also more efficient since the lexer is not used anymore.
Could you bind `(getTextLine (line - 1))` to a value? It repeats three times here.