From ef99de7936d45c4199fa51b5654130dafefabe68 Mon Sep 17 00:00:00 2001 From: Martin Aeschlimann Date: Fri, 13 Nov 2015 18:25:18 +0100 Subject: [PATCH] Add source.regexp.python rules --- extensions/python/package.json | 3 + .../Regular Expressions (Python).tmLanguage | 299 ++++++++++++++++++ 2 files changed, 302 insertions(+) create mode 100644 extensions/python/syntaxes/Regular Expressions (Python).tmLanguage diff --git a/extensions/python/package.json b/extensions/python/package.json index 4dc79883946..5d178ef1c65 100644 --- a/extensions/python/package.json +++ b/extensions/python/package.json @@ -15,6 +15,9 @@ "language": "python", "scopeName": "source.python", "path": "./syntaxes/Python.tmLanguage" + },{ + "scopeName": "source.regexp.python", + "path": "./syntaxes/Regular Expressions (Python).tmLanguage" }] } } \ No newline at end of file diff --git a/extensions/python/syntaxes/Regular Expressions (Python).tmLanguage b/extensions/python/syntaxes/Regular Expressions (Python).tmLanguage new file mode 100644 index 00000000000..80226aaecfa --- /dev/null +++ b/extensions/python/syntaxes/Regular Expressions (Python).tmLanguage @@ -0,0 +1,299 @@ + + + + + comment + Matches Python's regular expression syntax. + fileTypes + + re + + foldingStartMarker + (/\*|\{|\() + foldingStopMarker + (\*/|\}|\)) + name + Regular Expressions (Python) + patterns + + + match + \\[bBAZzG]|\^|\$ + name + keyword.control.anchor.regexp + + + match + \\[1-9][0-9]? + name + keyword.other.back-reference.regexp + + + match + [?+*][?+]?|\{(\d+,\d+|\d+,|,\d+|\d+)\}\?? + name + keyword.operator.quantifier.regexp + + + match + \| + name + keyword.operator.or.regexp + + + begin + \(\?\# + end + \) + name + comment.block.regexp + + + comment + We are restrictive in what we allow to go after the comment character to avoid false positives, since the availability of comments depend on regexp flags. + match + (?<=^|\s)#\s[[a-zA-Z0-9,. \t?!-:][^\x{00}-\x{7F}]]*$ + name + comment.line.number-sign.regexp + + + match + \(\?[iLmsux]+\) + name + keyword.other.option-toggle.regexp + + + match + (\()(\?P=([a-zA-Z_][a-zA-Z_0-9]*\w*))(\)) + name + keyword.other.back-reference.named.regexp + + + begin + (\()((\?=)|(\?!)|(\?<=)|(\?<!)) + beginCaptures + + 1 + + name + punctuation.definition.group.regexp + + 2 + + name + punctuation.definition.group.assertion.regexp + + 3 + + name + meta.assertion.look-ahead.regexp + + 4 + + name + meta.assertion.negative-look-ahead.regexp + + 5 + + name + meta.assertion.look-behind.regexp + + 6 + + name + meta.assertion.negative-look-behind.regexp + + + end + (\)) + endCaptures + + 1 + + name + punctuation.definition.group.regexp + + + name + meta.group.assertion.regexp + patterns + + + include + $self + + + + + begin + (\()(\?\(([1-9][0-9]?|[a-zA-Z_][a-zA-Z_0-9]*)\)) + beginCaptures + + 1 + + name + punctuation.definition.group.regexp + + 2 + + name + punctuation.definition.group.assertion.conditional.regexp + + 3 + + name + entity.name.section.back-reference.regexp + + + comment + we can make this more sophisticated to match the | character that separates yes-pattern from no-pattern, but it's not really necessary. + end + (\)) + name + meta.group.assertion.conditional.regexp + patterns + + + include + $self + + + + + begin + (\()((\?P<)([a-z]\w*)(>)|(\?:))? + beginCaptures + + 1 + + name + punctuation.definition.group.regexp + + 3 + + name + punctuation.definition.group.capture.regexp + + 4 + + name + entity.name.section.group.regexp + + 5 + + name + punctuation.definition.group.capture.regexp + + 6 + + name + punctuation.definition.group.no-capture.regexp + + + end + (\)) + endCaptures + + 1 + + name + punctuation.definition.group.regexp + + + name + meta.group.regexp + patterns + + + include + $self + + + + + include + #character-class + + + repository + + character-class + + patterns + + + match + \\[wWsSdDhH]|\. + name + constant.character.character-class.regexp + + + match + \\. + name + constant.character.escape.backslash.regexp + + + begin + (\[)(\^)? + beginCaptures + + 1 + + name + punctuation.definition.character-class.regexp + + 2 + + name + keyword.operator.negation.regexp + + + end + (\]) + endCaptures + + 1 + + name + punctuation.definition.character-class.regexp + + + name + constant.other.character-class.set.regexp + patterns + + + include + #character-class + + + captures + + 2 + + name + constant.character.escape.backslash.regexp + + 4 + + name + constant.character.escape.backslash.regexp + + + match + ((\\.)|.)\-((\\.)|[^\]]) + name + constant.other.character-class.range.regexp + + + + + + + scopeName + source.regexp.python + uuid + DD867ABF-1EC6-415D-B047-687F550A1D51 + +