{ "name": "KiCad PCB (Board)", "scopeName": "source.pcb.board", "patterns": [ { "contentName": "source.eagle.pcb.board", "begin": "\\A(?=\u003c\\?xml\\s+version=\"[\\d.]+\"\\s)", "end": "(?=A)B", "patterns": [ { "include": "text.xml" } ] }, { "include": "#main" } ], "repository": { "comment": { "name": "comment.line.number-sign.pcb.board", "begin": "#", "end": "$", "beginCaptures": { "0": { "name": "punctuation.definition.comment.pcb.board" } } }, "fields": { "patterns": [ { "match": "^\\s*(PcbPlotParams)\\s+(.+)$", "captures": { "1": { "name": "entity.name.var.pcb.board" }, "2": { "patterns": [ { "include": "source.pcb.sexp" } ] } } }, { "match": "^\\s*(Layer)(\\[)([0-9]+)(\\])(?=\\s)", "captures": { "1": { "name": "entity.name.var.pcb.board" }, "2": { "name": "punctuation.section.begin.brace.bracket.square.pcb.board" }, "3": { "name": "constant.numeric.integer.decimal.pcb.board" }, "4": { "name": "punctuation.section.end.brace.bracket.square.pcb.board" } } }, { "match": "^\\s*(Cd)\\s+(\\S.*)\\s*$", "captures": { "1": { "name": "entity.name.var.pcb.board" }, "2": { "name": "string.unquoted.pcb.board" } } }, { "match": "^\\s*([^$\\s]\\S*)", "captures": { "1": { "name": "entity.name.var.pcb.board" } } }, { "name": "string.quoted.double.pcb.board", "match": "(\")((?:[^\"\\\\]|\\\\.)*)(\"|(?=$))", "captures": { "1": { "name": "punctuation.definition.string.begin.pcb.board" }, "2": { "patterns": [ { "name": "constant.character.escape.pcb.board", "match": "\\\\." } ] }, "3": { "name": "punctuation.definition.string.end.pcb.board" } } }, { "name": "constant.numeric.float.decimal.pcb.board", "match": "[-+]?\\d*\\.\\d+" }, { "include": "#integer" }, { "name": "constant.numeric.integer.hex.pcb.board", "match": "[-+]?(?:(/)?[A-F0-9]+|0x[A-Fa-f0-9]+)(?=\\s|$)", "captures": { "1": { "name": "punctuation.definition.constant.pcb.board" } } }, { "name": "constant.language.other.pcb.board", "match": "(?\u003c=\\s|^)[A-Z]+(?=\\s|$)" }, { "name": "variable.parameter.pcb.board", "match": "[^$\\s]\\S*" }, { "include": "$self" } ] }, "header": { "name": "meta.header.pcb.board", "match": "^\\s*(PCBNEW-BOARD)\\s+(Version)\\s+([\\d.]+)\\s+(date)\\s+(\\S.*)\\s*$", "captures": { "1": { "name": "storage.type.class.pcb.board" }, "2": { "name": "entity.name.var.pcb.board" }, "3": { "name": "constant.numeric.decimal.pcb.board" }, "4": { "name": "entity.name.var.pcb.board" }, "5": { "name": "constant.numeric.date.timestamp.pcb.board" } } }, "integer": { "name": "constant.numeric.integer.decimal.pcb.board", "match": "[-+]?\\d+(?=\\s|$)" }, "main": { "patterns": [ { "include": "#header" }, { "include": "#comment" }, { "include": "#sections" } ] }, "sections": { "patterns": [ { "name": "meta.section.module.pcb.board", "begin": "^\\s*((\\$)MODULE)\\s+(\\S+)", "end": "^\\s*((\\$)EndMODULE)\\s+(\\3)(?=\\s|$)", "patterns": [ { "match": "^\\s*(Po\\s+.+\\s+)([~F][~P])\\s*$", "captures": { "1": { "patterns": [ { "include": "#fields" } ] }, "2": { "name": "keyword.operator.position-type.pcb.board" } } }, { "include": "#fields" } ], "beginCaptures": { "1": { "name": "keyword.control.section.module.pcb.board" }, "2": { "name": "punctuation.section.begin.pcb.board" }, "3": { "name": "entity.name.type.class.pcb.board" } }, "endCaptures": { "1": { "name": "keyword.control.section.module.pcb.board" }, "2": { "name": "punctuation.section.end.pcb.board" }, "3": { "name": "entity.name.type.class.pcb.board" } } }, { "name": "meta.section.polyscorners.pcb.board", "begin": "^\\s*((\\$)POLYSCORNERS)\\s*$", "end": "^\\s*((\\$)endPOLYSCORNERS)(?=\\s|$)", "patterns": [ { "include": "#integer" } ], "beginCaptures": { "1": { "name": "keyword.control.section.pcb.board" }, "2": { "name": "punctuation.section.begin.pcb.board" } }, "endCaptures": { "1": { "name": "keyword.control.section.pcb.board" }, "2": { "name": "punctuation.section.end.pcb.board" } } }, { "name": "meta.section.${3:/downcase}.pcb.board", "begin": "^\\s*((\\$)([A-Z][A-Z0-9_]*+))(?=\\s|$)", "end": "^\\s*((\\$)[Ee]nd\\3)(?=\\s|$)", "patterns": [ { "include": "#fields" } ], "beginCaptures": { "1": { "name": "keyword.control.section.pcb.board" }, "2": { "name": "punctuation.section.begin.pcb.board" } }, "endCaptures": { "1": { "name": "keyword.control.section.pcb.board" }, "2": { "name": "punctuation.section.end.pcb.board" } } }, { "match": "^\\s*((\\$)EndBOARD)(?=\\s|$)", "captures": { "1": { "name": "keyword.control.eof.pcb.board" }, "2": { "name": "punctuation.section.end.pcb.board" } } } ] } } }