mirror of
				https://github.com/sharkdp/bat.git
				synced 2025-10-31 07:04:04 +00:00 
			
		
		
		
	Add Nix syntax, closes #180
This commit is contained in:
		
							
								
								
									
										1
									
								
								assets/syntaxes/Nix
									
									
									
									
									
										Submodule
									
								
							
							
								
								
								
								
								
							
						
						
									
										1
									
								
								assets/syntaxes/Nix
									
									
									
									
									
										Submodule
									
								
							 Submodule assets/syntaxes/Nix added at ebf06571f3
									
								
							
							
								
								
									
										609
									
								
								assets/syntaxes/Nix.sublime-syntax
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										609
									
								
								assets/syntaxes/Nix.sublime-syntax
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,609 @@ | ||||
| %YAML 1.2 | ||||
| --- | ||||
| # http://www.sublimetext.com/docs/3/syntax.html | ||||
| name: Nix | ||||
| file_extensions: | ||||
|   - nix | ||||
| scope: source.nix | ||||
| contexts: | ||||
|   main: | ||||
|     - include: expression | ||||
|   comment: | ||||
|     - match: '/\*([^*]|\*[^\/])*' | ||||
|       push: | ||||
|         - meta_scope: comment.block.nix | ||||
|         - match: \*\/ | ||||
|           pop: true | ||||
|         - include: comment-remark | ||||
|     - match: '\#' | ||||
|       push: | ||||
|         - meta_scope: comment.line.number-sign.nix | ||||
|         - match: $ | ||||
|           pop: true | ||||
|         - include: comment-remark | ||||
|   attribute-bind: | ||||
|     - include: attribute-name | ||||
|     - include: attribute-bind-from-equals | ||||
|   attribute-bind-from-equals: | ||||
|     - match: \= | ||||
|       captures: | ||||
|         0: keyword.operator.bind.nix | ||||
|       push: | ||||
|         - match: \; | ||||
|           captures: | ||||
|             0: punctuation.terminator.bind.nix | ||||
|           pop: true | ||||
|         - include: expression | ||||
|   attribute-inherit: | ||||
|     - match: \binherit\b | ||||
|       captures: | ||||
|         0: keyword.other.inherit.nix | ||||
|       push: | ||||
|         - match: \; | ||||
|           captures: | ||||
|             0: punctuation.terminator.inherit.nix | ||||
|           pop: true | ||||
|         - match: \( | ||||
|           captures: | ||||
|             0: punctuation.section.function.arguments.nix | ||||
|           push: | ||||
|             - match: (?=\;) | ||||
|               pop: true | ||||
|             - match: \) | ||||
|               captures: | ||||
|                 0: punctuation.section.function.arguments.nix | ||||
|               push: | ||||
|                 - match: (?=\;) | ||||
|                   pop: true | ||||
|                 - include: bad-reserved | ||||
|                 - include: attribute-name-single | ||||
|                 - include: others | ||||
|             - include: expression | ||||
|         - match: '(?=[a-zA-Z\_])' | ||||
|           push: | ||||
|             - match: (?=\;) | ||||
|               pop: true | ||||
|             - include: bad-reserved | ||||
|             - include: attribute-name-single | ||||
|             - include: others | ||||
|         - include: others | ||||
|   attribute-name: | ||||
|     - match: '\b[a-zA-Z\_][a-zA-Z0-9\_\''\-]*' | ||||
|       scope: entity.other.attribute-name.multipart.nix | ||||
|     - match: \. | ||||
|     - include: string-quoted | ||||
|     - include: interpolation | ||||
|   attribute-name-single: | ||||
|     - match: '\b[a-zA-Z\_][a-zA-Z0-9\_\''\-]*' | ||||
|       scope: entity.other.attribute-name.single.nix | ||||
|   attrset-contents: | ||||
|     - include: attribute-inherit | ||||
|     - include: bad-reserved | ||||
|     - include: attribute-bind | ||||
|     - include: others | ||||
|   attrset-definition: | ||||
|     - match: '(?=\{)' | ||||
|       push: | ||||
|         - match: '(?=([\])};,]|\b(else|then)\b))' | ||||
|           pop: true | ||||
|         - match: '(\{)' | ||||
|           captures: | ||||
|             0: punctuation.definition.attrset.nix | ||||
|           push: | ||||
|             - match: '(\})' | ||||
|               captures: | ||||
|                 0: punctuation.definition.attrset.nix | ||||
|               pop: true | ||||
|             - include: attrset-contents | ||||
|         - match: '(?<=\})' | ||||
|           push: | ||||
|             - match: '(?=([\])};,]|\b(else|then)\b))' | ||||
|               pop: true | ||||
|             - include: expression-cont | ||||
|   attrset-definition-brace-opened: | ||||
|     - match: '(?<=\})' | ||||
|       push: | ||||
|         - match: '(?=([\])};,]|\b(else|then)\b))' | ||||
|           pop: true | ||||
|         - include: expression-cont | ||||
|     - match: (?=.?) | ||||
|       push: | ||||
|         - match: '\}' | ||||
|           captures: | ||||
|             0: punctuation.definition.attrset.nix | ||||
|           pop: true | ||||
|         - include: attrset-contents | ||||
|   attrset-for-sure: | ||||
|     - match: (?=\brec\b) | ||||
|       push: | ||||
|         - match: '(?=([\])};,]|\b(else|then)\b))' | ||||
|           pop: true | ||||
|         - match: \brec\b | ||||
|           captures: | ||||
|             0: keyword.other.nix | ||||
|           push: | ||||
|             - match: '(?=\{)' | ||||
|               pop: true | ||||
|             - include: others | ||||
|         - include: attrset-definition | ||||
|         - include: others | ||||
|     - match: '(?=\{\s*(\}|[^,?]*(=|;)))' | ||||
|       push: | ||||
|         - match: '(?=([\])};,]|\b(else|then)\b))' | ||||
|           pop: true | ||||
|         - include: attrset-definition | ||||
|         - include: others | ||||
|   attrset-or-function: | ||||
|     - match: '\{' | ||||
|       captures: | ||||
|         0: punctuation.definition.attrset-or-function.nix | ||||
|       push: | ||||
|         - match: '(?=([\])};]|\b(else|then)\b))' | ||||
|           pop: true | ||||
|         - match: '(?=(\s*\}|\"|\binherit\b|\b[a-zA-Z\_][a-zA-Z0-9\_\''\-]*(\s*\.|\s*=[^=])))' | ||||
|           push: | ||||
|             - match: '(?=([\])};,]|\b(else|then)\b))' | ||||
|               pop: true | ||||
|             - include: attrset-definition-brace-opened | ||||
|         - match: '(?=(\.\.\.|\b[a-zA-Z\_][a-zA-Z0-9\_\''\-]*\s*[,?]))' | ||||
|           push: | ||||
|             - match: '(?=([\])};,]|\b(else|then)\b))' | ||||
|               pop: true | ||||
|             - include: function-definition-brace-opened | ||||
|         - include: bad-reserved | ||||
|         - match: '\b[a-zA-Z\_][a-zA-Z0-9\_\''\-]*' | ||||
|           captures: | ||||
|             0: variable.parameter.function.maybe.nix | ||||
|           push: | ||||
|             - match: '(?=([\])};]|\b(else|then)\b))' | ||||
|               pop: true | ||||
|             - match: (?=\.) | ||||
|               push: | ||||
|                 - match: '(?=([\])};,]|\b(else|then)\b))' | ||||
|                   pop: true | ||||
|                 - include: attrset-definition-brace-opened | ||||
|             - match: \s*(\,) | ||||
|               captures: | ||||
|                 1: keyword.operator.nix | ||||
|               push: | ||||
|                 - match: '(?=([\])};,]|\b(else|then)\b))' | ||||
|                   pop: true | ||||
|                 - include: function-definition-brace-opened | ||||
|             - match: (?=\=) | ||||
|               push: | ||||
|                 - match: '(?=([\])};,]|\b(else|then)\b))' | ||||
|                   pop: true | ||||
|                 - include: attribute-bind-from-equals | ||||
|                 - include: attrset-definition-brace-opened | ||||
|             - match: (?=\?) | ||||
|               push: | ||||
|                 - match: '(?=([\])};,]|\b(else|then)\b))' | ||||
|                   pop: true | ||||
|                 - include: function-parameter-default | ||||
|                 - match: \, | ||||
|                   captures: | ||||
|                     0: keyword.operator.nix | ||||
|                   push: | ||||
|                     - match: '(?=([\])};,]|\b(else|then)\b))' | ||||
|                       pop: true | ||||
|                     - include: function-definition-brace-opened | ||||
|             - include: others | ||||
|         - include: others | ||||
|   bad-reserved: | ||||
|     - match: '(?<![\w''-])(if|then|else|assert|with|let|in|rec|inherit)(?![\w''-])' | ||||
|       scope: invalid.illegal.reserved.nix | ||||
|   comment-remark: | ||||
|     - match: (TODO|FIXME|BUG|\!\!\!):? | ||||
|       captures: | ||||
|         1: markup.bold.comment.nix | ||||
|   constants: | ||||
|     - match: \b(builtins|true|false|null)\b | ||||
|       captures: | ||||
|         0: constant.language.nix | ||||
|       push: | ||||
|         - match: '(?=([\])};,]|\b(else|then)\b))' | ||||
|           pop: true | ||||
|         - include: expression-cont | ||||
|     - match: \b(scopedImport|import|isNull|abort|throw|baseNameOf|dirOf|removeAttrs|map|toString|derivationStrict|derivation)\b | ||||
|       captures: | ||||
|         0: support.function.nix | ||||
|       push: | ||||
|         - match: '(?=([\])};,]|\b(else|then)\b))' | ||||
|           pop: true | ||||
|         - include: expression-cont | ||||
|     - match: '\b[0-9]+\b' | ||||
|       captures: | ||||
|         0: constant.numeric.nix | ||||
|       push: | ||||
|         - match: '(?=([\])};,]|\b(else|then)\b))' | ||||
|           pop: true | ||||
|         - include: expression-cont | ||||
|   expression: | ||||
|     - include: parens-and-cont | ||||
|     - include: list-and-cont | ||||
|     - include: string | ||||
|     - include: interpolation | ||||
|     - include: with-assert | ||||
|     - include: function-for-sure | ||||
|     - include: attrset-for-sure | ||||
|     - include: attrset-or-function | ||||
|     - include: let | ||||
|     - include: if | ||||
|     - include: operator-unary | ||||
|     - include: constants | ||||
|     - include: bad-reserved | ||||
|     - include: parameter-name-and-cont | ||||
|     - include: others | ||||
|   expression-cont: | ||||
|     - match: (?=.?) | ||||
|       push: | ||||
|         - match: '(?=([\])};,]|\b(else|then)\b))' | ||||
|           pop: true | ||||
|         - include: parens | ||||
|         - include: list | ||||
|         - include: string | ||||
|         - include: interpolation | ||||
|         - include: function-for-sure | ||||
|         - include: attrset-for-sure | ||||
|         - include: attrset-or-function | ||||
|         - match: '(\bor\b|\.|==|!=|!|\<\=|\<|\>\=|\>|&&|\|\||-\>|//|\?|\+\+|-|\*|/(?=([^*]|$))|\+)' | ||||
|           scope: keyword.operator.nix | ||||
|         - include: constants | ||||
|         - include: bad-reserved | ||||
|         - include: parameter-name | ||||
|         - include: others | ||||
|   function-body: | ||||
|     - match: '(@\s*([a-zA-Z\_][a-zA-Z0-9\_\''\-]*)\s*)?(\:)' | ||||
|       push: | ||||
|         - match: '(?=([\])};,]|\b(else|then)\b))' | ||||
|           pop: true | ||||
|         - include: expression | ||||
|   function-body-from-colon: | ||||
|     - match: (\:) | ||||
|       captures: | ||||
|         0: punctuation.definition.function.nix | ||||
|       push: | ||||
|         - match: '(?=([\])};,]|\b(else|then)\b))' | ||||
|           pop: true | ||||
|         - include: expression | ||||
|   function-contents: | ||||
|     - include: bad-reserved | ||||
|     - include: function-parameter | ||||
|     - include: others | ||||
|   function-definition: | ||||
|     - match: (?=.?) | ||||
|       push: | ||||
|         - match: '(?=([\])};,]|\b(else|then)\b))' | ||||
|           pop: true | ||||
|         - include: function-body-from-colon | ||||
|         - match: (?=.?) | ||||
|           push: | ||||
|             - match: (?=\:) | ||||
|               pop: true | ||||
|             - match: '(\b[a-zA-Z\_][a-zA-Z0-9\_\''\-]*)' | ||||
|               captures: | ||||
|                 0: variable.parameter.function.4.nix | ||||
|               push: | ||||
|                 - match: (?=\:) | ||||
|                   pop: true | ||||
|                 - match: \@ | ||||
|                   push: | ||||
|                     - match: (?=\:) | ||||
|                       pop: true | ||||
|                     - include: function-header-until-colon-no-arg | ||||
|                     - include: others | ||||
|                 - include: others | ||||
|             - match: '(?=\{)' | ||||
|               push: | ||||
|                 - match: (?=\:) | ||||
|                   pop: true | ||||
|                 - include: function-header-until-colon-with-arg | ||||
|         - include: others | ||||
|   function-definition-brace-opened: | ||||
|     - match: (?=.?) | ||||
|       push: | ||||
|         - match: '(?=([\])};,]|\b(else|then)\b))' | ||||
|           pop: true | ||||
|         - include: function-body-from-colon | ||||
|         - match: (?=.?) | ||||
|           push: | ||||
|             - match: (?=\:) | ||||
|               pop: true | ||||
|             - include: function-header-close-brace-with-arg | ||||
|             - match: (?=.?) | ||||
|               push: | ||||
|                 - match: '(?=\})' | ||||
|                   pop: true | ||||
|                 - include: function-contents | ||||
|         - include: others | ||||
|   function-for-sure: | ||||
|     - match: '(?=(\b[a-zA-Z\_][a-zA-Z0-9\_\''\-]*\s*[:@]|\{[^}]*\}\s*:|\{[^#}"''/=]*[,\?]))' | ||||
|       push: | ||||
|         - match: '(?=([\])};,]|\b(else|then)\b))' | ||||
|           pop: true | ||||
|         - include: function-definition | ||||
|   function-header-close-brace-no-arg: | ||||
|     - match: '\}' | ||||
|       captures: | ||||
|         0: punctuation.definition.entity.function.nix | ||||
|       push: | ||||
|         - match: (?=\:) | ||||
|           pop: true | ||||
|         - include: others | ||||
|   function-header-close-brace-with-arg: | ||||
|     - match: '\}' | ||||
|       captures: | ||||
|         0: punctuation.definition.entity.function.nix | ||||
|       push: | ||||
|         - match: (?=\:) | ||||
|           pop: true | ||||
|         - include: function-header-terminal-arg | ||||
|         - include: others | ||||
|   function-header-open-brace: | ||||
|     - match: '\{' | ||||
|       captures: | ||||
|         0: punctuation.definition.entity.function.2.nix | ||||
|       push: | ||||
|         - match: '(?=\})' | ||||
|           pop: true | ||||
|         - include: function-contents | ||||
|   function-header-terminal-arg: | ||||
|     - match: (?=@) | ||||
|       push: | ||||
|         - match: (?=\:) | ||||
|           pop: true | ||||
|         - match: \@ | ||||
|           push: | ||||
|             - match: (?=\:) | ||||
|               pop: true | ||||
|             - match: '(\b[a-zA-Z\_][a-zA-Z0-9\_\''\-]*)' | ||||
|               push: | ||||
|                 - meta_scope: variable.parameter.function.3.nix | ||||
|                 - match: (?=\:) | ||||
|                   pop: true | ||||
|             - include: others | ||||
|         - include: others | ||||
|   function-header-until-colon-no-arg: | ||||
|     - match: '(?=\{)' | ||||
|       push: | ||||
|         - match: (?=\:) | ||||
|           pop: true | ||||
|         - include: function-header-open-brace | ||||
|         - include: function-header-close-brace-no-arg | ||||
|   function-header-until-colon-with-arg: | ||||
|     - match: '(?=\{)' | ||||
|       push: | ||||
|         - match: (?=\:) | ||||
|           pop: true | ||||
|         - include: function-header-open-brace | ||||
|         - include: function-header-close-brace-with-arg | ||||
|   function-parameter: | ||||
|     - match: (\.\.\.) | ||||
|       push: | ||||
|         - meta_scope: keyword.operator.nix | ||||
|         - match: '(,|(?=\}))' | ||||
|           pop: true | ||||
|         - include: others | ||||
|     - match: '\b[a-zA-Z\_][a-zA-Z0-9\_\''\-]*' | ||||
|       captures: | ||||
|         0: variable.parameter.function.1.nix | ||||
|       push: | ||||
|         - match: '(,|(?=\}))' | ||||
|           captures: | ||||
|             0: keyword.operator.nix | ||||
|           pop: true | ||||
|         - include: whitespace | ||||
|         - include: comment | ||||
|         - include: function-parameter-default | ||||
|         - include: expression | ||||
|     - include: others | ||||
|   function-parameter-default: | ||||
|     - match: \? | ||||
|       captures: | ||||
|         0: keyword.operator.nix | ||||
|       push: | ||||
|         - match: "(?=[,}])" | ||||
|           pop: true | ||||
|         - include: expression | ||||
|   if: | ||||
|     - match: (?=\bif\b) | ||||
|       push: | ||||
|         - match: '(?=([\])};,]|\b(else|then)\b))' | ||||
|           pop: true | ||||
|         - match: \bif\b | ||||
|           captures: | ||||
|             0: keyword.other.nix | ||||
|           push: | ||||
|             - match: \bth(?=en\b) | ||||
|               captures: | ||||
|                 0: keyword.other.nix | ||||
|               pop: true | ||||
|             - include: expression | ||||
|         - match: (?<=th)en\b | ||||
|           captures: | ||||
|             0: keyword.other.nix | ||||
|           push: | ||||
|             - match: \bel(?=se\b) | ||||
|               captures: | ||||
|                 0: keyword.other.nix | ||||
|               pop: true | ||||
|             - include: expression | ||||
|         - match: (?<=el)se\b | ||||
|           captures: | ||||
|             0: keyword.other.nix | ||||
|           push: | ||||
|             - match: '(?=([\])};,]|\b(else|then)\b))' | ||||
|               captures: | ||||
|                 0: keyword.other.nix | ||||
|               pop: true | ||||
|             - include: expression | ||||
|   illegal: | ||||
|     - match: . | ||||
|       scope: invalid.illegal | ||||
|   interpolation: | ||||
|     - match: '\$\{' | ||||
|       captures: | ||||
|         0: punctuation.section.embedded.begin.nix | ||||
|       push: | ||||
|         - meta_scope: markup.italic | ||||
|         - match: '\}' | ||||
|           captures: | ||||
|             0: punctuation.section.embedded.end.nix | ||||
|           pop: true | ||||
|         - include: expression | ||||
|   let: | ||||
|     - match: (?=\blet\b) | ||||
|       push: | ||||
|         - match: '(?=([\])};,]|\b(else|then)\b))' | ||||
|           pop: true | ||||
|         - match: \blet\b | ||||
|           captures: | ||||
|             0: keyword.other.nix | ||||
|           push: | ||||
|             - match: '(?=([\])};,]|\b(in|else|then)\b))' | ||||
|               pop: true | ||||
|             - match: '(?=\{)' | ||||
|               push: | ||||
|                 - match: '(?=([\])};,]|\b(else|then)\b))' | ||||
|                   pop: true | ||||
|                 - match: '\{' | ||||
|                   push: | ||||
|                     - match: '\}' | ||||
|                       pop: true | ||||
|                     - include: attrset-contents | ||||
|                 - match: '(^|(?<=\}))' | ||||
|                   push: | ||||
|                     - match: '(?=([\])};,]|\b(else|then)\b))' | ||||
|                       pop: true | ||||
|                     - include: expression-cont | ||||
|                 - include: others | ||||
|             - include: attrset-contents | ||||
|             - include: others | ||||
|         - match: \bin\b | ||||
|           captures: | ||||
|             0: keyword.other.nix | ||||
|           push: | ||||
|             - match: '(?=([\])};,]|\b(else|then)\b))' | ||||
|               pop: true | ||||
|             - include: expression | ||||
|   list: | ||||
|     - match: '\[' | ||||
|       captures: | ||||
|         0: punctuation.definition.list.nix | ||||
|       push: | ||||
|         - match: '\]' | ||||
|           captures: | ||||
|             0: punctuation.definition.list.nix | ||||
|           pop: true | ||||
|         - include: expression | ||||
|   list-and-cont: | ||||
|     - match: '(?=\[)' | ||||
|       push: | ||||
|         - match: '(?=([\])};,]|\b(else|then)\b))' | ||||
|           pop: true | ||||
|         - include: list | ||||
|         - include: expression-cont | ||||
|   operator-unary: | ||||
|     - match: (!|-) | ||||
|       scope: keyword.operator.unary.nix | ||||
|   others: | ||||
|     - include: whitespace | ||||
|     - include: comment | ||||
|     - include: illegal | ||||
|   parameter-name: | ||||
|     - match: '\b[a-zA-Z\_][a-zA-Z0-9\_\''\-]*' | ||||
|       captures: | ||||
|         0: variable.parameter.name.nix | ||||
|   parameter-name-and-cont: | ||||
|     - match: '\b[a-zA-Z\_][a-zA-Z0-9\_\''\-]*' | ||||
|       captures: | ||||
|         0: variable.parameter.name.nix | ||||
|       push: | ||||
|         - match: '(?=([\])};,]|\b(else|then)\b))' | ||||
|           pop: true | ||||
|         - include: expression-cont | ||||
|   parens: | ||||
|     - match: \( | ||||
|       captures: | ||||
|         0: punctuation.definition.expression.nix | ||||
|       push: | ||||
|         - match: \) | ||||
|           captures: | ||||
|             0: punctuation.definition.expression.nix | ||||
|           pop: true | ||||
|         - include: expression | ||||
|   parens-and-cont: | ||||
|     - match: (?=\() | ||||
|       push: | ||||
|         - match: '(?=([\])};,]|\b(else|then)\b))' | ||||
|           pop: true | ||||
|         - include: parens | ||||
|         - include: expression-cont | ||||
|   string: | ||||
|     - match: (?=\'\') | ||||
|       push: | ||||
|         - match: '(?=([\])};,]|\b(else|then)\b))' | ||||
|           pop: true | ||||
|         - match: \'\' | ||||
|           captures: | ||||
|             0: punctuation.definition.string.other.start.nix | ||||
|           push: | ||||
|             - meta_scope: string.quoted.other.nix | ||||
|             - match: \'\'(?!\$|\'|\\.) | ||||
|               captures: | ||||
|                 0: punctuation.definition.string.other.end.nix | ||||
|               pop: true | ||||
|             - match: \'\'(\$|\'|\\.) | ||||
|               scope: constant.character.escape.nix | ||||
|             - include: interpolation | ||||
|         - include: expression-cont | ||||
|     - match: (?=\") | ||||
|       push: | ||||
|         - match: '(?=([\])};,]|\b(else|then)\b))' | ||||
|           pop: true | ||||
|         - include: string-quoted | ||||
|         - include: expression-cont | ||||
|     - match: '([a-zA-Z0-9\.\_\-\+]*(\/[a-zA-Z0-9\.\_\-\+]+)+)' | ||||
|       captures: | ||||
|         0: string.unquoted.path.nix | ||||
|       push: | ||||
|         - match: '(?=([\])};,]|\b(else|then)\b))' | ||||
|           pop: true | ||||
|         - include: expression-cont | ||||
|     - match: '(\<[a-zA-Z0-9\.\_\-\+]+(\/[a-zA-Z0-9\.\_\-\+]+)*\>)' | ||||
|       captures: | ||||
|         0: string.unquoted.spath.nix | ||||
|       push: | ||||
|         - match: '(?=([\])};,]|\b(else|then)\b))' | ||||
|           pop: true | ||||
|         - include: expression-cont | ||||
|     - match: '([a-zA-Z][a-zA-Z0-9\+\-\.]*\:[a-zA-Z0-9\%\/\?\:\@\&\=\+\$\,\-\_\.\!\~\*\'']+)' | ||||
|       captures: | ||||
|         0: string.unquoted.url.nix | ||||
|       push: | ||||
|         - match: '(?=([\])};,]|\b(else|then)\b))' | ||||
|           pop: true | ||||
|         - include: expression-cont | ||||
|   string-quoted: | ||||
|     - match: \" | ||||
|       captures: | ||||
|         0: punctuation.definition.string.double.start.nix | ||||
|       push: | ||||
|         - meta_scope: string.quoted.double.nix | ||||
|         - match: \" | ||||
|           captures: | ||||
|             0: punctuation.definition.string.double.end.nix | ||||
|           pop: true | ||||
|         - match: \\. | ||||
|           scope: constant.character.escape.nix | ||||
|         - include: interpolation | ||||
|   whitespace: | ||||
|     - match: \s+ | ||||
|   with-assert: | ||||
|     - match: '(?<![\w''-])(with|assert)(?![\w''-])' | ||||
|       captures: | ||||
|         0: keyword.other.nix | ||||
|       push: | ||||
|         - match: \; | ||||
|           pop: true | ||||
|         - include: expression | ||||
		Reference in New Issue
	
	Block a user