I wouldn't say we have anything more efficient right now. The only currently-existing alternative is to write an asynchronous highlighting provider service. This involves using an "orion.edit.model" service to receive text change events from the Orion editor, and using them to reconstruct a copy of the text buffer, which you can inspect to decide which syntax highlighting styles should be generated, and fire the appropriate styles back to the Orion editor.

This way is more complex, but also more powerful, since you can respond to changes in the file text with arbitrary logic in code, rather than being limited to a grammar format defined by metadata.

An example such implementation is in the Orion-codemirror plugin, which lives here on Github. You could even use this plugin as a starting point, and simply add support to it for your "keyword1|keyword2|.." language. Your language's highlighting rules would have to be written as a CodeMirror "mode", which is basically a small parser.