"time_left", "time_out", "when_closed", "when_open", "when_on",
"when_off", "with_key"]
-keywords = ["box", "break", "continue", "do", "else", "font off", "font on",
+extension_properties = ["pname"]
+
+keywords = ["box", "break", "continue", "do", "else", "font",
"for", "give", "has", "hasnt", "if", "in", "inversion", "jump",
"move", "new_line", "notin", "objectloop", "ofclass", "or",
"print", "print_ret", "provides", "quit", "read", "remove",
tokens = {
'root': [
- (r'"', String.Double, 'stringdouble'),
- (r"'", String.Single, 'stringsingle'),
+ (r'"', String.Double, 'string-double'),
+ (r"'", String.Single, 'string-single'),
+ (r"\[ *", Text, 'function-name'),
(r'\n', Text),
(r'[^\S\n]+', Text),
(r'\\', Text),
(r'=', Operator),
(r"[A-Za-z_,]+:", Name.Label),
- (r"<<\S+>>", Name.Label),
+ (r"<.+?>", Name.Label),
(wordlist(objects), Name.Class),
(wordlist(keywords), Token.Keyword.Reserved),
(wordlist(attributes), Name.Attribute),
(wordlist(constants), Name.Constant),
+ (wordlist(extension_properties), Name.Builtin),
+
(r'[a-zA-Z_][a-zA-Z0-9_.]*', Name),
(r'(\d+\.?\d*|\d*\.\d+)([eE][+-]?[0-9]+)?', Number.Float),
(r'\d+', Number.Integer),
(r'.', Punctuation),
],
- 'stringdouble': [
+ 'function-name': [
+ (r"[ ;]", Text, '#pop'),
+ (r".", Name.Function),
+ ],
+
+ 'string-double': [
(r'"', String.Double, '#pop'),
(r'.', String.Double),
(r'\n', String.Double),
],
- 'stringsingle': [
+ 'string-single': [
(r"'", String.Single, '#pop'),
(r'.', String.Single),
],