--- name: Erlang fileTypes: - erl - hrl scopeName: source.erlang repository: macro-usage: name: meta.macro-usage.erlang captures: "1": name: keyword.operator.macro.erlang "2": name: entity.name.function.macro.erlang match: (\?\??)\s*+([a-zA-Z\d@_]++) list: name: meta.structure.list.erlang endCaptures: "1": name: punctuation.definition.list.end.erlang begin: (\[) beginCaptures: "1": name: punctuation.definition.list.begin.erlang end: (\]) patterns: - name: punctuation.separator.list.erlang match: \||\|\||, - include: "#everything-else" import-export-directive: patterns: - name: meta.directive.import.erlang endCaptures: "1": name: punctuation.definition.parameters.end.erlang "2": name: punctuation.section.directive.end.erlang begin: ^\s*+(-)\s*+(import)\s*+(\()\s*+([a-z][a-zA-Z\d@_]*+)\s*+(,) beginCaptures: "1": name: punctuation.section.directive.begin.erlang "2": name: keyword.control.directive.import.erlang "3": name: punctuation.definition.parameters.begin.erlang "4": name: entity.name.type.class.module.erlang "5": name: punctuation.separator.parameters.erlang end: (\))\s*+(\.) patterns: - include: "#internal-function-list" - name: meta.directive.export.erlang endCaptures: "1": name: punctuation.definition.parameters.end.erlang "2": name: punctuation.section.directive.end.erlang begin: ^\s*+(-)\s*+(export)\s*+(\() beginCaptures: "1": name: punctuation.section.directive.begin.erlang "2": name: keyword.control.directive.export.erlang "3": name: punctuation.definition.parameters.begin.erlang end: (\))\s*+(\.) patterns: - include: "#internal-function-list" symbolic-operator: name: keyword.operator.symbolic.erlang match: \+\+|\+|--|-|\*|/=|/|=/=|=:=|==|=<|=|<-|<|>=|>|! number: begin: (?=\d) end: (?!\d) patterns: - name: constant.numeric.float.erlang captures: "1": name: punctuation.separator.integer-float.erlang "3": name: punctuation.separator.float-exponent.erlang match: \d++(\.)\d++(([eE][\+\-])?\d++)? - name: constant.numeric.integer.binary.erlang captures: "1": name: punctuation.separator.base-integer.erlang match: 2(#)[0-1]++ - name: constant.numeric.integer.base-3.erlang captures: "1": name: punctuation.separator.base-integer.erlang match: 3(#)[0-2]++ - name: constant.numeric.integer.base-4.erlang captures: "1": name: punctuation.separator.base-integer.erlang match: 4(#)[0-3]++ - name: constant.numeric.integer.base-5.erlang captures: "1": name: punctuation.separator.base-integer.erlang match: 5(#)[0-4]++ - name: constant.numeric.integer.base-6.erlang captures: "1": name: punctuation.separator.base-integer.erlang match: 6(#)[0-5]++ - name: constant.numeric.integer.base-7.erlang captures: "1": name: punctuation.separator.base-integer.erlang match: 7(#)[0-6]++ - name: constant.numeric.integer.octal.erlang captures: "1": name: punctuation.separator.base-integer.erlang match: 8(#)[0-7]++ - name: constant.numeric.integer.base-9.erlang captures: "1": name: punctuation.separator.base-integer.erlang match: 9(#)[0-8]++ - name: constant.numeric.integer.decimal.erlang captures: "1": name: punctuation.separator.base-integer.erlang match: 10(#)\d++ - name: constant.numeric.integer.base-11.erlang captures: "1": name: punctuation.separator.base-integer.erlang match: 11(#)[\daA]++ - name: constant.numeric.integer.base-12.erlang captures: "1": name: punctuation.separator.base-integer.erlang match: 12(#)[\da-bA-B]++ - name: constant.numeric.integer.base-13.erlang captures: "1": name: punctuation.separator.base-integer.erlang match: 13(#)[\da-cA-C]++ - name: constant.numeric.integer.base-14.erlang captures: "1": name: punctuation.separator.base-integer.erlang match: 14(#)[\da-dA-D]++ - name: constant.numeric.integer.base-15.erlang captures: "1": name: punctuation.separator.base-integer.erlang match: 15(#)[\da-eA-E]++ - name: constant.numeric.integer.hexadecimal.erlang captures: "1": name: punctuation.separator.base-integer.erlang match: 16(#)\h++ - name: constant.numeric.integer.base-17.erlang captures: "1": name: punctuation.separator.base-integer.erlang match: 17(#)[\da-gA-G]++ - name: constant.numeric.integer.base-18.erlang captures: "1": name: punctuation.separator.base-integer.erlang match: 18(#)[\da-hA-H]++ - name: constant.numeric.integer.base-19.erlang captures: "1": name: punctuation.separator.base-integer.erlang match: 19(#)[\da-iA-I]++ - name: constant.numeric.integer.base-20.erlang captures: "1": name: punctuation.separator.base-integer.erlang match: 20(#)[\da-jA-J]++ - name: constant.numeric.integer.base-21.erlang captures: "1": name: punctuation.separator.base-integer.erlang match: 21(#)[\da-kA-K]++ - name: constant.numeric.integer.base-22.erlang captures: "1": name: punctuation.separator.base-integer.erlang match: 22(#)[\da-lA-L]++ - name: constant.numeric.integer.base-23.erlang captures: "1": name: punctuation.separator.base-integer.erlang match: 23(#)[\da-mA-M]++ - name: constant.numeric.integer.base-24.erlang captures: "1": name: punctuation.separator.base-integer.erlang match: 24(#)[\da-nA-N]++ - name: constant.numeric.integer.base-25.erlang captures: "1": name: punctuation.separator.base-integer.erlang match: 25(#)[\da-oA-O]++ - name: constant.numeric.integer.base-26.erlang captures: "1": name: punctuation.separator.base-integer.erlang match: 26(#)[\da-pA-P]++ - name: constant.numeric.integer.base-27.erlang captures: "1": name: punctuation.separator.base-integer.erlang match: 27(#)[\da-qA-Q]++ - name: constant.numeric.integer.base-28.erlang captures: "1": name: punctuation.separator.base-integer.erlang match: 28(#)[\da-rA-R]++ - name: constant.numeric.integer.base-29.erlang captures: "1": name: punctuation.separator.base-integer.erlang match: 29(#)[\da-sA-S]++ - name: constant.numeric.integer.base-30.erlang captures: "1": name: punctuation.separator.base-integer.erlang match: 30(#)[\da-tA-T]++ - name: constant.numeric.integer.base-31.erlang captures: "1": name: punctuation.separator.base-integer.erlang match: 31(#)[\da-uA-U]++ - name: constant.numeric.integer.base-32.erlang captures: "1": name: punctuation.separator.base-integer.erlang match: 32(#)[\da-vA-V]++ - name: constant.numeric.integer.base-33.erlang captures: "1": name: punctuation.separator.base-integer.erlang match: 33(#)[\da-wA-W]++ - name: constant.numeric.integer.base-34.erlang captures: "1": name: punctuation.separator.base-integer.erlang match: 34(#)[\da-xA-X]++ - name: constant.numeric.integer.base-35.erlang captures: "1": name: punctuation.separator.base-integer.erlang match: 35(#)[\da-yA-Y]++ - name: constant.numeric.integer.base-36.erlang captures: "1": name: punctuation.separator.base-integer.erlang match: 36(#)[\da-zA-Z]++ - name: invalid.illegal.integer.erlang match: \d++#[\da-zA-Z]++ - name: constant.numeric.integer.decimal.erlang match: \d++ internal-type-specifiers: begin: (/) beginCaptures: "1": name: punctuation.separator.value-type.erlang end: (?=,|:|>>) patterns: - captures: "1": name: storage.type.erlang "2": name: storage.modifier.signedness.erlang "3": name: storage.modifier.endianness.erlang "4": name: storage.modifier.unit.erlang "5": name: punctuation.separator.type-specifiers.erlang match: (integer|float|binary)|(signed|unsigned)|(big|little|native)|(unit)|(-) character: patterns: - name: constant.character.erlang captures: "1": name: punctuation.definition.character.erlang "2": name: constant.character.escape.erlang "3": name: punctuation.definition.escape.erlang "5": name: punctuation.definition.escape.erlang match: (\$)((\\)([bdefnrstv\\'"]|(\^)[@-_]|[0-7]{1,3})) - name: invalid.illegal.character.erlang match: \$\\\^?.? - name: constant.character.erlang captures: "1": name: punctuation.definition.character.erlang match: (\$)\S - name: invalid.illegal.character.erlang match: \$.? macro-directive: patterns: - name: meta.directive.ifdef.erlang captures: "6": name: punctuation.section.directive.end.erlang "1": name: punctuation.section.directive.begin.erlang "2": name: keyword.control.directive.ifdef.erlang "3": name: punctuation.definition.parameters.begin.erlang "4": name: entity.name.function.macro.erlang "5": name: punctuation.definition.parameters.end.erlang match: ^\s*+(-)\s*+(ifdef)\s*+(\()\s*+([a-zA-z\d@_]++)\s*+(\))\s*+(\.) - name: meta.directive.ifndef.erlang captures: "6": name: punctuation.section.directive.end.erlang "1": name: punctuation.section.directive.begin.erlang "2": name: keyword.control.directive.ifndef.erlang "3": name: punctuation.definition.parameters.begin.erlang "4": name: entity.name.function.macro.erlang "5": name: punctuation.definition.parameters.end.erlang match: ^\s*+(-)\s*+(ifndef)\s*+(\()\s*+([a-zA-z\d@_]++)\s*+(\))\s*+(\.) - name: meta.directive.undef.erlang captures: "6": name: punctuation.section.directive.end.erlang "1": name: punctuation.section.directive.begin.erlang "2": name: keyword.control.directive.undef.erlang "3": name: punctuation.definition.parameters.begin.erlang "4": name: entity.name.function.macro.erlang "5": name: punctuation.definition.parameters.end.erlang match: ^\s*+(-)\s*+(undef)\s*+(\()\s*+([a-zA-z\d@_]++)\s*+(\))\s*+(\.) internal-record-body: name: meta.structure.record.erlang begin: (\{) beginCaptures: "1": name: punctuation.definition.class.record.begin.erlang end: (?=\}) patterns: - endCaptures: "1": name: punctuation.separator.class.record.erlang begin: (([a-z][a-zA-Z\d@_]*+)|(_))\s*+(=) beginCaptures: "2": name: variable.other.field.erlang "3": name: variable.language.omitted.field.erlang "4": name: keyword.operator.assignment.erlang end: (,)|(?=\}) patterns: - include: "#everything-else" - captures: "1": name: variable.other.field.erlang "2": name: punctuation.separator.class.record.erlang match: ([a-z][a-zA-Z\d@_]*+)\s*+(,)? - include: "#everything-else" internal-function-list: name: meta.structure.list.function.erlang endCaptures: "1": name: punctuation.definition.list.end.erlang begin: (\[) beginCaptures: "1": name: punctuation.definition.list.begin.erlang end: (\]) patterns: - endCaptures: "1": name: punctuation.separator.list.erlang begin: ([a-z][a-zA-Z\d@_]*+)\s*+(/) beginCaptures: "1": name: entity.name.function.erlang "2": name: punctuation.separator.function-arity.erlang end: (,)|(?=\]) patterns: - include: "#everything-else" - include: "#everything-else" internal-expression-punctuation: captures: "1": name: punctuation.separator.clause-head-body.erlang "2": name: punctuation.separator.clauses.erlang "3": name: punctuation.separator.expressions.erlang match: (->)|(;)|(,) directive: patterns: - name: meta.directive.erlang endCaptures: "1": name: punctuation.definition.parameters.end.erlang "2": name: punctuation.section.directive.end.erlang begin: ^\s*+(-)\s*+([a-z][a-zA-Z\d@_]*+)\s*+(\() beginCaptures: "1": name: punctuation.section.directive.begin.erlang "2": name: keyword.control.directive.erlang "3": name: punctuation.definition.parameters.begin.erlang end: (\))\s*+(\.) patterns: - include: "#everything-else" - name: meta.directive.erlang captures: "1": name: punctuation.section.directive.begin.erlang "2": name: keyword.control.directive.erlang "3": name: punctuation.section.directive.end.erlang match: ^\s*+(-)\s*+([a-z][a-zA-Z\d@_]*+)\s*+(\.) binary: name: meta.structure.binary.erlang endCaptures: "1": name: punctuation.definition.binary.end.erlang begin: (<<) beginCaptures: "1": name: punctuation.definition.binary.begin.erlang end: (>>) patterns: - captures: "1": name: punctuation.separator.binary.erlang "2": name: punctuation.separator.value-size.erlang match: (,)|(:) - include: "#internal-type-specifiers" - include: "#everything-else" function: name: meta.function.erlang endCaptures: "1": name: punctuation.terminator.function.erlang begin: ^\s*+([a-z][a-zA-Z\d@_]*+)\s*+(?=\() beginCaptures: "1": name: entity.name.function.definition.erlang end: (\.) patterns: - endCaptures: "1": name: punctuation.separator.clauses.erlang begin: (?=\() end: (;)|(?=\.) patterns: - include: "#internal-function-parts" - captures: "1": name: entity.name.function.erlang match: ^\s*+([a-z][a-zA-Z\d@_]*+)\s*+(?=\() - include: "#everything-else" expression: patterns: - name: meta.expression.if.erlang endCaptures: "1": name: keyword.control.end.erlang begin: \b(if)\b beginCaptures: "1": name: keyword.control.if.erlang end: \b(end)\b patterns: - include: "#internal-expression-punctuation" - include: "#everything-else" - name: meta.expression.case.erlang endCaptures: "1": name: keyword.control.end.erlang begin: \b(case)\b beginCaptures: "1": name: keyword.control.case.erlang end: \b(end)\b patterns: - include: "#internal-expression-punctuation" - include: "#everything-else" - name: meta.expression.receive.erlang endCaptures: "1": name: keyword.control.end.erlang begin: \b(receive)\b beginCaptures: "1": name: keyword.control.receive.erlang end: \b(end)\b patterns: - include: "#internal-expression-punctuation" - include: "#everything-else" - captures: "6": name: punctuation.separator.function-arity.erlang "1": name: keyword.control.fun.erlang "3": name: entity.name.type.class.module.erlang "4": name: punctuation.separator.module-function.erlang "5": name: entity.name.function.erlang match: \b(fun)\s*+(([a-z][a-zA-Z\d@_]*+)\s*+(:)\s*+)?([a-z][a-zA-Z\d@_]*+)\s*(/) - name: meta.expression.fun.erlang endCaptures: "1": name: keyword.control.end.erlang begin: \b(fun)\b beginCaptures: "1": name: keyword.control.fun.erlang end: \b(end)\b patterns: - endCaptures: "1": name: punctuation.separator.clauses.erlang begin: (?=\() end: (;)|(?=\bend\b) patterns: - include: "#internal-function-parts" - include: "#everything-else" - name: meta.expression.try.erlang endCaptures: "1": name: keyword.control.end.erlang begin: \b(try)\b beginCaptures: "1": name: keyword.control.try.erlang end: \b(end)\b patterns: - include: "#internal-expression-punctuation" - include: "#everything-else" - name: meta.expression.begin.erlang endCaptures: "1": name: keyword.control.end.erlang begin: \b(begin)\b beginCaptures: "1": name: keyword.control.begin.erlang end: \b(end)\b patterns: - include: "#internal-expression-punctuation" - include: "#everything-else" - name: meta.expression.query.erlang endCaptures: "1": name: keyword.control.end.erlang begin: \b(query)\b beginCaptures: "1": name: keyword.control.query.erlang end: \b(end)\b patterns: - include: "#everything-else" module-directive: name: meta.directive.module.erlang captures: "6": name: punctuation.section.directive.end.erlang "1": name: punctuation.section.directive.begin.erlang "2": name: keyword.control.directive.module.erlang "3": name: punctuation.definition.parameters.begin.erlang "4": name: entity.name.type.class.module.definition.erlang "5": name: punctuation.definition.parameters.end.erlang match: ^\s*+(-)\s*+(module)\s*+(\()\s*+([a-z][a-zA-Z\d@_]*+)\s*+(\))\s*+(\.) define-directive: patterns: - name: meta.directive.define.erlang endCaptures: "1": name: punctuation.definition.parameters.end.erlang "2": name: punctuation.section.directive.end.erlang begin: ^\s*+(-)\s*+(define)\s*+(\()\s*+([a-zA-Z\d@_]++)\s*+(,) beginCaptures: "1": name: punctuation.section.directive.begin.erlang "2": name: keyword.control.directive.define.erlang "3": name: punctuation.definition.parameters.begin.erlang "4": name: entity.name.function.macro.definition.erlang "5": name: punctuation.separator.parameters.erlang end: (\))\s*+(\.) patterns: - include: "#everything-else" - name: meta.directive.define.erlang endCaptures: "1": name: punctuation.definition.parameters.end.erlang "2": name: punctuation.section.directive.end.erlang begin: (?=^\s*+-\s*+define\s*+\(\s*+[a-zA-Z\d@_]++\s*+\() end: (\))\s*+(\.) patterns: - endCaptures: "1": name: punctuation.definition.parameters.end.erlang "2": name: punctuation.separator.parameters.erlang begin: ^\s*+(-)\s*+(define)\s*+(\()\s*+([a-zA-Z\d@_]++)\s*+(\() beginCaptures: "1": name: punctuation.section.directive.begin.erlang "2": name: keyword.control.directive.define.erlang "3": name: punctuation.definition.parameters.begin.erlang "4": name: entity.name.function.macro.definition.erlang "5": name: punctuation.definition.parameters.begin.erlang end: (\))\s*(,) patterns: - name: punctuation.separator.parameters.erlang match: "," - include: "#everything-else" - name: punctuation.separator.define.erlang match: \|\||\||:|;|,|\.|-> - include: "#everything-else" tuple: name: meta.structure.tuple.erlang endCaptures: "1": name: punctuation.definition.tuple.end.erlang begin: (\{) beginCaptures: "1": name: punctuation.definition.tuple.begin.erlang end: (\}) patterns: - name: punctuation.separator.tuple.erlang match: "," - include: "#everything-else" textual-operator: name: keyword.operator.textual.erlang match: \b(andalso|band|and|bxor|xor|bor|orelse|or|bnot|not|bsl|bsr|div|rem)\b record-directive: name: meta.directive.record.erlang endCaptures: "1": name: meta.structure.record.erlang "2": name: punctuation.definition.class.record.end.erlang "3": name: punctuation.definition.parameters.end.erlang "4": name: punctuation.section.directive.end.erlang begin: ^\s*+(-)\s*+(record)\s*+(\()\s*+([a-z][a-zA-Z\d@_]*+)\s*+(,) beginCaptures: "1": name: punctuation.section.directive.begin.erlang "2": name: keyword.control.directive.import.erlang "3": name: punctuation.definition.parameters.begin.erlang "4": name: entity.name.type.class.record.definition.erlang "5": name: punctuation.separator.parameters.erlang end: ((\}))\s*+(\))\s*+(\.) patterns: - include: "#internal-record-body" function-call: name: meta.function-call.erlang endCaptures: "1": name: punctuation.definition.parameters.end.erlang begin: (?=[a-z][a-zA-Z\d@_]*+\s*+(\(|:\s*+[a-z][a-zA-Z\d@_]*+\s*+\()) end: (\)) patterns: - begin: ((erlang)\s*+(:)\s*+)?(is_atom|is_binary|is_constant|is_float|is_function|is_integer|is_list|is_number|is_pid|is_port|is_reference|is_tuple|is_record|abs|element|hd|length|node|round|self|size|tl|trunc)\s*+(\() beginCaptures: "2": name: entity.name.type.class.module.erlang "3": name: punctuation.separator.module-function.erlang "4": name: entity.name.function.guard.erlang "5": name: punctuation.definition.parameters.begin.erlang end: (?=\)) patterns: - name: punctuation.separator.parameters.erlang match: "," - include: "#everything-else" - begin: (([a-z][a-zA-Z\d@_]*+)\s*+(:)\s*+)?([a-z][a-zA-Z\d@_]*+)\s*+(\() beginCaptures: "2": name: entity.name.type.class.module.erlang "3": name: punctuation.separator.module-function.erlang "4": name: entity.name.function.erlang "5": name: punctuation.definition.parameters.begin.erlang end: (?=\)) patterns: - name: punctuation.separator.parameters.erlang match: "," - include: "#everything-else" everything-else: patterns: - include: "#comment" - include: "#record-usage" - include: "#macro-usage" - include: "#expression" - include: "#keyword" - include: "#textual-operator" - include: "#function-call" - include: "#tuple" - include: "#list" - include: "#binary" - include: "#parenthesized-expression" - include: "#character" - include: "#number" - include: "#atom" - include: "#string" - include: "#symbolic-operator" - include: "#variable" record-usage: patterns: - name: meta.record-usage.erlang captures: "1": name: keyword.operator.record.erlang "2": name: entity.name.type.class.record.erlang "3": name: punctuation.separator.record-field.erlang "4": name: variable.other.field.erlang match: (#)\s*+([a-z][a-zA-Z\d@_]*+)\s*+(\.)\s*+([a-z][a-zA-Z\d@_]*+) - name: meta.record-usage.erlang endCaptures: "1": name: meta.structure.record.erlang "2": name: punctuation.definition.class.record.end.erlang begin: (#)\s*+([a-z][a-zA-Z\d@_]*+) beginCaptures: "1": name: keyword.operator.record.erlang "2": name: entity.name.type.class.record.erlang end: ((\})) patterns: - include: "#internal-record-body" parenthesized-expression: name: meta.expression.parenthesized endCaptures: "1": name: punctuation.section.expression.end.erlang begin: (\() beginCaptures: "1": name: punctuation.section.expression.begin.erlang end: (\)) patterns: - include: "#everything-else" keyword: name: keyword.control.erlang match: \b(after|begin|case|catch|cond|end|fun|if|let|of|query|try|receive|when)\b internal-function-parts: patterns: - endCaptures: "1": name: punctuation.separator.clause-head-body.erlang begin: (?=\() end: (->) patterns: - endCaptures: "1": name: punctuation.definition.parameters.end.erlang begin: (\() beginCaptures: "1": name: punctuation.definition.parameters.begin.erlang end: (\)) patterns: - name: punctuation.separator.parameters.erlang match: "," - include: "#everything-else" - name: punctuation.separator.guards.erlang match: ,|; - include: "#everything-else" - name: punctuation.separator.expressions.erlang match: "," - include: "#everything-else" comment: name: comment.line.erlang begin: (%) beginCaptures: "1": name: punctuation.definition.comment.erlang end: $\n? variable: captures: "1": name: variable.other.erlang "2": name: variable.language.omitted.erlang match: (_[a-zA-Z\d@_]++|[A-Z][a-zA-Z\d@_]*+)|(_) string: name: string.quoted.double.erlang endCaptures: "1": name: punctuation.definition.string.end.erlang begin: (") beginCaptures: "1": name: punctuation.definition.string.begin.erlang end: (") patterns: - name: constant.character.escape.erlang captures: "1": name: punctuation.definition.escape.erlang "3": name: punctuation.definition.escape.erlang match: (\\)([bdefnrstv\\'"]|(\^)[@-_]|[0-7]{1,3}) - name: invalid.illegal.string.erlang match: \\\^?.? - name: constant.other.placeholder.erlang captures: "6": name: punctuation.separator.placeholder-parts.erlang "12": name: punctuation.separator.placeholder-parts.erlang "8": name: punctuation.separator.placeholder-parts.erlang "1": name: punctuation.definition.placeholder.erlang "3": name: punctuation.separator.placeholder-parts.erlang "4": name: punctuation.separator.placeholder-parts.erlang "10": name: punctuation.separator.placeholder-parts.erlang match: (~)((\-)?\d++|(\*))?((\.)(\d++|(\*)))?((\.)((\*)|.))?[~cfegswpWPBX#bx\+ni] - name: constant.other.placeholder.erlang captures: "1": name: punctuation.definition.placeholder.erlang "2": name: punctuation.separator.placeholder-parts.erlang match: (~)(\*)?(\d++)?[~du\-#fsacl] - name: invalid.illegal.string.erlang match: ~.? atom: patterns: - name: constant.other.symbol.quoted.single.erlang endCaptures: "1": name: punctuation.definition.symbol.end.erlang begin: (') beginCaptures: "1": name: punctuation.definition.symbol.begin.erlang end: (') patterns: - name: constant.other.symbol.escape.erlang captures: "1": name: punctuation.definition.escape.erlang "3": name: punctuation.definition.escape.erlang match: (\\)([bdefnrstv\\'"]|(\^)[@-_]|[0-7]{1,3}) - name: invalid.illegal.atom.erlang match: \\\^?.? - name: constant.other.symbol.unquoted.erlang match: "[a-z][a-zA-Z\\d@_]*+" uuid: 58EA597D-5158-4BF7-9FB2-B05135D1E166 patterns: - include: "#module-directive" - include: "#import-export-directive" - include: "#record-directive" - include: "#define-directive" - include: "#macro-directive" - include: "#directive" - include: "#function" - include: "#everything-else" keyEquivalent: ^~E comment: The recognition of function definitions and compiler directives (such as module, record and macro definitions) requires that each of the aforementioned constructs must be the first string inside a line (except for whitespace). Also, the function/module/record/macro names must be given unquoted. -- desp