File: //usr/share/highlight/langDefs/cmake.lang
Description="CMake"
Keywords={
{ Id=1,
List={
"if", "elseif", "else", "endif", "foreach", "endforeach", "and", "while", "endwhile", "macro", "endmacro", "function", "endfunction", "set", "unset"
},
},
{ Id=2,
Regex=[[ [0-9A-Z_]{2,} ]],
},
{ Id=3,
Regex=[[\$\{.+\$\{.+?\}.+?\}|\$\{.+?\} ]],
},
{ Id=3,
Regex=[[ [A-Z_\>]+\:([\w/]+) ]],
},
{ Id=4,
Regex=[[(\w+)\s*\(]],
},
}
Strings={
Delimiter=[["|']],
DelimiterPairs= {
{ Open=[[ \[=*\[ ]], Close=[[ \]=*\] ]], Raw=true }
},
AssertEqualLength=true
}
IgnoreCase=false
Comments={
{ Block=false,
Delimiter= { [[ #(?!\[\[) ]] },
},
{ Block=true,
Nested=false,
Delimiter= { [[ #\[\[ ]],[[ \]\] ]],}
}
}
Operators=[[\(|\)|\{|\}|\[|\]|\,|\;|\.|\:|\&|<|>|\!|\=|\/|\*|\%|\+|\-|\~|\#|\\]]
-- resolve issue with ]] close delimiter which ends comments and strings
function OnStateChange(oldState, newState, token)
if token=="]]" and oldState==HL_STRING and newState==HL_BLOCK_COMMENT_END then
return HL_STRING_END
end
return newState
end