github-linguist 7.9.0 → 7.10.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (74) hide show
  1. checksums.yaml +4 -4
  2. data/grammars/etc.json +260 -1
  3. data/grammars/hidden.manref.json +1 -1
  4. data/grammars/hidden.regexp.injection-shell.json +28 -0
  5. data/grammars/source.4dm.json +57 -1
  6. data/grammars/source.abap.json +1 -1
  7. data/grammars/source.abl.json +685 -83
  8. data/grammars/source.agda.json +7 -7
  9. data/grammars/source.ballerina.json +1 -1
  10. data/grammars/source.c++.json +4 -4
  11. data/grammars/source.c.platform.json +584 -33
  12. data/grammars/source.chapel.json +5 -2
  13. data/grammars/source.css.json +1 -1
  14. data/grammars/source.curlrc.json +4 -4
  15. data/grammars/source.d.json +2 -2
  16. data/grammars/source.futhark.json +146 -0
  17. data/grammars/source.gcode.json +2 -2
  18. data/grammars/source.gedcom.json +196 -0
  19. data/grammars/source.generic-db.json +41 -0
  20. data/grammars/source.gfm.blade.json +15 -0
  21. data/grammars/source.gfm.json +1697 -1439
  22. data/grammars/source.httpspec.json +1 -1
  23. data/grammars/source.hx.json +5 -5
  24. data/grammars/source.hxml.json +2 -2
  25. data/grammars/source.idris.json +1 -1
  26. data/grammars/source.inputrc.json +1 -1
  27. data/grammars/source.isabelle.root.json +1 -1
  28. data/grammars/source.jison.json +3 -0
  29. data/grammars/source.jisonlex.json +3 -0
  30. data/grammars/source.julia.json +1 -1
  31. data/grammars/source.kotlin.json +17 -51
  32. data/grammars/source.lcov.json +398 -0
  33. data/grammars/source.lean.json +1 -1
  34. data/grammars/source.m2.json +125 -0
  35. data/grammars/source.man-conf.json +2 -2
  36. data/grammars/source.modula-3.json +10 -0
  37. data/grammars/{source.mrc.json → source.msl.json} +114 -99
  38. data/grammars/source.neon.json +381 -0
  39. data/grammars/source.objc.platform.json +493 -35
  40. data/grammars/source.openbsd-pkg.contents.json +128 -0
  41. data/grammars/source.p4.json +5 -21
  42. data/grammars/source.perl6fe.json +1 -1
  43. data/grammars/source.postscript.json +358 -103
  44. data/grammars/source.prisma.json +1 -1
  45. data/grammars/source.purescript.json +29 -2
  46. data/grammars/source.python.json +50 -0
  47. data/grammars/source.q.json +150 -63
  48. data/grammars/source.r.json +4 -4
  49. data/grammars/source.sieve.json +383 -0
  50. data/grammars/source.solidity.json +1 -1
  51. data/grammars/source.tags.json +266 -0
  52. data/grammars/source.ts.json +104 -36
  53. data/grammars/source.tsx.json +104 -36
  54. data/grammars/source.v.json +55 -24
  55. data/grammars/source.viml.json +3 -3
  56. data/grammars/source.webidl.json +8 -0
  57. data/grammars/source.wsd.json +25 -19
  58. data/grammars/source.x86.json +7 -3
  59. data/grammars/source.zig.json +84 -78
  60. data/grammars/text.dfy.dafny.json +188 -0
  61. data/grammars/text.html.php.blade.json +535 -528
  62. data/grammars/text.openbsd-pkg.desc.json +78 -0
  63. data/grammars/text.roff.json +49 -1
  64. data/grammars/text.sfd.json +21 -0
  65. data/grammars/text.xml.svg.json +8 -2
  66. data/grammars/version +1 -1
  67. data/lib/linguist/VERSION +1 -1
  68. data/lib/linguist/generated.rb +23 -6
  69. data/lib/linguist/languages.json +1 -1
  70. data/lib/linguist/languages.yml +74 -6
  71. data/lib/linguist/samples.json +4614 -150
  72. data/lib/linguist/vendor.yml +64 -62
  73. metadata +22 -10
  74. data/grammars/text.html.abl.json +0 -70
@@ -0,0 +1,128 @@
1
+ {
2
+ "name": "OpenBSD Packing List",
3
+ "scopeName": "source.openbsd-pkg.contents",
4
+ "patterns": [
5
+ {
6
+ "include": "#main"
7
+ }
8
+ ],
9
+ "repository": {
10
+ "annotation": {
11
+ "name": "meta.annotation.${3:/downcase}-field.openbsd-pkg.contents",
12
+ "begin": "^((@)([-\\w]+))\\b",
13
+ "end": "$",
14
+ "patterns": [
15
+ {
16
+ "contentName": "comment.line.at-sign.openbsd-pkg.contents",
17
+ "begin": "(?\u003c=@comment)\\G\\s*",
18
+ "end": "(?=\\s*$)"
19
+ },
20
+ {
21
+ "contentName": "entity.name.package.contents",
22
+ "begin": "(?\u003c=@name)\\G\\s*",
23
+ "end": "(?=\\s*$)"
24
+ },
25
+ {
26
+ "begin": "(?\u003c=@depend)\\G\\s*",
27
+ "end": "(?=\\s*$)",
28
+ "patterns": [
29
+ {
30
+ "include": "#dependency"
31
+ }
32
+ ]
33
+ },
34
+ {
35
+ "begin": "(?\u003c=@url)\\G\\s*",
36
+ "end": "(?=\\s*$)",
37
+ "patterns": [
38
+ {
39
+ "include": "etc#url"
40
+ }
41
+ ]
42
+ },
43
+ {
44
+ "begin": "(?\u003c=@ts|size)\\G\\s*",
45
+ "end": "(?=\\s*$)",
46
+ "patterns": [
47
+ {
48
+ "include": "etc#num"
49
+ }
50
+ ]
51
+ },
52
+ {
53
+ "contentName": "constant.numeric.base64.sha256.openbsd-pkg.contents",
54
+ "begin": "(?\u003c=@sha)\\G\\s*",
55
+ "end": "(?=\\s*$)"
56
+ },
57
+ {
58
+ "contentName": "constant.other.annotation.openbsd-pkg.contents",
59
+ "begin": "\\G\\s*",
60
+ "end": "(?=\\s*$)"
61
+ }
62
+ ],
63
+ "beginCaptures": {
64
+ "1": {
65
+ "name": "keyword.operator.annotation.openbsd-pkg.contents"
66
+ },
67
+ "2": {
68
+ "name": "punctuation.definition.annotation.openbsd-pkg.contents"
69
+ }
70
+ }
71
+ },
72
+ "dependency": {
73
+ "patterns": [
74
+ {
75
+ "name": "entity.name.package.path.openbsd-pkg.contents",
76
+ "match": "\\G[^\\s:]+(?=:|$)"
77
+ },
78
+ {
79
+ "name": "meta.package-spec.openbsd-pkg.contents",
80
+ "match": "(?\u003c=:)([-_\\w]+)(-)((?:[\\dPp]|[^\\s:\\w])+)(?=:|$)",
81
+ "captures": {
82
+ "1": {
83
+ "name": "entity.other.package.spec.openbsd-pkg.contents"
84
+ },
85
+ "2": {
86
+ "patterns": [
87
+ {
88
+ "include": "etc#dash"
89
+ }
90
+ ]
91
+ },
92
+ "3": {
93
+ "patterns": [
94
+ {
95
+ "include": "etc#op"
96
+ },
97
+ {
98
+ "include": "etc#comma"
99
+ },
100
+ {
101
+ "include": "etc#version"
102
+ }
103
+ ]
104
+ }
105
+ }
106
+ },
107
+ {
108
+ "include": "etc#colon"
109
+ }
110
+ ]
111
+ },
112
+ "file": {
113
+ "name": "string.unquoted.filename.openbsd-pkg.contents",
114
+ "begin": "^(?!@)",
115
+ "end": "$"
116
+ },
117
+ "main": {
118
+ "patterns": [
119
+ {
120
+ "include": "#annotation"
121
+ },
122
+ {
123
+ "include": "#file"
124
+ }
125
+ ]
126
+ }
127
+ }
128
+ }
@@ -1,5 +1,5 @@
1
1
  {
2
- "name": "P4-16",
2
+ "name": "P4",
3
3
  "scopeName": "source.p4",
4
4
  "patterns": [
5
5
  {
@@ -44,15 +44,11 @@
44
44
  },
45
45
  {
46
46
  "name": "storage.type.object.p4",
47
- "match": "\\b(struct|package|header|metadata|parser|transition|state|actions|action|table|key|control|extern|verify)\\b"
47
+ "match": "\\b(header_type|header|metadata|field_list|field_list_calculation|parser|parser_exception|parser_value_set|counter|meter|register|action|action_profile|table|control|extern)\\b"
48
48
  },
49
49
  {
50
50
  "name": "storage.data.type.p4",
51
- "match": "\\b(void|const|bool|varbit|int|typedef|tuple|enum)\\b"
52
- },
53
- {
54
- "name": "support.type.bit.p4",
55
- "match": "bit(\u003c\\d+\u003e)"
51
+ "match": "\\b(bool|bit|varbit|int)\\b"
56
52
  },
57
53
  {
58
54
  "name": "variable.language.p4",
@@ -60,7 +56,7 @@
60
56
  },
61
57
  {
62
58
  "name": "keyword.control.p4",
63
- "match": "\\b(if|else if|else|return|hit|miss|true|false|inout|in|out|exit)\\b"
59
+ "match": "\\b(if|else if|else|return|hit|miss|true|false)\\b"
64
60
  },
65
61
  {
66
62
  "name": "keyword.operator.p4",
@@ -68,7 +64,7 @@
68
64
  },
69
65
  {
70
66
  "name": "entity.name.type.p4",
71
- "match": "\\b(exact|ternary|lpm|range|valid|mask|match_kind)\\b"
67
+ "match": "\\b(exact|ternary|lpm|range|valid|mask)\\b"
72
68
  },
73
69
  {
74
70
  "name": "storage.type.p4",
@@ -90,10 +86,6 @@
90
86
  "name": "meta.preprocessor.include.p4",
91
87
  "match": "\\#include"
92
88
  },
93
- {
94
- "name": "meta.preprocessor.p4",
95
- "match": "\\#ifndef|\\#ifdef|\\#if|\\#else|\\#endif|\\#elif"
96
- },
97
89
  {
98
90
  "name": "meta.preprocessor.define.p4",
99
91
  "match": "\\#define"
@@ -102,10 +94,6 @@
102
94
  "name": "support.function.primitive.p4",
103
95
  "match": "\\b(apply|valid|select|current|extract|add_header|copy_header|remove_header|modify_field|add_to_field|add|set_field_to_hash_index|truncate|drop|no_op|push|pop|count|meter|generate_digest|resubmit|recirculate|clone_ingress_pkt_to_ingress|clone_egress_pkt_to_ingress|clone_ingress_pkt_to_egress|clone_egress_pkt_to_egress|register_write|register_read)\\b"
104
96
  },
105
- {
106
- "name": "storage.type.annotation.p4",
107
- "match": "@\\w+"
108
- },
109
97
  {
110
98
  "name": "support.any-method.p4",
111
99
  "match": "[a-zA-Z_][0-9a-zA-Z_]*"
@@ -118,10 +106,6 @@
118
106
  "name": "constant.numeric.p4",
119
107
  "match": "0(x|X)[0-9a-fA-F]+"
120
108
  },
121
- {
122
- "name": "constant.numeric.p4",
123
- "match": "\\dw\\d+"
124
- },
125
109
  {
126
110
  "name": "constant.numeric.p4",
127
111
  "match": "0(b|B)[01]+"
@@ -1,5 +1,5 @@
1
1
  {
2
- "name": "Perl 6 FE",
2
+ "name": "Perl 6",
3
3
  "scopeName": "source.perl6fe",
4
4
  "patterns": [
5
5
  {
@@ -1,67 +1,91 @@
1
1
  {
2
- "name": "Postscript",
2
+ "name": "PostScript",
3
3
  "scopeName": "source.postscript",
4
4
  "patterns": [
5
5
  {
6
- "name": "string.other.postscript",
7
- "begin": "\\(",
8
- "end": "\\)",
6
+ "name": "meta.document.pdf",
7
+ "begin": "\\A(?=%PDF)",
8
+ "end": "(?=A)B",
9
9
  "patterns": [
10
10
  {
11
- "include": "#string_content"
11
+ "include": "#main"
12
+ }
13
+ ]
14
+ },
15
+ {
16
+ "include": "#main"
17
+ }
18
+ ],
19
+ "repository": {
20
+ "array": {
21
+ "name": "meta.array.postscript",
22
+ "begin": "\\[",
23
+ "end": "\\]",
24
+ "patterns": [
25
+ {
26
+ "include": "#main"
12
27
  }
13
28
  ],
14
29
  "beginCaptures": {
15
30
  "0": {
16
- "name": "punctuation.definition.string.begin.postscript"
31
+ "name": "punctuation.definition.array.begin.postscript"
17
32
  }
18
33
  },
19
34
  "endCaptures": {
20
35
  "0": {
21
- "name": "punctuation.definition.string.end.postscript"
36
+ "name": "punctuation.definition.array.end.postscript"
22
37
  }
23
38
  }
24
39
  },
25
- {
26
- "name": "meta.Document-Structuring-Comment.postscript",
27
- "match": "^(%%(BeginBinary:|BeginCustomColor:|BeginData:|BeginDefaults|BeginDocument:|BeginEmulation:|BeginExitServer:|BeginFeature:|BeginFile:|BeginFont:|BeginObject:|BeginPageSetup:|BeginPaperSize:|BeginPreview:|BeginProcSet|BeginProcessColor:|BeginProlog|BeginResource:|BeginSetup|BoundingBox:|CMYKCustomColor:|ChangeFont:|Copyright:|CreationDate:|Creator:|DocumentCustomColors:|DocumentData:|DocumentFonts:|DocumentMedia:|DocumentNeededFiles:|DocumentNeededFonts:|DocumentNeededProcSets:|DocumentNeededResources:|DocumentPaperColors:|DocumentPaperForms:|DocumentPaperSizes:|DocumentPaperWeights:|DocumentPrinterRequired:|DocumentProcSets:|DocumentProcessColors:|DocumentSuppliedFiles:|DocumentSuppliedFonts:|DocumentSuppliedProcSets:|DocumentSuppliedResources:|EOF|Emulation:|EndBinary:|EndComments|EndCustomColor:|EndData:|EndDefaults|EndDocument:|EndEmulation:|EndExitServer:|EndFeature:|EndFile:|EndFont:|EndObject:|EndPageSetup:|EndPaperSize:|EndPreview:|EndProcSet|EndProcessColor:|EndProlog|EndResource:|EndSetup|ExecuteFile:|Extensions:|Feature:|For:|IncludeDocument:|IncludeFeature:|IncludeFile:|IncludeFont:|IncludeProcSet:|IncludeResource:|LanguageLevel:|OperatorIntervention:|OperatorMessage:|Orientation:|Page:|PageBoundingBox:|PageCustomColors|PageCustomColors:|PageFiles:|PageFonts:|PageMedia:|PageOrder:|PageOrientation:|PageProcessColors|PageProcessColors:|PageRequirements:|PageResources:|PageTrailer|Pages:|PaperColor:|PaperForm:|PaperSize:|PaperWeight:|ProofMode:|RGBCustomColor:|Requirements:|Routing:|Title:|Trailer|VMlocation:|VMusage:|Version|Version:|\\+|\\?BeginFeatureQuery:|\\?BeginFileQuery:|\\?BeginFontListQuery:|\\?BeginFontQuery:|\\?BeginPrinterQuery:|\\?BeginProcSetQuery:|\\?BeginQuery:|\\?BeginResourceListQuery:|\\?BeginResourceQuery:|\\?BeginVMStatus:|\\?EndFeatureQuery:|\\?EndFileQuery:|\\?EndFontListQuery:|\\?EndFontQuery:|\\?EndPrinterQuery:|\\?EndProcSetQuery:|\\?EndQuery:|\\?EndResourceListQuery:|\\?EndResourceQuery:|\\?EndVMStatus:))\\s*(.*)$\\n?",
28
- "captures": {
29
- "1": {
30
- "name": "keyword.other.DSC.postscript"
31
- },
32
- "3": {
33
- "name": "string.unquoted.DSC.postscript"
40
+ "base85": {
41
+ "name": "string.other.base85.postscript",
42
+ "begin": "\u003c~",
43
+ "end": "~\u003e",
44
+ "patterns": [
45
+ {
46
+ "name": "invalid.illegal.base85.char.postscript",
47
+ "match": "(?:[^!-uz\\s]|~(?!\u003e))++"
48
+ }
49
+ ],
50
+ "beginCaptures": {
51
+ "0": {
52
+ "name": "punctuation.definition.string.begin.postscript"
53
+ }
54
+ },
55
+ "endCaptures": {
56
+ "0": {
57
+ "name": "punctuation.definition.string.end.postscript"
34
58
  }
35
59
  }
36
60
  },
37
- {
38
- "begin": "(^[ \\t]+)?(?=%)",
39
- "end": "(?!\\G)",
61
+ "comment": {
40
62
  "patterns": [
63
+ {
64
+ "name": "punctuation.whitespace.comment.leading.postscript",
65
+ "match": "^[ \\t]+(?=%)"
66
+ },
67
+ {
68
+ "include": "#dsc"
69
+ },
41
70
  {
42
71
  "name": "comment.line.percentage.postscript",
43
72
  "begin": "%",
44
- "end": "\\n",
73
+ "end": "(?=$|\\r|\\f)",
45
74
  "beginCaptures": {
46
75
  "0": {
47
76
  "name": "punctuation.definition.comment.postscript"
48
77
  }
49
78
  }
50
79
  }
51
- ],
52
- "beginCaptures": {
53
- "1": {
54
- "name": "punctuation.whitespace.comment.leading.postscript"
55
- }
56
- }
80
+ ]
57
81
  },
58
- {
82
+ "dictionary": {
59
83
  "name": "meta.dictionary.postscript",
60
- "begin": "\\\u003c\\\u003c",
61
- "end": "\\\u003e\\\u003e",
84
+ "begin": "\u003c\u003c",
85
+ "end": "\u003e\u003e",
62
86
  "patterns": [
63
87
  {
64
- "include": "$self"
88
+ "include": "#main"
65
89
  }
66
90
  ],
67
91
  "beginCaptures": {
@@ -75,81 +99,252 @@
75
99
  }
76
100
  }
77
101
  },
78
- {
79
- "name": "meta.array.postscript",
80
- "begin": "\\[",
81
- "end": "\\]",
82
- "patterns": [
83
- {
84
- "include": "$self"
85
- }
86
- ],
102
+ "dsc": {
103
+ "name": "meta.Document-Structuring-Comment.postscript",
104
+ "contentName": "string.unquoted.DSC.postscript",
105
+ "begin": "(?x) ^ (%%)\n( BeginBinary\n| BeginCustomColor\n| BeginData\n| BeginDefaults\n| BeginDocument\n| BeginEmulation\n| BeginExitServer\n| BeginFeature\n| BeginFile\n| BeginFont\n| BeginObject\n| BeginPageSetup\n| BeginPaperSize\n| BeginPreview\n| BeginProcSet\n| BeginProcessColor\n| BeginProlog\n| BeginResource\n| BeginSetup\n| BoundingBox\n| CMYKCustomColor\n| ChangeFont\n| Copyright\n| CreationDate\n| Creator\n| DocumentCustomColors\n| DocumentData\n| DocumentFonts\n| DocumentMedia\n| DocumentNeededFiles\n| DocumentNeededFonts\n| DocumentNeededProcSets\n| DocumentNeededResources\n| DocumentPaperColors\n| DocumentPaperForms\n| DocumentPaperSizes\n| DocumentPaperWeights\n| DocumentPrinterRequired\n| DocumentProcSets\n| DocumentProcessColors\n| DocumentSuppliedFiles\n| DocumentSuppliedFonts\n| DocumentSuppliedProcSets\n| DocumentSuppliedResources\n| EOF\n| Emulation\n| EndBinary\n| EndComments\n| EndCustomColor\n| EndData\n| EndDefaults\n| EndDocument\n| EndEmulation\n| EndExitServer\n| EndFeature\n| EndFile\n| EndFont\n| EndObject\n| EndPageSetup\n| EndPaperSize\n| EndPreview\n| EndProcSet\n| EndProcessColor\n| EndProlog\n| EndResource\n| EndSetup\n| ExecuteFile\n| Extensions\n| Feature\n| For\n| IncludeDocument\n| IncludeFeature\n| IncludeFile\n| IncludeFont\n| IncludeProcSet\n| IncludeResource\n| LanguageLevel\n| OperatorIntervention\n| OperatorMessage\n| Orientation\n| Page\n| PageBoundingBox\n| PageCustomColors\n| PageFiles\n| PageFonts\n| PageMedia\n| PageOrder\n| PageOrientation\n| PageProcessColors\n| PageRequirements\n| PageResources\n| PageTrailer\n| Pages\n| PaperColor\n| PaperForm\n| PaperSize\n| PaperWeight\n| ProofMode\n| RGBCustomColor\n| Requirements\n| Routing\n| Title\n| Trailer\n| VMlocation\n| VMusage\n| Version\n| \\+\n| \\?BeginFeatureQuery\n| \\?BeginFileQuery\n| \\?BeginFontListQuery\n| \\?BeginFontQuery\n| \\?BeginPrinterQuery\n| \\?BeginProcSetQuery\n| \\?BeginQuery\n| \\?BeginResourceListQuery\n| \\?BeginResourceQuery\n| \\?BeginVMStatus\n| \\?EndFeatureQuery\n| \\?EndFileQuery\n| \\?EndFontListQuery\n| \\?EndFontQuery\n| \\?EndPrinterQuery\n| \\?EndProcSetQuery\n| \\?EndQuery\n| \\?EndResourceListQuery\n| \\?EndResourceQuery\n| \\?EndVMStatus\n) (:)? [^\\S\\r\\n]*",
106
+ "end": "(?=$|\\r|\\f)",
87
107
  "beginCaptures": {
88
108
  "0": {
89
- "name": "punctuation.definition.array.begin.postscript"
90
- }
91
- },
92
- "endCaptures": {
93
- "0": {
94
- "name": "punctuation.definition.array.end.postscript"
109
+ "name": "keyword.other.DSC.postscript"
110
+ },
111
+ "1": {
112
+ "name": "punctuation.definition.keyword.DSC.postscript"
113
+ },
114
+ "3": {
115
+ "name": "keyword.operator.assignment.key-value.colon.postscript"
95
116
  }
96
117
  }
97
118
  },
98
- {
99
- "name": "meta.procedure.postscript",
100
- "begin": "{",
101
- "end": "}",
119
+ "embedded": {
120
+ "patterns": [
121
+ {
122
+ "name": "meta.encrypted-source.base85.postscript",
123
+ "contentName": "string.other.base85.postscript",
124
+ "begin": "(?\u003c![^/\\s{}()\u003c\u003e\\[\\]%])\\b(currentfile)\\s*((/)ASCII85Decode)\\s+(filter)\\b(?![^/\\s{}()\u003c\u003e\\[\\]%])([^}\u003e\\]%]*?(?:exec|image|readstring)\\s*)$\\s*+",
125
+ "end": "~\u003e|(?=cleartomark|closefile)",
126
+ "beginCaptures": {
127
+ "1": {
128
+ "name": "keyword.operator.postscript"
129
+ },
130
+ "2": {
131
+ "name": "variable.other.literal.postscript"
132
+ },
133
+ "3": {
134
+ "name": "punctuation.definition.name.postscript"
135
+ },
136
+ "4": {
137
+ "name": "keyword.operator.postscript"
138
+ },
139
+ "5": {
140
+ "patterns": [
141
+ {
142
+ "include": "#main"
143
+ }
144
+ ]
145
+ }
146
+ },
147
+ "endCaptures": {
148
+ "0": {
149
+ "name": "punctuation.definition.string.end.postscript"
150
+ }
151
+ }
152
+ },
153
+ {
154
+ "name": "meta.encrypted-source.eexec.postscript",
155
+ "begin": "(?\u003c![^/\\s{}()\u003c\u003e\\[\\]%])\\b(currentfile)\\s+(eexec)(?:$|(?=.*[\\0-\\x08\\x14-\\x31\\x7F\\x80-\\x9F])(?=.{0,3}?[^A-Fa-f0-9]|\\b[A-Fa-f0-9]))",
156
+ "end": "(cleartomark|closefile)\\b(?![^/\\s{}()\u003c\u003e\\[\\]%])|(?\u003c=\\G)(?=[^\\s0-9A-Fa-f])",
157
+ "patterns": [
158
+ {
159
+ "begin": "\\G(?=\\s*$)",
160
+ "end": "(?=\\s*\\S)"
161
+ },
162
+ {
163
+ "begin": "(?:\\G|(?\u003c=\\n|^))\\s*(?=\\S)",
164
+ "end": "(?!\\G)",
165
+ "patterns": [
166
+ {
167
+ "name": "string.other.raw.binary.postscript",
168
+ "contentName": "sublimelinter.gutter-mark",
169
+ "begin": "\\G(?!cleartomark|closefile)(?=.{0,3}?[^A-Fa-f0-9])",
170
+ "end": "(?=\\s*(?:cleartomark|closefile))"
171
+ },
172
+ {
173
+ "name": "string.other.hexadecimal.postscript",
174
+ "begin": "\\G(?!cleartomark|closefile)(?=\\s{0,3}?(?:[A-Fa-f0-9]))",
175
+ "end": "(?=\\s*[^A-Fa-f0-9\\s]|cleartomark|closefile)"
176
+ }
177
+ ]
178
+ }
179
+ ],
180
+ "beginCaptures": {
181
+ "1": {
182
+ "name": "keyword.operator.postscript"
183
+ },
184
+ "2": {
185
+ "name": "keyword.operator.postscript"
186
+ }
187
+ },
188
+ "endCaptures": {
189
+ "1": {
190
+ "name": "keyword.operator.postscript"
191
+ }
192
+ }
193
+ }
194
+ ]
195
+ },
196
+ "embeddedRow": {
197
+ "patterns": [
198
+ {
199
+ "name": "string.other.base85.postscript",
200
+ "match": "^[!-uz]{0,78}(~\u003e)",
201
+ "captures": {
202
+ "1": {
203
+ "name": "punctuation.definition.string.end.postscript"
204
+ }
205
+ }
206
+ },
207
+ {
208
+ "name": "string.other.base85.postscript",
209
+ "begin": "(?x) ^\n(?= [^%\\[]*? \\]\n| [^%(]*? \\)\n| [^%\u003c]*? \u003e\n| .*? \u003c(?!~|\u003c) [A-Fa-f0-9]* [^~\u003eA-Fa-f0-9]\n) [!-uz]{60,80} [^\\S\\r\\n]* $",
210
+ "end": "^[!-uz]{0,78}(~\u003e)",
211
+ "endCaptures": {
212
+ "0": {
213
+ "name": "punctuation.definition.string.end.postscript"
214
+ }
215
+ }
216
+ }
217
+ ]
218
+ },
219
+ "hex": {
220
+ "name": "string.other.hexadecimal.postscript",
221
+ "begin": "\u003c",
222
+ "end": "\u003e",
102
223
  "patterns": [
103
224
  {
104
- "include": "$self"
225
+ "name": "invalid.illegal.hexadecimal.char.postscript",
226
+ "match": "[^\u003e0-9A-Fa-f\\s]+"
105
227
  }
106
228
  ],
107
229
  "beginCaptures": {
108
230
  "0": {
109
- "name": "punctuation.definition.procedure.begin.postscript"
231
+ "name": "punctuation.definition.string.begin.postscript"
110
232
  }
111
233
  },
112
234
  "endCaptures": {
113
235
  "0": {
114
- "name": "punctuation.definition.procedure.end.postscript"
236
+ "name": "punctuation.definition.string.end.postscript"
115
237
  }
116
238
  }
117
239
  },
118
- {
119
- "name": "string.other.base85.postscript",
120
- "begin": "\\\u003c\\~",
121
- "end": "\\~\\\u003e",
240
+ "main": {
122
241
  "patterns": [
123
242
  {
124
- "match": "[!-z\\s]+"
243
+ "include": "#string"
125
244
  },
126
245
  {
127
- "name": "invalid.illegal.base85.char.postscript",
128
- "match": "."
246
+ "include": "#comment"
247
+ },
248
+ {
249
+ "include": "#dictionary"
250
+ },
251
+ {
252
+ "include": "#array"
253
+ },
254
+ {
255
+ "include": "#procedure"
256
+ },
257
+ {
258
+ "include": "#base85"
259
+ },
260
+ {
261
+ "include": "#hex"
262
+ },
263
+ {
264
+ "include": "#radix"
265
+ },
266
+ {
267
+ "include": "#number"
268
+ },
269
+ {
270
+ "include": "#embedded"
271
+ },
272
+ {
273
+ "include": "#operators"
274
+ },
275
+ {
276
+ "include": "#embeddedRow"
277
+ },
278
+ {
279
+ "include": "#names"
280
+ }
281
+ ]
282
+ },
283
+ "names": {
284
+ "patterns": [
285
+ {
286
+ "name": "variable.other.constant.immediately-evaluated.postscript",
287
+ "match": "(//)[^()\u003c\u003e\\[\\]{}/%\\s]*",
288
+ "captures": {
289
+ "1": {
290
+ "name": "punctuation.definition.name.postscript"
291
+ }
292
+ }
293
+ },
294
+ {
295
+ "name": "variable.other.constant.literal.postscript",
296
+ "match": "(/)[^()\u003c\u003e\\[\\]{}/%\\s]*",
297
+ "captures": {
298
+ "1": {
299
+ "name": "punctuation.definition.name.postscript"
300
+ }
301
+ }
302
+ },
303
+ {
304
+ "name": "variable.other.executable.postscript",
305
+ "match": "[^()\u003c\u003e\\[\\]{}/%\\s]+"
306
+ }
307
+ ]
308
+ },
309
+ "number": {
310
+ "name": "constant.numeric.postscript",
311
+ "match": "[-+]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[Ee][-+]?\\d+)?(?=$|[\\s\\[\\]{}(/%\u003c])"
312
+ },
313
+ "operators": {
314
+ "name": "keyword.operator.postscript",
315
+ "match": "(?x) (?\u003c![^/\\s{}()\u003c\u003e\\[\\]%]) \\b\n( FontDirectory\n| GetHalftoneName\n| GetPageDeviceName\n| GetSubstituteCRD\n| GlobalFontDirectory\n| ISOLatin1Encoding\n| SharedFontDirectory\n| StandardEncoding\n| StartData\n| UserObjects\n| VMerror\n| abs\n| addglyph\n| add\n| aload\n| anchorsearch\n| and\n| arcn\n| arcto\n| arct\n| arc\n| array\n| ashow\n| astore\n| atan\n| awidthshow\n| beginbfchar\n| beginbfrange\n| begincidchar\n| begincidrange\n| begincmap\n| begincodespacerange\n| beginnotdefchar\n| beginnotdefrange\n| beginrearrangedfont\n| beginusematrix\n| begin\n| bind\n| bitshift\n| bytesavailable\n| cachestatus\n| ceiling\n| charpath\n| cleardictstack\n| cleartomark\n| clear\n| clippath\n| cliprestore\n| clipsave\n| clip\n| closefile\n| closepath\n| colorimage\n| composefont\n| concatmatrix\n| concat\n| condition\n| configurationerror\n| copypage\n| copy\n| cos\n| countdictstack\n| countexecstack\n| counttomark\n| count\n| cshow\n| currentblackgeneration\n| currentcacheparams\n| currentcmykcolor\n| currentcolorrendering\n| currentcolorscreen\n| currentcolorspace\n| currentcolortransfer\n| currentcolor\n| currentcontext\n| currentdash\n| currentdevparams\n| currentdict\n| currentfile\n| currentflat\n| currentfont\n| currentglobal\n| currentgray\n| currentgstate\n| currenthalftonephase\n| currenthalftone\n| currenthsbcolor\n| currentlinecap\n| currentlinejoin\n| currentlinewidth\n| currentmatrix\n| currentmiterlimit\n| currentobjectformat\n| currentoverprint\n| currentpacking\n| currentpagedevice\n| currentpoint\n| currentrgbcolor\n| currentscreen\n| currentshared\n| currentsmoothness\n| currentstrokeadjust\n| currentsystemparams\n| currenttransfer\n| currenttrapparams\n| currentundercolorremoval\n| currentuserparams\n| curveto\n| cvi\n| cvlit\n| cvn\n| cvrs\n| cvr\n| cvs\n| cvx\n| defaultmatrix\n| definefont\n| defineresource\n| defineusername\n| defineuserobject\n| def\n| deletefile\n| detach\n| deviceinfo\n| dictfull\n| dictstackoverflow\n| dictstackunderflow\n| dictstack\n| dict\n| div\n| dtransform\n| dup\n| echo\n| eexec\n| endbfchar\n| endbfrange\n| endcidchar\n| endcidrange\n| endcmap\n| endcodespacerange\n| endnotdefchar\n| endnotdefrange\n| endrearrangedfont\n| endusematrix\n| end\n| eoclip\n| eofill\n| eoviewclip\n| eq\n| erasepage\n| errordict\n| exch\n| execform\n| execstackoverflow\n| execstack\n| execuserobject\n| executeonly\n| executive\n| exec\n| exitserver\n| exit\n| exp\n| false\n| filenameforall\n| fileposition\n| file\n| fill\n| filter\n| findcolorrendering\n| findencoding\n| findfont\n| findresource\n| flattenpath\n| floor\n| flushfile\n| flush\n| forall\n| fork\n| for\n| gcheck\n| getinterval\n| get\n| ge\n| globaldict\n| glyphshow\n| grestoreall\n| grestore\n| gsave\n| gstate\n| gt\n| handleerror\n| identmatrix\n| idiv\n| idtransform\n| ifelse\n| if\n| imagemask\n| image\n| index\n| ineofill\n| infill\n| initclip\n| initgraphics\n| initmatrix\n| initviewclip\n| instroke\n| internaldict\n| interrupt\n| inueofill\n| inufill\n| inustroke\n| invalidaccess\n| invalidcontext\n| invalidexit\n| invalidfileaccess\n| invalidfont\n| invalidid\n| invalidrestore\n| invertmatrix\n| ioerror\n| itransform\n| join\n| known\n| kshow\n| languagelevel\n| length\n| le\n| limitcheck\n| lineto\n| ln\n| load\n| lock\n| log\n| loop\n| lt\n| makefont\n| makepattern\n| mark\n| matrix\n| maxlength\n| mod\n| monitor\n| moveto\n| mul\n| neg\n| newpath\n| ne\n| noaccess\n| nocurrentpoint\n| notify\n| not\n| nulldevice\n| null\n| or\n| packedarray\n| pathbbox\n| pathforall\n| pop\n| printobject\n| print\n| product\n| prompt\n| pstack\n| putinterval\n| put\n| quit\n| rand\n| rangecheck\n| rcheck\n| rcurveto\n| readhexstring\n| readline\n| readonly\n| readstring\n| read\n| realtime\n| rectclip\n| rectfill\n| rectstroke\n| rectviewclip\n| removeall\n| removeglyphs\n| renamefile\n| repeat\n| resetfile\n| resourceforall\n| resourcestatus\n| restore\n| reversepath\n| revision\n| rlineto\n| rmoveto\n| roll\n| rootfont\n| rotate\n| round\n| rrand\n| run\n| save\n| scalefont\n| scale\n| scheck\n| search\n| selectfont\n| serialnumber\n| serverdict\n| setbbox\n| setblackgeneration\n| setcachedevice2\n| setcachedevice\n| setcachelimit\n| setcacheparams\n| setcharwidth\n| setcmykcolor\n| setcolorrendering\n| setcolorscreen\n| setcolorspace\n| setcolortransfer\n| setcolor\n| setdash\n| setdevparams\n| setfileposition\n| setflat\n| setfont\n| setglobal\n| setgray\n| setgstate\n| sethalftonephase\n| sethalftone\n| sethsbcolor\n| setlinecap\n| setlinejoin\n| setlinewidth\n| setmatrix\n| setmiterlimit\n| setobjectformat\n| setoverprint\n| setpacking\n| setpagedevice\n| setpattern\n| setrgbcolor\n| setscreen\n| setshared\n| setsmoothness\n| setstrokeadjust\n| setsystemparams\n| settransfer\n| settrapparams\n| settrapzone\n| setucacheparams\n| setundercolorremoval\n| setuserparams\n| setvmthreshold\n| shareddict\n| shfill\n| showpage\n| show\n| sin\n| sqrt\n| srand\n| stackoverflow\n| stackunderflow\n| stack\n| startjob\n| start\n| statusdict\n| status\n| stopped\n| stop\n| store\n| stringwidth\n| string\n| strokepath\n| stroke\n| sub\n| syntaxerror\n| systemdict\n| timeout\n| token\n| transform\n| translate\n| true\n| truncate\n| typecheck\n| type\n| uappend\n| ucachestatus\n| ucache\n| ueofill\n| ufill\n| undefinedfilename\n| undefinedresource\n| undefinedresult\n| undefined\n| undefinefont\n| undefineresource\n| undefineuserobject\n| undef\n| unmatchedmark\n| unregistered\n| upath\n| usecmap\n| usefont\n| userdict\n| usertime\n| ustrokepath\n| ustroke\n| version\n| viewclippath\n| viewclip\n| vmreclaim\n| vmstatus\n| wait\n| wcheck\n| where\n| widthshow\n| writehexstring\n| writeobject\n| writestring\n| write\n| wtranslation\n| xcheck\n| xor\n| xshow\n| xyshow\n| yield\n| yshow\n) \\b (?![^/\\s{}()\u003c\u003e\\[\\]%])\n|\n# Stuff that starts with a non-word character\n(?\u003c=^|[/\\s{}()\u003c\u003e\\[\\]%])\n(=?=|\\$error)\n(?=$|[/\\s{}()\u003c\u003e\\[\\]%])"
316
+ },
317
+ "procedure": {
318
+ "name": "meta.procedure.postscript",
319
+ "begin": "{",
320
+ "end": "}",
321
+ "patterns": [
322
+ {
323
+ "include": "#main"
129
324
  }
130
325
  ],
131
326
  "beginCaptures": {
132
327
  "0": {
133
- "name": "punctuation.definition.string.begin.postscript"
328
+ "name": "punctuation.definition.procedure.begin.postscript"
134
329
  }
135
330
  },
136
331
  "endCaptures": {
137
332
  "0": {
138
- "name": "punctuation.definition.string.end.postscript"
333
+ "name": "punctuation.definition.procedure.end.postscript"
139
334
  }
140
335
  }
141
336
  },
142
- {
143
- "name": "string.other.hexadecimal.postscript",
144
- "begin": "\\\u003c",
145
- "end": "\\\u003e",
337
+ "radix": {
338
+ "name": "constant.numeric.radix.postscript",
339
+ "match": "[0-3]?[0-9]#[0-9a-zA-Z]+"
340
+ },
341
+ "string": {
342
+ "name": "string.other.postscript",
343
+ "begin": "\\(",
344
+ "end": "\\)",
146
345
  "patterns": [
147
346
  {
148
- "match": "[0-9A-Fa-f\\s]+"
149
- },
150
- {
151
- "name": "invalid.illegal.hexadecimal.char.postscript",
152
- "match": "."
347
+ "include": "#stringInnards"
153
348
  }
154
349
  ],
155
350
  "beginCaptures": {
@@ -163,37 +358,7 @@
163
358
  }
164
359
  }
165
360
  },
166
- {
167
- "name": "constant.numeric.radix.postscript",
168
- "match": "[0-3]?[0-9]#[0-9a-zA-Z]+"
169
- },
170
- {
171
- "name": "constant.numeric.postscript",
172
- "match": "(\\-|\\+)?\\d+(\\.\\d*)?([eE](\\-|\\+)?\\d+)?"
173
- },
174
- {
175
- "name": "constant.numeric.postscript",
176
- "match": "(\\-|\\+)?\\.\\d+([eE](\\-|\\+)?\\d+)?"
177
- },
178
- {
179
- "name": "keyword.operator.postscript",
180
- "match": "\\b(abs|add|aload|anchorsearch|and|arc|arcn|arct|arcto|array|ashow|astore|atan|awidthshow|begin|bind|bitshift|bytesavailable|cachestatus|ceiling|charpath|clear|cleartomark|cleardictstack|clip|clippath|closefile|closepath|colorimage|concat|concatmatrix|condition|configurationerror|copy|copypage|cos|count|countdictstack|countexecstack|counttomark|cshow|currentblackgeneration|currentcacheparams|currentcmykcolor|currentcolor|currentcolorrendering|currentcolorscreen|currentcolorspace|currentcolortransfer|currentcontext|currentdash|currentdevparams|currentdict|currentfile|currentflat|currentfont|currentglobal|currentgray|currentgstate|currenthalftone|currenthalftonephase|currenthsbcolor|currentlinecap|currentlinejoin|currentlinewidth|currentmatrix|currentmiterlimit|currentobjectformat|currentpacking|currentpagedevice|currentpoint|currentrgbcolor|currentscreen|currentshared|currentstrokeadjust|currentsystemparams|currenttransfer|currentundercolorremoval|currentuserparams|curveto|cvi|cvlit|cvn|cvr|cvrs|cvs|cvx|def|defaultmatrix|definefont|defineresource|defineusername|defineuserobject|deletefile|detach|deviceinfo|dict|dictfull|dictstack|dictstackoverflow|dictstackunderflow|div|dtransform|dup|echo|eexec|end|eoclip|eofill|eoviewclip|eq|erasepage|errordict|exch|exec|execform|execstack|execstackoverflow|execuserobject|executeonly|executive|exit|exp|false|file|filenameforall|fileposition|fill|filter|findencoding|findfont|findresource|flattenpath|floor|flush|flushfile|FontDirectory|for|forall|fork|ge|get|getinterval|globaldict|GlobalFontDirectory|glyphshow|grestore|grestoreall|gsave|gstate|gt|handleerror|identmatrix|idiv|idtransform|if|ifelse|image|imagemask|index|ineofill|infill|initclip|initgraphics|initmatrix|initviewclip|instroke|internaldict|interrupt|inueofill|inufill|inustroke|invalidaccess|invalidcontext|invalidexit|invalidfileaccess|invalidfont|invalidid|invalidrestore|invertmatrix|ioerror|ISOLatin1Encoding|itransform|join|kshow|known|languagelevel|le|length|limitcheck|lineto|ln|load|lock|log|loop|lt|makefont|makepattern|mark|matrix|maxlength|mod|monitor|moveto|mul|ne|neg|newpath|noaccess|nocurrentpoint|not|notify|null|nulldevice|or|packedarray|pathbbox|pathforall|pop|print|printobject|product|prompt|pstack|put|putinterval|quit|rand|rangecheck|rcurveto|read|readhexstring|readline|readonly|readstring|realtime|rectclip|rectfill|rectstroke|rectviewclip|renamefile|repeat|resetfile|resourceforall|resourcestatus|restore|reversepath|revision|rlineto|rmoveto|roll|rootfont|rotate|round|rrand|run|save|scale|scalefont|scheck|search|selectfont|serialnumber|setbbox|setblackgeneration|setcachedevice|setcachedevice2|setcachelimit|setcacheparams|setcharwidth|setcmykcolor|setcolor|setcolorrendering|setcolorscreen|setcolorspace|setcolortransfer|setdash|setdevparams|setfileposition|setflat|setfont|setglobal|setgray|setgstate|sethalftone|sethalftonephase|sethsbcolor|setlinecap|setlinejoin|setlinewidth|setmatrix|setmiterlimit|setobjectformat|setoverprint|setpacking|setpagedevice|setpattern|setrgbcolor|setscreen|setshared|setstrokeadjust|setsystemparams|settransfer|setucacheparams|setundercolorremoval|setuserparams|setvmthreshold|shareddict|show|showpage|sin|sqrt|srand|stack|stackoverflow|stackunderflow|StandardEncoding|start|startjob|status|statusdict|stop|stopped|store|string|stringwidth|stroke|strokepath|sub|syntaxerror|systemdict|timeout|transform|translate|true|truncate|type|typecheck|token|uappend|ucache|ucachestatus|ueofill|ufill|undef|undefined|undefinedfilename|undefineresource|undefinedresult|undefinefont|undefineresource|undefinedresource|undefineuserobject|unmatchedmark|unregistered|upath|userdict|UserObjects|usertime|ustroke|ustrokepath|version|viewclip|viewclippath|VMerror|vmreclaim|vmstatus|wait|wcheck|where|widthshow|write|writehexstring|writeobject|writestring|wtranslation|xcheck|xor|xshow|xyshow|yield|yshow)\\b"
181
- },
182
- {
183
- "name": "variable.other.immediately-evaluated.postscript",
184
- "match": "//[^\\(\\)\\\u003c\\\u003e\\[\\]\\{\\}\\/\\%\\s]+"
185
- },
186
- {
187
- "name": "variable.other.literal.postscript",
188
- "match": "/[^\\(\\)\\\u003c\\\u003e\\[\\]\\{\\}\\/\\%\\s]+"
189
- },
190
- {
191
- "name": "variable.other.name.postscript",
192
- "match": "[^\\(\\)\\\u003c\\\u003e\\[\\]\\{\\}\\/\\%\\s]+"
193
- }
194
- ],
195
- "repository": {
196
- "string_content": {
361
+ "stringInnards": {
197
362
  "patterns": [
198
363
  {
199
364
  "name": "constant.numeric.octal.postscript",
@@ -201,7 +366,7 @@
201
366
  },
202
367
  {
203
368
  "name": "constant.character.escape.postscript",
204
- "match": "\\\\(\\\\|[nrtbf\\(\\)]|[0-7]{1,3}|\\r?\\n)"
369
+ "match": "\\\\(\\\\|[bfnrt()]|[0-7]{1,3}|\\r?\\n)"
205
370
  },
206
371
  {
207
372
  "name": "invalid.illegal.unknown-escape.postscript.ignored",
@@ -212,11 +377,101 @@
212
377
  "end": "\\)",
213
378
  "patterns": [
214
379
  {
215
- "include": "#string_content"
380
+ "include": "#stringInnards"
216
381
  }
217
382
  ]
218
383
  }
219
384
  ]
220
385
  }
386
+ },
387
+ "injections": {
388
+ "L:source.postscript meta.document.pdf - (meta.encrypted-source | text.embedded)": {
389
+ "patterns": [
390
+ {
391
+ "name": "meta.encrypted-source.stream.pdf",
392
+ "begin": "(?:^|(?\u003c=\u003e\u003e)\\s*)(?=stream$)",
393
+ "end": "endstream|(?=endobj\\b)",
394
+ "patterns": [
395
+ {
396
+ "begin": "\\G(stream)\\s*$\\s*",
397
+ "end": "(?=endstream|(?=endobj\\b))",
398
+ "patterns": [
399
+ {
400
+ "contentName": "text.embedded.xml",
401
+ "begin": "(\u003c\\?xpacket(?=\\s)[^\u003e]+\\?\u003e)(?=$|\u003cx:xmpmeta)",
402
+ "end": "(\u003c\\?xpacket(?=\\s)[^\u003e]*end\\b[^\u003e]*\\?\u003e)|(?=\\s*(?:endstream|endobj\\b))",
403
+ "patterns": [
404
+ {
405
+ "include": "text.xml"
406
+ }
407
+ ],
408
+ "beginCaptures": {
409
+ "1": {
410
+ "name": "text.embedded.xml",
411
+ "patterns": [
412
+ {
413
+ "include": "text.xml"
414
+ }
415
+ ]
416
+ }
417
+ },
418
+ "endCaptures": {
419
+ "1": {
420
+ "name": "text.embedded.xml",
421
+ "patterns": [
422
+ {
423
+ "include": "text.xml"
424
+ }
425
+ ]
426
+ }
427
+ }
428
+ },
429
+ {
430
+ "name": "string.other.base85.pdf",
431
+ "begin": "(?!endstream)[!-uz]{50,80}\\s*$",
432
+ "end": "~\u003e|(?=\\s*(?:endstream|endobj\\b))",
433
+ "endCaptures": {
434
+ "0": {
435
+ "name": "punctuation.definition.string.end.pdf"
436
+ }
437
+ }
438
+ },
439
+ {
440
+ "name": "string.other.raw.binary.pdf",
441
+ "contentName": "sublimelinter.gutter-mark",
442
+ "begin": "(?!endstream|[!-uz]{50,80}\\s*$)(?:(?\u003c=[\\n\\r]|\\G|^))(?=.)",
443
+ "end": "(?=\\s*(?:endstream|endobj\\b))"
444
+ }
445
+ ],
446
+ "beginCaptures": {
447
+ "1": {
448
+ "name": "keyword.control.stream.begin.pdf"
449
+ }
450
+ }
451
+ }
452
+ ],
453
+ "endCaptures": {
454
+ "0": {
455
+ "name": "keyword.control.stream.end.pdf"
456
+ }
457
+ }
458
+ },
459
+ {
460
+ "match": "(?\u003c![^/\\s{}()\u003c\u003e\\[\\]%])\\b(obj)\\s*(?=\u003c\u003c|$)|(?\u003c=^|\\n|\u003e\u003e)(endobj)",
461
+ "captures": {
462
+ "1": {
463
+ "name": "keyword.control.object.begin.pdf"
464
+ },
465
+ "2": {
466
+ "name": "keyword.control.object.end.pdf"
467
+ }
468
+ }
469
+ },
470
+ {
471
+ "name": "keyword.control.$1.pdf",
472
+ "match": "(?\u003c![^/\\s{}()\u003c\u003e\\[\\]%])\\b(trailer|startxref)(?![^/\\s{}()\u003c\u003e\\[\\]%])"
473
+ }
474
+ ]
475
+ }
221
476
  }
222
477
  }