The problem might be not JS but using DOM (every colored word has to be a separate node and every time you add or remove a letter there would be a reflow) instead of custom widget written in compiled language and heavily optimized for displaying colored text in monospace font.<p>Sublime uses high level language (python) too but not for rendering.