diff options
-rw-r--r-- | pygments/lexers/compiled.py | 13 | ||||
-rw-r--r-- | tests/examplefiles/objc_example2.m | 3 |
2 files changed, 16 insertions, 0 deletions
diff --git a/pygments/lexers/compiled.py b/pygments/lexers/compiled.py index 103a9be5..947282dd 100644 --- a/pygments/lexers/compiled.py +++ b/pygments/lexers/compiled.py @@ -1411,12 +1411,18 @@ def objective(baselexer): ], 'oc_classname' : [ # interface definition that inherits + ('([a-zA-Z$_][a-zA-Z0-9$_]*)(\s*:\s*)([a-zA-Z$_][a-zA-Z0-9$_]*)?(\s*)({)', + bygroups(Name.Class, Text, Name.Class, Text, Punctuation), ('#pop', 'oc_ivars')), ('([a-zA-Z$_][a-zA-Z0-9$_]*)(\s*:\s*)([a-zA-Z$_][a-zA-Z0-9$_]*)?', bygroups(Name.Class, Text, Name.Class), '#pop'), # interface definition for a category + ('([a-zA-Z$_][a-zA-Z0-9$_]*)(\s*)(\([a-zA-Z$_][a-zA-Z0-9$_]*\))(\s*)({)', + bygroups(Name.Class, Text, Name.Label, Text, Punctuation), ('#pop', 'oc_ivars')), ('([a-zA-Z$_][a-zA-Z0-9$_]*)(\s*)(\([a-zA-Z$_][a-zA-Z0-9$_]*\))', bygroups(Name.Class, Text, Name.Label), '#pop'), # simple interface / implementation + ('([a-zA-Z$_][a-zA-Z0-9$_]*)(\s*)({)', + bygroups(Name.Class, Text, Punctuation), ('#pop', 'oc_ivars')), ('([a-zA-Z$_][a-zA-Z0-9$_]*)', Name.Class, '#pop') ], 'oc_forward_classname' : [ @@ -1425,6 +1431,13 @@ def objective(baselexer): ('([a-zA-Z$_][a-zA-Z0-9$_]*)(\s*;?)', bygroups(Name.Class, Text), '#pop') ], + 'oc_ivars' : [ + include('whitespace'), + include('statements'), + (';', Punctuation), + ('{', Punctuation, '#push'), + ('}', Punctuation, '#pop'), + ], 'root': [ # methods (r'^([-+])(\s*)' # method marker diff --git a/tests/examplefiles/objc_example2.m b/tests/examplefiles/objc_example2.m index 8cd9b060..b7a5a685 100644 --- a/tests/examplefiles/objc_example2.m +++ b/tests/examplefiles/objc_example2.m @@ -22,3 +22,6 @@ @synthesize lastModifiedDate; // implementation continues @end + ++ (void)f1:(NSString *)s1; ++ (void)f2:(NSString *)s2; |