Created
December 21, 2020 17:55
-
-
Save Julian/062e5ae6a6a5edfea23f8c89a7ff5d41 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
%YAML 1.2 | |
--- | |
# http://www.sublimetext.com/docs/3/syntax.html | |
name: Lean | |
file_extensions: | |
- lean | |
scope: source.lean | |
contexts: | |
main: | |
- include: comments | |
- match: '\b(?<!\.)(inductive|coinductive|structure|theorem|axiom|axioms|abbreviation|lemma|definition|def|instance|class|constant)\b\s+(\{[^}]*\})?' | |
captures: | |
1: keyword.other.definitioncommand.lean | |
push: | |
- meta_scope: meta.definitioncommand.lean | |
- match: '(?=\bwith\b|\bextends\b|[:\|\(\[\{⦃<>])' | |
pop: true | |
- include: comments | |
- include: definitionName | |
- match: "," | |
- match: \b(Prop|Type|Sort)\b | |
scope: storage.type.lean | |
- match: '\battribute\b\s*\[[^\]]*\]' | |
scope: storage.modifier.lean | |
- match: '@\[[^\]]*\]' | |
scope: storage.modifier.lean | |
- match: \b(?<!\.)(private|meta|mutual|protected|noncomputable)\b | |
scope: keyword.control.definition.modifier.lean | |
- match: \b(sorry)\b | |
scope: invalid.illegal.lean | |
- match: '#print\s+(def|definition|inductive|instance|structure|axiom|axioms|class)\b' | |
scope: keyword.other.command.lean | |
- match: '#(print|eval|reduce|check|help|exit|find|where)\b' | |
scope: keyword.other.command.lean | |
- match: \b(?<!\.)(import|export|prelude|theory|definition|def|abbreviation|instance|renaming|hiding|exposing|parameter|parameters|begin|constant|constants|lemma|variable|variables|theorem|example|open|axiom|inductive|coinductive|with|structure|universe|universes|alias|precedence|reserve|postfix|prefix|infix|infixl|infixr|notation|end|using|namespace|section|local|set_option|extends|include|omit|class|classes|instances|raw|run_cmd|restate_axiom)(?!\.)\b | |
scope: keyword.other.lean | |
- match: \b(?<!\.)(calc|have|this|match|do|suffices|show|by|in|at|let|forall|fun|exists|assume|from|obtain|haveI|λ)(?!\.)\b | |
scope: keyword.other.lean | |
- match: « | |
push: | |
- meta_content_scope: entity.name.lean | |
- match: » | |
pop: true | |
- match: \b(?<!\.)(if|then|else)\b | |
scope: keyword.control.lean | |
- match: '"' | |
captures: | |
0: punctuation.definition.string.begin.lean | |
push: | |
- meta_scope: string.quoted.double.lean | |
- match: '"' | |
captures: | |
0: punctuation.definition.string.end.lean | |
pop: true | |
- match: '\\[\\"nt'']' | |
scope: constant.character.escape.lean | |
- match: '\\x[0-9A-Fa-f][0-9A-Fa-f]' | |
scope: constant.character.escape.lean | |
- match: '\\u[0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f]' | |
scope: constant.character.escape.lean | |
- match: '''[^\\'']''' | |
scope: string.quoted.single.lean | |
- match: '''(\\(x..|u....|.))''' | |
scope: string.quoted.single.lean | |
captures: | |
1: constant.character.escape.lean | |
- match: '`+[^\[(]\S+' | |
scope: entity.name.lean | |
- match: '\b([0-9]+|0([xX][0-9a-fA-F]+))\b' | |
scope: constant.numeric.lean | |
blockComment: | |
- match: /- | |
push: | |
- meta_scope: comment.block.lean | |
- match: "-/" | |
pop: true | |
- include: scope:source.lean.markdown | |
- include: blockComment | |
comments: | |
- include: dashComment | |
- include: docComment | |
- include: stringBlock | |
- include: modDocComment | |
- include: blockComment | |
dashComment: | |
- match: (--) | |
captures: | |
0: punctuation.definition.comment.lean | |
push: | |
- meta_scope: comment.line.double-dash.lean | |
- match: $ | |
pop: true | |
- include: scope:source.lean.markdown | |
definitionName: | |
- match: '\b[^:«»\(\)\{\}[:space:]=→λ∀?][^:«»\(\)\{\}[:space:]]*' | |
scope: entity.name.function.lean | |
- match: « | |
push: | |
- meta_content_scope: entity.name.function.lean | |
- match: » | |
pop: true | |
docComment: | |
- match: /-- | |
push: | |
- meta_scope: comment.block.documentation.lean | |
- match: "-/" | |
pop: true | |
- include: scope:source.lean.markdown | |
- include: blockComment | |
modDocComment: | |
- match: /-! | |
push: | |
- meta_scope: comment.block.documentation.lean | |
- match: "-/" | |
pop: true | |
- include: scope:source.lean.markdown | |
- include: blockComment | |
stringBlock: | |
- match: /-" | |
push: | |
- meta_scope: comment.block.string.lean | |
- match: '"-/' | |
pop: true | |
- include: scope:source.lean.markdown | |
- include: blockComment |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment