--- 
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
