// This is a TextMate grammar distributed by `starry-night`. // This grammar is developed at // // and licensed `isc`. // See for more info. /** * @import {Grammar} from '@wooorm/starry-night' */ /** @type {Grammar} */ const grammar = { dependencies: ['etc'], extensions: ['.pc.in'], names: ['pkg-config', 'pkgconf'], patterns: [{include: '#main'}], repository: { comments: { patterns: [ { begin: '^\\s*(/\\*)', beginCaptures: { 1: {name: 'punctuation.definition.comment.begin.c.pkgconf'} }, end: '\\*/', endCaptures: { 0: {name: 'punctuation.definition.comment.end.c.pkgconf'} }, name: 'comment.block.c.pkgconf' }, {include: 'etc#comment'} ] }, escape: { patterns: [ { captures: { 1: {name: 'punctuation.definition.escape.backslash.pkgconf'} }, match: '(\\\\)\\\\', name: 'constant.character.escape.backslash.pkgconf' }, { captures: { 1: {name: 'punctuation.definition.escape.backslash.pkgconf'} }, match: '(\\\\)#', name: 'constant.character.escape.comment.pkgconf' }, { captures: { 1: {name: 'punctuation.definition.escape.backslash.pkgconf'} }, match: '(\\\\)[ \\t]', name: 'constant.character.escape.whitespace.pkgconf' }, { begin: '(\\\\)$\\s*', beginCaptures: { 0: {name: 'constant.character.escape.newline.pkgconf'}, 1: {name: 'punctuation.definition.escape.backslash.pkgconf'} }, end: '^[ \\t]*', name: 'meta.line-continuation.pkgconf' } ] }, interpolation: { patterns: [ { match: '\\$\\${?', name: 'constant.character.escape.interpolation.pkgconf' }, { captures: { 1: {name: 'punctuation.definition.variable.shell.begin.pkgconf'}, 2: {name: 'brackethighlighter.curly'}, 3: {name: 'punctuation.definition.variable.shell.end.pkgconf'}, 4: {name: 'brackethighlighter.curly'} }, match: '((\\$\\{))[^}]+((\\}))', name: 'variable.other.bracket.shell.pkgconf' } ] }, keyword: { patterns: [ { begin: '(?i)^(\\s*)(Name|Description)(:)[ \\t]*', beginCaptures: { 1: {name: 'punctuation.whitespace.leading.indent.pkgconf'}, 2: {name: 'variable.keyword.field-name.pkgconf'}, 3: {patterns: [{include: 'etc#kolon'}]} }, contentName: 'string.unquoted.pkgconf', end: '^(?!\\1\\s+\\S)|(?=\\s*#)', name: 'meta.field.${2:/downcase}.pkgconf', patterns: [{include: '#keywordInnards'}] }, { begin: '(?i)^(\\s*)(URL|Source|Licen[cs]e\\.file)(:)[ \\t]*', beginCaptures: { 1: {name: 'punctuation.whitespace.leading.indent.pkgconf'}, 2: {name: 'variable.keyword.field-name.pkgconf'}, 3: {patterns: [{include: 'etc#kolon'}]} }, contentName: 'constant.other.reference.link', end: '^(?!\\1\\s+\\S)|(?=\\s*#)', name: 'meta.field.${2:/downcase}.pkgconf', patterns: [{include: '#keywordInnards'}] }, { begin: '(?i)^(\\s*)(Maintainer)(:)[ \\t]*', beginCaptures: { 1: {name: 'punctuation.whitespace.leading.indent.pkgconf'}, 2: {name: 'variable.keyword.field-name.pkgconf'}, 3: {patterns: [{include: 'etc#kolon'}]} }, end: '^(?!\\1\\s+\\S)|(?=\\s*#)', name: 'meta.field.maintainer.pkgconf', patterns: [ { applyEndPatternLast: true, begin: '\\G([^\\s<>][^<>]*)\\s+(?=<)', beginCaptures: { 1: { name: 'entity.name.author.pkgconf', patterns: [{include: '#escape'}, {include: '#interpolation'}] } }, end: '(?!\\G)', patterns: [ { captures: { 1: { name: 'punctuation.definition.bracket.angle.ascii.begin.pkgconf' }, 2: {name: 'brackethighlighter.angle'}, 3: {patterns: [{include: 'etc#emailUnquoted'}]}, 4: { name: 'punctuation.definition.bracket.angle.ascii.end.pkgconf' }, 5: {name: 'brackethighlighter.angle'} }, match: '\\G((<))([^@>]+@[^@>]+)((>))' }, { captures: { 1: { name: 'punctuation.definition.bracket.angle.ascii.begin.pkgconf' }, 2: {name: 'brackethighlighter.angle'}, 3: {name: 'constant.other.reference.link'}, 4: { name: 'punctuation.definition.bracket.angle.ascii.end.pkgconf' }, 5: {name: 'brackethighlighter.angle'} }, match: '\\G((<))([^<>]+)((>))' } ] } ] }, { begin: '(?i)^(\\s*)(Version)(:)[ \\t]*', beginCaptures: { 1: {name: 'punctuation.whitespace.leading.indent.pkgconf'}, 2: {name: 'variable.keyword.field-name.pkgconf'}, 3: {patterns: [{include: 'etc#kolon'}]} }, contentName: 'constant.other.version-string.pkgconf', end: '^(?!\\1\\s+\\S)|(?=\\s*#)', name: 'meta.field.version.pkgconf', patterns: [{include: '#keywordInnards'}] }, { begin: '(?i)^(\\s*)(Conflicts|Provides|Requires(?:\\.(?:internal|shared|private))?)(:)[ \\t]*', beginCaptures: { 1: {name: 'punctuation.whitespace.leading.indent.pkgconf'}, 2: {name: 'variable.keyword.field-name.pkgconf'}, 3: {patterns: [{include: 'etc#kolon'}]} }, end: '^(?!\\1\\s+\\S)|(?=\\s*#)', name: 'meta.field.${2:/downcase}.pkgconf', patterns: [ { captures: { 1: {name: 'entity.name.package.pkgconf'}, 2: { patterns: [ {include: 'etc#opCmp'}, { match: '(?:^|\\G)=$', name: 'keyword.operator.logical.comparison.equal-to.equals.pkgconf' } ] }, 3: {name: 'constant.other.version-string.pkgconf'} }, match: '\\s*([-\\w+./]+)(?:\\s*(>=|<=|==?|!=|<|>)\\s*(\\d+(?:\\.\\d+)*[-\\w]*))?', name: 'meta.package-spec.pkgconf' }, {include: 'etc#comma'}, {include: '#keywordInnards'} ] }, { begin: '(?i)^(\\s*)((?:Cflags|Libs)(?:\\.(?:internal|shared|private))?)(:)[ \\t]*', beginCaptures: { 1: {name: 'punctuation.whitespace.leading.indent.pkgconf'}, 2: {name: 'variable.keyword.field-name.pkgconf'}, 3: {patterns: [{include: 'etc#kolon'}]} }, end: '^(?!\\1\\s+\\S)|(?=\\s*#)', name: 'meta.field.${2:/downcase}.pkgconf', patterns: [ { captures: { 1: {name: 'storage.type.flag.pkgconf'}, 2: {name: 'punctuation.definition.option.name.dash.pkgconf'}, 3: {name: 'constant.other.bareword.pkgconf'}, 4: { patterns: [ {include: 'etc#comma'}, { captures: { 1: { name: 'punctuation.definition.option.name.dash.pkgconf' }, 2: { patterns: [ {include: '#escape'}, {include: '#interpolation'} ] } }, match: '(?:^|(?<=,))(--?)((?:[^#,\\s\\\\]|\\\\.)++)', name: 'storage.type.flag.pkgconf' } ] } }, match: '((-)W)\\s*(a|l|p)(?=,)((?:[^#\\s\\\\]|\\\\.)++)', name: 'meta.flag.pkgconf' }, { captures: { 1: {name: 'storage.type.flag.pkgconf'}, 2: {name: 'punctuation.definition.option.name.dash.pkgconf'}, 3: { name: 'constant.other.bareword.pkgconf', patterns: [{include: '#escape'}, {include: '#interpolation'}] } }, match: '((-)(?:framework(?=\\s)|no(?=(?:\\s*|-)\\w)|\\w))\\s*((?:[^#\\s\\\\]|\\\\.)++)?', name: 'meta.flag.pkgconf' }, { captures: { 0: { patterns: [{include: '#escape'}, {include: '#interpolation'}] } }, match: '(?:[^#\\s\\\\]|\\\\.)++', name: 'constant.other.bareword.pkgconf' }, {include: '#escape'} ] }, { begin: '^(\\s*)([^\\s:]+)(:)[ \\t]*', beginCaptures: { 1: {name: 'punctuation.whitespace.leading.indent.pkgconf'}, 2: {name: 'variable.keyword.field-name.pkgconf'}, 3: {patterns: [{include: 'etc#kolon'}]} }, contentName: 'string.unquoted.field.pkgconf', end: '^(?!\\1\\s+\\S)|(?=\\s*#)', name: 'meta.field.other.pkgconf', patterns: [{include: '#keywordInnards'}] } ] }, keywordInnards: { patterns: [{include: '#escape'}, {include: '#interpolation'}] }, main: { patterns: [ {include: '#comments'}, {include: '#variable'}, {include: '#keyword'} ] }, variable: { begin: '^(?!\\d)(\\w+)\\s*(=)[ \\t]*', beginCaptures: { 1: {name: 'variable.assignment.pkgconf'}, 2: {patterns: [{include: 'etc#eql'}]} }, contentName: 'string.unquoted.pkgconf', end: '(?=\\s*(?:$|#))', name: 'meta.variable.pkgconf', patterns: [{include: '#escape'}, {include: '#interpolation'}] } }, scopeName: 'source.pkgconf' } export default grammar