--- name: Eiffel fileTypes: - e scopeName: source.eiffel repository: number: match: "[0-9]+" variable: match: "[a-zA-Z0-9_]+" uuid: 34672373-DED9-45B8-AF7E-2E4B6C3D6B76 foldingStartMarker: (class|once|do|external) patterns: - name: comment.line.double-dash.eiffel captures: "1": name: punctuation.definition.comment.eiffel match: (--).*$\n? - name: keyword.control.eiffel match: \b(Indexing|indexing|deferred|expanded|class|inherit|rename|as|export|undefine|redefine|select|all|create|creation|feature|prefix|infix|separate|frozen|obsolete|local|is|unique|do|once|external|alias|require|ensure|invariant|variant|rescue|retry|like|check|if|else|elseif|then|inspect|when|from|loop|until|debug|not|or|and|xor|implies|old|end)\b - name: variable.other.eiffel match: "[a-zA-Z_]+" - name: constant.language.eiffel match: \b(True|true|False|false|Void|void|Result|result)\b - name: meta.features.eiffel begin: feature end: end - name: meta.effective_routine_body.eiffel begin: (do|once) end: (ensure|end) - name: meta.rescue.eiffel begin: rescue end: end - name: string.quoted.double.eiffel endCaptures: "0": name: punctuation.definition.string.end.eiffel begin: "\"" beginCaptures: "0": name: punctuation.definition.string.begin.eiffel end: "\"" patterns: - name: constant.character.escape.eiffel match: \\. - name: constant.numeric.eiffel match: "[0-9]+" - name: storage.modifier.eiffel match: \b(deferred|expanded)\b - name: meta.definition.class.eiffel captures: "1": name: storage.modifier.eiffel begin: |- ^\s* ((?:\b(deferred|expanded)\b\s*)*) # modifier (class)\s+ (\w+)\s* # identifier end: (?=end) patterns: - name: meta.definition.class.extends.java captures: "1": name: storage.modifier.java begin: \b(extends)\b\s+ end: (?={|implements) patterns: - include: "#all-types" - name: meta.definition.class.implements.java captures: "1": name: storage.modifier.java begin: \b(implements)\b\s+ end: (?={|extends) patterns: - include: "#all-types" foldingStopMarker: (ensure|end) keyEquivalent: ^~E