I want to highlight only keywords that look like this: {KEYWORD}
(basically UPPERCASE words wrapped between single {}
parentheses)
I tried this by copying the code from the Mustache Overlay demo, and by replacing the double brackets with single ones:
CodeMirror.defineMode('mymode', function(config, parserConfig) {
var mymodeOverlay = {
token: function(stream, state) {
if (stream.match("{")) {
while ((ch = stream.next()) != null)
if (ch == "}" && stream.next() == "}") break;
return 'mymode';
}
while (stream.next() != null && !stream.match("{", false)) {}
return null;
}
};
return CodeMirror.overlayParser(CodeMirror.getMode(config, parserConfig.backdrop || "text/html"), mymodeOverlay);
});
but it doesn't work very good :)
Any ideas?
There is special handling in the Mustache example because it needs to handle 2-character delimiters (e.g. there are two characters in
'{{'
and'}}'
). I've never used CodeMirror before, so this is just a guess, but try something like this:Edit
This should work:
Accepted answer highlight every chars in brackets.
My version, if someone else encounter same issue.