--- 
name: MacPorts Portfile
fileTypes: []

scopeName: source.tcl.macports
repository: 
  escape: 
    name: constant.character.escape.tcl
    match: \\(\d{1,3}|x[a-fA-F0-9]+|u[a-fA-F0-9]{1,4}|.|\n)
    comment: imported from Tcl grammar
  bare-string: 
    endCaptures: 
      "1": 
        name: invalid.illegal.tcl
    begin: (?:^|(?<=\s))"
    end: "\"(\\S*)"
    patterns: 
    - include: "#escape"
    - include: "#variable"
    comment: imported from Tcl grammar
  braces: 
    endCaptures: 
      "1": 
        name: invalid.illegal.tcl
    begin: (?:^|(?<=\s))\{
    end: \}(\S*)
    patterns: 
    - name: constant.character.escape.tcl
      match: \\[{}\n]
    - include: "#inner-braces"
    comment: imported from Tcl grammar
  inner-braces: 
    begin: \{
    end: \}
    patterns: 
    - name: constant.character.escape.tcl
      match: \\[{}\n]
    - include: "#inner-braces"
    comment: imported from Tcl grammar
  variable: 
    name: variable.other.tcl
    captures: 
      "1": 
        name: punctuation.definition.variable.tcl
    match: (\$)([a-zA-Z0-9_:]+(\([^\)]+\))?|\{[^\}]*\})
    comment: imported from Tcl grammar
  string: 
    name: string.quoted.double.tcl
    begin: (?:^|(?<=\s))(?=")
    applyEndPatternLast: 1
    end: ""
    patterns: 
    - include: "#bare-string"
    comment: imported from Tcl grammar
  embedded: 
    name: source.tcl.embedded
    endCaptures: 
      "0": 
        name: punctuation.section.embedded.end.tcl
    begin: \[
    beginCaptures: 
      "0": 
        name: punctuation.section.embedded.begin.tcl
    end: \]
    patterns: 
    - include: source.tcl.macports
    comment: imported from Tcl grammar
uuid: 33EC56FE-2BD4-4B73-A6CD-73395F4E5E58
foldingStartMarker: \{\s*$
patterns: 
- begin: ^\s*(PortGroup)\s+ruby(?!\S)
  beginCaptures: 
    "1": 
      name: keyword.other.tcl.macports
  end: $.^
  patterns: 
  - include: $base
  - name: keyword.other.tcl.macports
    match: ^\s*ruby\.setup(?!\S)
  comment: special case for ruby PortGroup
- begin: ^\s*(PortGroup)\s+perl5(?!\S)
  beginCaptures: 
    "1": 
      name: keyword.other.tcl.macports
  end: $.^
  patterns: 
  - include: $base
  - name: keyword.other.tcl.macports
    match: ^\s*perl5\.setup(?!\S)
  comment: special case for the perl5 PortGroup
- captures: 
    "1": 
      name: keyword.other.tcl.macports
  match: ^\s*(PortSystem|PortGroup)(?!\S)
  comment: Base commands
- captures: 
    "1": 
      name: keyword.other.tcl.macports
  match: ^\s*(use_(?:configure|build|automake|autoconf|xmkmf|libtool|destroot|extract|cvs|svn|patch|test)|(?:configure|build|automake|autoconf|xmkmf|libtool|destroot|extract|cvs|svn|patch|test)\.(?:dir|(?:pre_|post_)?args|env|type|cmd)(?:-(?:delete|append))?)(?!\S)
  comment: Procs defined with the `commands` keyword (ignore use_option-{delete,append} as it is useless)
- captures: 
    "1": 
      name: keyword.other.tcl.macports
  match: ^\s*((?:(?:pre|post)-)?(?:activate|build|checksum|clean|configure|destroot|distcheck|extract|fetch|install|livecheck|main|mirror|patch|pkg|mpkg|submit|test))(?!\S)
  comment: Procs defined with the `target_provides` keyword
- captures: 
    "1": 
      name: keyword.other.tcl.macports
  match: ^\s*((?:build\.target|categories|checksum\.skip|checksums|cvs\.(?:date|module|password|root|tag)|default_variants|depends_(?:build|lib|run)|destroot\.(?:clean|destdir|keepdirs|target|umask)|dist_subdir|distcheck\.check|distfiles|distname|distpath|epoch|extract\.(?:only|suffix)|fetch\.(?:password|type|use_epsv|user)|filesdir|gnustep\.domain|homepage|install\.(?:group|user)|libpath|livecheck\.(?:check|md5|name|distname|regex|url|version)|maintainers|(?:master|patch)_sites(?:\.mirror_subdir)?|name|os\.(?:arch|endian|platform|version)|patchfiles|platforms|portdbpath|portname|prefix|revision|sources_conf|startupitem\.(?:create|executable|init|logevents|logfile|name|pidfile|requires|restart|start|stop|type)|svn\.(?:tag|url)|test\.(?:run|target)|use_bzip2|use_zip|version|workdir|worksrcdir|xcode\.(?:build\.settings|configuration|destroot\.(?:path|settings|type)|project|target)|zope\.need_subdir)(?:-(?:delete|append))?)(?!\S)
  comment: Procs defined with the `options` keyword
- begin: ^\s*((?:long_)?description)(?!\S)
  contentName: string.unquoted.tcl.macports
  beginCaptures: 
    "1": 
      name: keyword.other.tcl.macports
  end: "[\\n;]"
  patterns: 
  - include: "#escape"
  - include: "#string"
  - include: "#braces"
  - include: "#embedded"
  - include: "#variable"
  comment: special-case description and long_description for backslash-newline escapes and string scoping
- name: meta.variant.tcl.macports
  captures: 
    "1": 
      name: keyword.other.variant.tcl.macports
  begin: ^(variant)(?!\S)
  end: \n
  patterns: 
  - name: keyword.other.variant.tcl.macports
    match: (?<=\s)(?:provides|requires|conflicts)(?!\S)
  - name: entity.name.function.variant.tcl.macports
    match: (?<=\s)([\w-]+)
  - endCaptures: 
      "1": 
        name: punctuation.terminator.variant.tcl.macports
    begin: (\{)
    beginCaptures: 
      "1": 
        name: punctuation.section.variant.tcl.macports
    end: (\})
    patterns: 
    - include: source.tcl.macports
- name: meta.variant.platform.tcl.macports
  endCaptures: 
    "1": 
      name: punctuation.terminator.variant.platform.tcl.macports
  begin: ^(platform)(?:\s+(\S+))?(?:\s+(\S+))?(?:\s+(\S+))?\s+(\{)
  beginCaptures: 
    "1": 
      name: keyword.other.variant.platform.tcl.macports
    "2": 
      name: entity.name.function.variant.platform.tcl.macports
    "5": 
      name: punctuation.section.variant.platform.tcl.macports
  end: (\})
  patterns: 
  - include: source.tcl.macports
- name: keyword.other.tcl.macports
  match: (?<=^|[\[{;])\s*(adduser|addgroup|dirSize|binaryInPath|archiveTypeIsSupported|variant_isset|xinstall|system|reinplace|flock|readdir|strsed|mkstemp|mktemp|existsuser|existsgroup|nextuid|nextgid|md5|find|filemap|rpm-vercomp|rmd160|sha1|compat|umask|sudo|mkfifo|unixsocketpair|mkchannelfromfd|pipe|curl|readline|rl_history|getuid|geteuid|setuid|seteuid|name_to_uid|uid_to_name|ldelete|delete|include)\b
- include: source.tcl
foldingStopMarker: ^\s*\}
