Skip to content

Commit

Permalink
fix: remove nested repositories/patterns, make look-behinds to be fix…
Browse files Browse the repository at this point in the history
…ed-width, closes #3
  • Loading branch information
piotr-semenov committed May 19, 2024
1 parent ab6fd2c commit 23b9fcb
Show file tree
Hide file tree
Showing 4 changed files with 136 additions and 133 deletions.
21 changes: 10 additions & 11 deletions src/comments.YAML-tmLanguage
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
repository:
comments:
patterns:
- include: '#inline'
- include: '#_inline'
-
begin: '/\*'
beginCaptures:
Expand All @@ -15,13 +15,12 @@ repository:
name: comment.block.parigp
patterns:
- include: '#comments'
repository:
inline:
patterns:
-
match: '(\\\\).*$\n?'
captures:
0:
name: punctuation.definition.comment.parigp
1:
name: comment.line.double-slash.parigp
_inline:
patterns:
-
match: '(\\\\).*$\n?'
captures:
0:
name: punctuation.definition.comment.parigp
1:
name: comment.line.double-slash.parigp
202 changes: 105 additions & 97 deletions src/functions.YAML-tmLanguage.j2
Original file line number Diff line number Diff line change
Expand Up @@ -4,104 +4,112 @@ repository:
parens: &parens_rules []
functions:
patterns:
- include: '#builtins'
- include: '#user-defined'
- include: '#_builtins'
- include: '#_user-defined'

repository:
builtins:
_builtins:
patterns:
-
match: '\b({{ scopes["entity.name.function"] | join("|") }})\b(\s*)(?={|\()'
captures:
1:
name: entity.name.function.builtins.parigp
2:
name: constant.character.whitespace.parigp
-
match: '\b({{ scopes["constant.language"] | join("|") }})'
captures:
1:
name: constant.language.parigp
-
match: '\b({{ scopes["keyword.control"] | join("|") }})\b'
captures:
1:
name: keyword.control.parigp
-
match: '(\.)({{ scopes["entity.name.function.member"] | join("|") }})\b'
captures:
1:
name: markup.punctuation.member.parigp
2:
name: entity.name.function.member.builtins.parigp

_user-defined:
patterns:
-
begin: '([[:alpha:]][[:alnum:]_]*)\b(?=(\s*\(|\(\s*\{|\{\s*\()[^=]*=)'
end: '(?<=\=)'
beginCaptures:
1:
name: entity.name.function.user.parigp
name: meta.function.parigp
patterns:
- include: '#_function-vars'
-
begin: '([[:alpha:]][[:alnum:]_]*)\b(?=\s*=\s*(\(([^()]|(\g<2>))*\)|[[:alpha:]][[:alnum:]_]*)\s*\-\s*>)'
end: '\-(\s*)>'
beginCaptures:
1:
name: entity.name.function.user.lambda.parigp
endCaptures:
0:
name: keyword.operator.lambda
1:
name: constant.character.whitespace.parigp
name: meta.function.lambda.parigp
patterns:
-
match: '\b({{ scopes["entity.name.function"] | join("|") }})\b(\s*)(?={|\()'
captures:
1:
name: entity.name.function.builtins.parigp
2:
name: constant.character.whitespace.parigp
-
match: '\b({{ scopes["constant.language"] | join("|") }})'
captures:
1:
name: constant.language.parigp
-
match: '\b({{ scopes["keyword.control"] | join("|") }})\b'
captures:
1:
name: keyword.control.parigp
-
match: '(\.)({{ scopes["entity.name.function.member"] | join("|") }})\b'
captures:
1:
name: markup.punctuation.member.parigp
2:
name: entity.name.function.member.builtins.parigp
- include: '#_function-vars'
-
begin: '(?=(?:\(([^()]|(\g<0>))*\)|[[:alpha:]][[:alnum:]_]*|\{.+\})\s*\-\s*>)'
end: '\-(\s*)>'
contentName: entity.name.function.user.lambda.anonymous.parigp
endCaptures:
0:
name: keyword.operator.lambda
1:
name: constant.character.whitespace.parigp
name: meta.function.lambda.anonymous.parigp
patterns:
- include: '#_function-vars'
-
begin: '(\.)([[:alpha:]][[:alnum:]_]*)\b(?=[^=]*=)'
end: '(?<=\=)'
beginCaptures:
1:
name: markup.punctuation.member.parigp
2:
name: entity.name.function.user.member.parigp
name: meta.function.member.parigp
patterns:
- include: '#general'
- include: '#operators'

user-defined:
_function-vars:
patterns:
-
<<: *parens_rules
patterns:
- include: '#_function-vars'
- include: '#general'
- include: '#literals'
- include: '#operators'
- include: '#type-hints'
-
match: '(?<!:)(\s*)([[:alpha:]][[:alnum:]_]*)'
captures:
1:
name: constant.character.whitespace.parigp
2:
name: variable.parameter.function.parigp
-
begin: '(\{)'
end: '(\})'
beginCaptures:
1:
name: meta.function.parameter.optional.begin.parigp
endCaptures:
1:
name: meta.function.parameter.optional.end.parigp
name: meta.function.parameter.optional.parigp
patterns:
-
begin: '([[:alpha:]][[:alnum:]_]*)\b(?=(\s*\(|\(\s*\{|\{\s*\()[^=]*=)'
end: '(?<=\s*\=)'
beginCaptures:
1:
name: entity.name.function.user.parigp
name: meta.function.parigp
patterns:
- include: '#function-vars'
-
begin: '([[:alpha:]][[:alnum:]_]*)\b(?=\s*=\s*(\(([^()]|(\g<2>))*\)|[[:alpha:]][[:alnum:]_]*)\s*\-\s*>)'
end: '(?<=\s*\-\s*>)'
beginCaptures:
1:
name: entity.name.function.user.lambda.parigp
name: meta.function.lambda.parigp
patterns:
- include: '#function-vars'
-
begin: '(\(([^()]|(\g<0>))*\)|[[:alpha:]][[:alnum:]_]*|\{.+\})(?=\s*\-\s*>)'
end: '(?<=\s*\-\s*>)'
beginCaptures:
1:
name: entity.name.function.user.lambda.anonymous.parigp
patterns:
- include: '#function-vars'
name: meta.function.lambda.anonymous.parigp
patterns:
- include: '#general'
- include: '#operators'
-
begin: '(\.)([[:alpha:]][[:alnum:]_]*)\b(?=[^=]*=)'
end: '(?<=\s*\=)'
beginCaptures:
1:
name: markup.punctuation.member.parigp
2:
name: entity.name.function.user.member.parigp
name: meta.function.member.parigp
patterns:
- include: '#general'
- include: '#operators'
repository:
function-vars:
patterns:
-
<<: *parens_rules
patterns:
- include: '#function-vars'
- include: '#general'
- include: '#literals'
- include: '#operators'
- include: '#type-hints'
-
match: '(?<!:\s*)([[:alpha:]][[:alnum:]_]*)\s*'
name: variable.parameter.function.parigp
-
begin: '(\{)'
end: '(\})'
beginCaptures:
1:
name: meta.function.parameter.optional.begin.parigp
endCaptures:
1:
name: meta.function.parameter.optional.end.parigp
name: meta.function.parameter.optional.parigp
patterns:
- include: '#function-vars'
- include: '#_function-vars'
43 changes: 21 additions & 22 deletions src/literals.YAML-tmLanguage
Original file line number Diff line number Diff line change
Expand Up @@ -3,27 +3,26 @@
repository:
literals:
patterns:
- include: '#numeric'
- include: '#string'
- include: '#_numeric'
- include: '#_string'

repository:
numeric:
patterns:
-
match: '\b(0(x|X)[0-9A-Fa-f]*)\b'
name: constant.numeric.hex.parigp
-
match: '\b(0(b|B)[0-1]*)\b'
name: constant.numeric.bin.parigp
-
match: '(([0-9]+\.?[0-9]*|[0-9]*\.?[0-9]+)\s*([eE][+-]?[0-9]+)\b|[0-9]+\.(?!\.)[0-9]*|(?<!\.)\.[0-9]+\b)'
name: constant.numeric.float.parigp
-
match: '\b([0-9]+)\b'
name: constant.numeric.int.parigp
_numeric:
patterns:
-
match: '\b(0(x|X)[0-9A-Fa-f]*)\b'
name: constant.numeric.hex.parigp
-
match: '\b(0(b|B)[0-1]*)\b'
name: constant.numeric.bin.parigp
-
match: '(([0-9]+\.?[0-9]*|[0-9]*\.?[0-9]+)\s*([eE][+-]?[0-9]+)\b|[0-9]+\.(?!\.)[0-9]*|(?<!\.)\.[0-9]+\b)'
name: constant.numeric.float.parigp
-
match: '\b([0-9]+)\b'
name: constant.numeric.int.parigp

string:
patterns:
-
match: '"(.*)"'
name: constant.character.escape.parigp
_string:
patterns:
-
match: '"(.*)"'
name: constant.character.escape.parigp
3 changes: 0 additions & 3 deletions src/operators.YAML-tmLanguage
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,6 @@ repository:
-
match: '(<=|>=|<|(?<!\-)>|!=|==)'
name: keyword.operator.comparison.parigp
-
match: '(\->)'
name: keyword.operator.lambda
-
match: '(=)'
name: keyword.operator.assignment.parigp
Expand Down

0 comments on commit 23b9fcb

Please sign in to comment.