summaryrefslogtreecommitdiffstats
path: root/assets/syntaxes/02_Extra/Requirementstxt.sublime-syntax
diff options
context:
space:
mode:
Diffstat (limited to 'assets/syntaxes/02_Extra/Requirementstxt.sublime-syntax')
-rw-r--r--assets/syntaxes/02_Extra/Requirementstxt.sublime-syntax120
1 files changed, 120 insertions, 0 deletions
diff --git a/assets/syntaxes/02_Extra/Requirementstxt.sublime-syntax b/assets/syntaxes/02_Extra/Requirementstxt.sublime-syntax
new file mode 100644
index 00000000..2e51497d
--- /dev/null
+++ b/assets/syntaxes/02_Extra/Requirementstxt.sublime-syntax
@@ -0,0 +1,120 @@
+%YAML 1.2
+---
+# http://www.sublimetext.com/docs/syntax.html
+name: Requirements.txt
+scope: source.requirements-txt
+# https://pip.pypa.io/en/stable/reference/requirements-file-format/
+# https://github.com/raimon49/requirements.txt.vim/blob/f246bd10155fbc3b1a9e2fff6c95b21521b09116/ftdetect/requirements.vim
+file_extensions:
+ - requirements.txt
+ - requirements.in
+ - pip
+# https://github.com/sublimehq/Packages/pull/2760/files
+first_line_match: |-
+ (?xi:
+ ^ \#! .* \bpip # shebang
+ | ^ \s* \# .*? -\*- .*? \bpip-requirements\b .*? -\*- # editorconfig
+ | ^ \s* \# (vim?|ex): .*? \brequirements\b # modeline
+ )
+# pip install -r
+# pip-compile
+
+variables:
+ operator: '===?|<=?|>=?|~=|!='
+
+contexts:
+ main:
+ - match: '(?i)\d+[\da-z\-_\.\*]*'
+ scope: constant.other.version-control.requirements-txt
+ - match: '(?i)^\[?--?[\da-z\-]*\]?'
+ scope: entity.name.function.option.requirements-txt
+ - match: '{{operator}}'
+ scope: keyword.operator.logical.requirements-txt
+ - match: '(\[)'
+ captures:
+ 1: punctuation.section.braces.begin.requirements-txt
+ push:
+ - meta_scope: variable.function.extra.requirements-txt
+ - match: ','
+ scope: punctuation.separator.requirements-txt
+ - match: '(\])'
+ captures:
+ 1: punctuation.section.braces.end.requirements-txt
+ pop: true
+ - match: '(git\+?|hg\+|svn\+|bzr\+).*://.\S+'
+ scope: markup.underline.link.versioncontrols.requirements-txt
+ - match: '(@\s)?(https?|ftp|gopher)://?[^\s/$.?#].\S*'
+ scope: markup.underline.link.url.requirements-txt
+ captures:
+ 1: punctuation.definition.keyword.requirements-txt
+ - match: '(?i)^[a-z\d_\-\.]*[a-z\d]'
+ scope: variable.parameter.package-name.requirements-txt
+ - match: '(;)'
+ captures:
+ 1: punctuation.definition.annotation.requirements-txt
+ push:
+ - meta_scope: meta.annotation.requirements-txt
+ # https://pip.pypa.io/en/stable/reference/inspect-report/#example
+ - match: |-
+ (?x:
+ implementation_name
+ | implementation_version
+ | os_name
+ | platform_machine
+ | platform_release
+ | platform_system
+ | platform_version
+ | python_full_version
+ | platform_python_implementation
+ | python_version
+ | sys_platform
+ )
+ scope: variable.language.requirements-txt
+ - match: '{{operator}}'
+ scope: keyword.operator.logical.requirements-txt
+ # https://pip.pypa.io/en/stable/reference/requirement-specifiers/#examples
+ - match: '(")'
+ captures:
+ 1: punctuation.definition.string.begin.double.requirements-txt
+ push:
+ - meta_scope: string.quoted.double.requirements-txt
+ - match: '\\"'
+ scope: constant.character.escape.double.requirements-txt
+ - match: '(")'
+ captures:
+ 1: punctuation.definition.string.end.double.requirements-txt
+ pop: true
+ - match: "(')"
+ captures:
+ 1: punctuation.definition.string.begin.single.requirements-txt
+ push:
+ - meta_scope: string.quoted.single.requirements-txt
+ - match: '\\'''
+ scope: constant.character.escape.single.requirements-txt
+ - match: "(')"
+ captures:
+ 1: punctuation.definition.string.end.single.requirements-txt
+ pop: true
+ - match: '(.(?=#)|$)'
+ pop: true
+ - match: '(\$)(\{)'
+ captures:
+ 1: punctuation.definition.keyword.requirements-txt
+ 2: punctuation.definition.begin.parameter.requirements-txt
+ push:
+ - meta_scope: variable.parameter.requirements-txt
+ - match: '(\})'
+ captures:
+ 1: punctuation.definition.end.parameter.requirements-txt
+ pop: true
+ - match: '(#)'
+ captures:
+ 1: punctuation.definition.comment.requirements-txt
+ push:
+ - meta_scope: comment.line.requirements-txt
+ - match: '(-*-) coding: .* (-*-)'
+ captures:
+ 1: punctuation.definition.begin.pep263.requirements-txt
+ 2: punctuation.definition.end.pep263.requirements-txt
+ - match: '$'
+ pop: true