github-linguist 5.0.8 → 5.0.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. checksums.yaml +4 -4
  2. data/bin/linguist +1 -1
  3. data/grammars/source.assembly.json +2 -1
  4. data/grammars/source.clean.json +1 -1
  5. data/grammars/source.clojure.json +13 -3
  6. data/grammars/source.coffee.json +2 -2
  7. data/grammars/source.csound-document.json +1 -2
  8. data/grammars/source.csound.json +1 -1
  9. data/grammars/source.css.json +7 -7
  10. data/grammars/source.ditroff.json +5 -5
  11. data/grammars/source.elixir.json +2 -2
  12. data/grammars/source.gfm.json +31 -3
  13. data/grammars/source.harbour.json +21 -51
  14. data/grammars/source.jison.json +16 -16
  15. data/grammars/source.jisonlex.json +6 -6
  16. data/grammars/source.jolie.json +138 -0
  17. data/grammars/source.nim.json +20 -5
  18. data/grammars/source.perl6fe.json +3 -3
  19. data/grammars/source.python.json +23 -23
  20. data/grammars/source.renpy.json +2 -2
  21. data/grammars/source.solidity.json +2 -2
  22. data/grammars/source.sqf.json +1 -1
  23. data/grammars/source.terraform.json +78 -25
  24. data/grammars/source.ts.json +176 -157
  25. data/grammars/source.tsx.json +176 -157
  26. data/grammars/source.yaml.json +5 -4
  27. data/grammars/text.html.basic.json +212 -60
  28. data/grammars/text.html.ecr.json +1 -1
  29. data/grammars/text.html.php.blade.json +607 -264
  30. data/grammars/text.html.php.json +18 -14
  31. data/grammars/text.html.vue.json +10 -10
  32. data/grammars/text.marko.json +13 -2
  33. data/grammars/{source.gfm.clean.json → text.restructuredtext.clean.json} +4 -5
  34. data/grammars/text.restructuredtext.json +4 -3
  35. data/grammars/text.roff.json +390 -23
  36. data/grammars/text.tex.latex.json +1 -1
  37. data/lib/linguist.rb +1 -1
  38. data/lib/linguist/heuristics.rb +27 -18
  39. data/lib/linguist/languages.json +1 -1
  40. data/lib/linguist/languages.yml +39 -2
  41. data/lib/linguist/samples.json +1999 -737
  42. data/lib/linguist/version.rb +1 -1
  43. metadata +5 -4
@@ -10,11 +10,11 @@
10
10
  "aw",
11
11
  "ctp"
12
12
  ],
13
- "firstLineMatch": "^#!.*(?<!-)php[0-9]{0,1}\\b",
13
+ "firstLineMatch": "^#!.*(?<!-)php[0-9]{0,1}\\b|<\\?php",
14
14
  "foldingStartMarker": "(/\\*|\\{\\s*$|<<<HTML)",
15
15
  "foldingStopMarker": "(\\*/|^\\s*\\}|^HTML;)",
16
16
  "injections": {
17
- "text.html.php - (meta.embedded | meta.tag), L:text.html.php meta.tag, L:source.js.embedded.html": {
17
+ "^text.html - (meta.embedded | meta.tag), L:^text.html meta.tag, L:text.html.php source.js": {
18
18
  "patterns": [
19
19
  {
20
20
  "begin": "(^\\s*)(?=<\\?(?![^?]*\\?>))",
@@ -149,7 +149,7 @@
149
149
  "name": "punctuation.separator.inheritance.php"
150
150
  }
151
151
  },
152
- "match": "(?i)(\\\\)?\\b(st(dClass|reamWrapper)|R(RD(Graph|Creator|Updater)|untimeException|e(sourceBundle|cursive(RegexIterator|Ca(chingIterator|llbackFilterIterator)|TreeIterator|Iterator(Iterator)?|DirectoryIterator|FilterIterator|ArrayIterator)|flect(ion(Generator|Method|Class|Type|ZendExtension|Object|P(arameter|roperty)|Extension|Function(Abstract)?)?|or)|gexIterator)|angeException)|G(ender\\\\Gender|lobIterator|magick(Draw|Pixel)?)|X(sltProcessor|ML(Reader|Diff\\\\(Memory|Base|DOM|File)|Writer)|SLTProcessor)|M(ysqlndUh(Connection|PreparedStatement)|ongo(Re(sultException|gex)|Grid(fsFile|FS(Cursor|File)?)|BinData|C(o(de|llection|mmandCursor)|ursor(Interface|Exception)?|lient)|Timestamp|I(n(sertBatch|t(32|64))|d)|D(B(Ref|\\\\(BSON\\\\(Regex|Binary|Serializable|Timestamp|ObjectID|U(nserializable|TCDatetime)|Javascript)|Driver\\\\(ReadPreference|Manager|BulkWrite|Server|C(ommand|ursor(Id)?)|Query|Write(Result|Concern(Error)?|E(rror|xception)))))?|eleteBatch|ate)|UpdateBatch|Pool|Write(Batch|ConcernException)|Log)?|u(tex|ltipleIterator)|e(ssageFormatter|mcache(d)?))|Bad(MethodCallException|FunctionCallException)|tidy(Node)?|S(ync(ReaderWriter|Mutex|Semaphore|Event)|impleXML(Iterator|Element)|oap(Server|Header|Client|Param|Var|Fault)|NMP|CA(_(SoapProxy|LocalProxy))?|p(hinxClient|oofchecker|l(M(inHeap|axHeap)|S(tack|ubject)|Heap|T(ype|empFileObject)|Ob(server|jectStorage)|DoublyLinkedList|PriorityQueue|Enum|Queue|Fi(le(Info|Object)|xedArray)))|e(ssionHandler(Interface)?|ekableIterator|rializable)|DO_(Model_(ReflectionDataObject|Type|Property)|Sequence|D(ata(Object|Factory)|AS_(Relational|XML(_Document)?|Setting|ChangeSummary|Data(Object|Factory)))|Exception|List)|wish(Result(s)?|Search)?|VM(Model)?|QLite(Result|3(Result|Stmt)?|Database|Unbuffered)|AM(Message|Connection))|H(RTime\\\\(StopWatch|PerformanceCounter)|ttp(Re(sponse|quest(Pool)?)|Message|InflateStream|DeflateStream|QueryString)|aru(Image|Outline|D(oc|estination)|Page|Encoder|Font|Annotation))|Ya(f_(R(oute(_(Re(write|gex)|Map|S(tatic|imple|upervar)|Interface)|r)|e(sponse_Abstract|quest_(Simple|Http|Abstract)|gistry))|Session|Con(troller_Abstract|fig_(Simple|Ini|Abstract))|Dispatcher|Plugin_Abstract|Exception|View_(Simple|Interface)|Loader|A(ction_Abstract|pplication))|r_(Server(_Exception)?|C(oncurrent_Client|lient(_Exception)?)))|N(o(RewindIterator|rmalizer)|umberFormatter)|C(o(nd|untable|ll(ectable|ator))|URLFile|a(chingIterator|llbackFilterIterator))|T(hread(ed)?|okyoTyrant(Table|Iterator|Query)?|ra(nsliterator|versable))|I(n(tl(RuleBasedBreakIterator|BreakIterator|C(har|odePointBreakIterator|alendar)|TimeZone|Iterator|DateFormatter|PartsIterator)|validArgumentException|finiteIterator)|terator(Iterator|Aggregate)?|magick(Draw|Pixel(Iterator)?|Kernel)?)|php_user_filter|Z(MQ(Socket|Context|Device|Poll)?|ipArchive)|O(CI-(Collection|Lob)|ut(erIterator|Of(RangeException|BoundsException))|verflowException)|D(irectory(Iterator)?|omainException|OM(XPath|N(ode(list)?|amedNodeMap)|C(haracterData|omment|dataSection)|Text|Implementation|Document(Fragment)?|ProcessingInstruction|E(ntityReference|lement)|Attr)|ate(Time(I(nterface|mmutable)|Zone)?|Interval|Period))|U(n(derflowException|expectedValueException)|Converter)|JsonSerializable|finfo|P(har(Data|FileInfo)?|ool|DO(Statement)?|arentIterator)|E(v(S(tat|ignal)|Ch(ild|eck)|Timer|I(o|dle)|ent(B(uffer(Event)?|ase)|SslContext|Http(Request|Connection)?|Config|DnsBase|Util|Listener)?|P(eriodic|repare)|Embed|Fork|Watcher|Loop)?|rrorException|xception|mptyIterator)|V(8Js(Exception)?|arnish(Stat|Log|Admin))|KTaglib_(MPEG_(File|AudioProperties)|Tag|ID3v2_(Tag|Frame|AttachedPictureFrame))|QuickHash(StringIntHash|Int(S(tringHash|et)|Hash))|F(il(terIterator|esystemIterator)|ANNConnection)|mysqli(_(stmt|driver|warning|result))?|W(orker|eak(Map|ref))|L(imitIterator|o(cale|gicException)|ua(Closure)?|engthException|apack)|A(ppendIterator|PCIterator|rray(Iterator|Object|Access)))\\b",
152
+ "match": "(?i)(\\\\)?\\b(st(dClass|reamWrapper)|R(RD(Graph|Creator|Updater)|untimeException|e(sourceBundle|cursive(RegexIterator|Ca(chingIterator|llbackFilterIterator)|TreeIterator|Iterator(Iterator)?|DirectoryIterator|FilterIterator|ArrayIterator)|flect(ion(Generator|Method|Class|Type|ZendExtension|Object|P(arameter|roperty)|Extension|Function(Abstract)?)?|or)|gexIterator)|angeException)|G(ender\\\\Gender|lobIterator|magick(Draw|Pixel)?)|X(sltProcessor|ML(Reader|Diff\\\\(Memory|Base|DOM|File)|Writer)|SLTProcessor)|M(ysqlndUh(Connection|PreparedStatement)|ongo(Re(sultException|gex)|Grid(fsFile|FS(Cursor|File)?)|BinData|C(o(de|llection|mmandCursor)|ursor(Interface|Exception)?|lient)|Timestamp|I(n(sertBatch|t(32|64))|d)|D(B(Ref|\\\\(BSON\\\\(Regex|M(inKey|axKey)|Binary|Serializable|Timestamp|ObjectID|Decimal128|U(nserializable|TCDateTime)|Javascript)|Driver\\\\(Read(Concern|Preference)|Manager|BulkWrite|Server|C(ommand|ursor(Id)?)|Exception\\\\WriteException|Query|Write(Result|Concern(Error)?|Error))))?|eleteBatch|ate)|UpdateBatch|Pool|Write(Batch|ConcernException)|Log)?|u(tex|ltipleIterator)|e(ssageFormatter|mcache(d)?))|Bad(MethodCallException|FunctionCallException)|tidy(Node)?|S(ync(ReaderWriter|Mutex|S(haredMemory|emaphore)|Event)|impleXML(Iterator|Element)|oap(Server|Header|Client|Param|Var|Fault)|NMP|CA(_(SoapProxy|LocalProxy))?|p(hinxClient|oofchecker|l(M(inHeap|axHeap)|S(tack|ubject)|Heap|T(ype|empFileObject)|Ob(server|jectStorage)|DoublyLinkedList|PriorityQueue|Enum|Queue|Fi(le(Info|Object)|xedArray)))|e(ssionHandler(Interface)?|ekableIterator|rializable)|DO_(Model_(ReflectionDataObject|Type|Property)|Sequence|D(ata(Object|Factory)|AS_(Relational|XML(_Document)?|Setting|ChangeSummary|Data(Object|Factory)))|Exception|List)|wish(Result(s)?|Search)?|VM(Model)?|QLite(Result|3(Result|Stmt)?|Database|Unbuffered)|AM(Message|Connection))|H(RTime\\\\(StopWatch|PerformanceCounter)|aru(Image|Outline|D(oc|estination)|Page|Encoder|Font|Annotation))|Ya(f_(R(oute(_(Re(write|gex)|Map|S(tatic|imple|upervar)|Interface)|r)|e(sponse_Abstract|quest_(Simple|Http|Abstract)|gistry))|Session|Con(troller_Abstract|fig_(Simple|Ini|Abstract))|Dispatcher|Plugin_Abstract|Exception|View_(Simple|Interface)|Loader|A(ction_Abstract|pplication))|r_(Server(_Exception)?|C(oncurrent_Client|lient(_Exception)?)))|N(o(RewindIterator|rmalizer)|umberFormatter)|C(o(nd|untable|ll(ectable|ator))|URLFile|a(chingIterator|llbackFilterIterator))|T(hread(ed)?|okyoTyrant(Table|Iterator|Query)?|ra(nsliterator|versable))|I(n(tl(RuleBasedBreakIterator|BreakIterator|C(har|odePointBreakIterator|alendar)|TimeZone|Iterator|DateFormatter|PartsIterator)|validArgumentException|finiteIterator)|terator(Iterator|Aggregate)?|magick(Draw|Pixel(Iterator)?|Kernel)?)|php_user_filter|Z(MQ(Socket|Context|Device|Poll)?|ipArchive|ookeeper)|O(CI-(Collection|Lob)|ut(erIterator|Of(RangeException|BoundsException))|verflowException)|D(s\\\\(Map|S(tack|e(t|quence))|Hashable|Collection|Deque|P(air|riorityQueue)|Vector|Queue)|irectory(Iterator)?|omainException|OM(XPath|N(ode(list)?|amedNodeMap)|C(haracterData|omment|dataSection)|Text|Implementation|Document(Fragment)?|ProcessingInstruction|E(ntityReference|lement)|Attr)|ate(Time(I(nterface|mmutable)|Zone)?|Interval|Period))|U(n(derflowException|expectedValueException)|Converter|I\\\\(Menu(Item)?|Size|Control(s\\\\(Radio|Gr(id|oup)|MultilineEntry|B(ox|utton)|S(pin|eparator|lider)|C(heck|o(lorButton|mbo))|Tab|P(icker|rogress)|E(ntry|ditableCombo)|Form|Label))?|Draw\\\\(Matrix|Brush(\\\\(RadialGradient|Gradient|LinearGradient))?|Stroke|Color|Text\\\\(Font(\\\\Descriptor)?|Layout)|P(en|ath))|Point|Executor|Window|Area))|JsonSerializable|finfo|P(har(Data|FileInfo)?|ool|DO(Statement)?|arentIterator)|E(v(S(tat|ignal)|Ch(ild|eck)|Timer|I(o|dle)|ent(B(uffer(Event)?|ase)|SslContext|Http(Request|Connection)?|Config|DnsBase|Util|Listener)?|P(eriodic|repare)|Embed|Fork|Watcher|Loop)?|rrorException|xception|mptyIterator)|V(8Js(Exception)?|arnish(Stat|Log|Admin))|KTaglib_(MPEG_(File|AudioProperties)|Tag|ID3v2_(Tag|Frame|AttachedPictureFrame))|QuickHash(StringIntHash|Int(S(tringHash|et)|Hash))|F(il(terIterator|esystemIterator)|ANNConnection)|mysqli(_(stmt|driver|warning|result))?|W(orker|eak(Map|ref))|L(imitIterator|o(cale|gicException)|ua(Closure)?|engthException|apack)|A(ppendIterator|PC(Iterator|UIterator)|rray(Iterator|Object|Access)))\\b",
153
153
  "name": "support.class.builtin.php"
154
154
  }
155
155
  ]
@@ -2053,6 +2053,10 @@
2053
2053
  "match": "(?i)\\bapc_(s(tore|ma_info)|c(ompile_file|lear_cache|a(s|che_info))|inc|de(c|fine_constants|lete(_file)?)|exists|fetch|load_constants|add|bin_(dump(file)?|load(file)?))\\b",
2054
2054
  "name": "support.function.apc.php"
2055
2055
  },
2056
+ {
2057
+ "match": "(?i)\\bapcu_(s(tore|ma_info)|c(lear_cache|a(s|che_info))|inc|de(c|lete)|e(ntry|xists)|fetch|add)\\b",
2058
+ "name": "support.function.apcu.php"
2059
+ },
2056
2060
  {
2057
2061
  "match": "(?i)\\b(s(huffle|izeof|ort)|n(ext|at(sort|casesort))|c(o(unt|mpact)|urrent)|in_array|u(sort|ksort|asort)|p(os|rev)|e(nd|ach|xtract)|k(sort|ey(_exists)?|rsort)|list|a(sort|r(sort|ray(_(s(hift|um|plice|earch|lice)|c(h(unk|ange_key_case)|o(unt_values|lumn|mbine))|intersect(_(u(key|assoc)|key|assoc))?|diff(_(u(key|assoc)|key|assoc))?|u(n(shift|ique)|intersect(_(uassoc|assoc))?|diff(_(uassoc|assoc))?)|p(op|ush|ad|roduct)|values|key(s|_exists)|f(il(ter|l(_keys)?)|lip)|walk(_recursive)?|r(e(duce|place(_recursive)?|verse)|and)|m(ultisort|erge(_recursive)?|ap)))?))|r(sort|eset|ange))\\b",
2058
2062
  "name": "support.function.array.php"
@@ -2070,7 +2074,7 @@
2070
2074
  "name": "support.function.blenc.php"
2071
2075
  },
2072
2076
  {
2073
- "match": "(?i)\\bBSON\\\\(to(JSON|Array)|from(JSON|Array))\\b",
2077
+ "match": "(?i)\\bMongoDB\\BSON\\(to(JSON|PHP)|from(JSON|PHP))\\b",
2074
2078
  "name": "support.function.bson.php"
2075
2079
  },
2076
2080
  {
@@ -2177,10 +2181,6 @@
2177
2181
  "match": "(?i)\\bhash(_(hmac(_file)?|copy|init|update(_(stream|file))?|pbkdf2|equals|fi(nal|le)|algos))?\\b",
2178
2182
  "name": "support.function.hash.php"
2179
2183
  },
2180
- {
2181
- "match": "(?i)\\b(http_(s(upport|end_(st(atus|ream)|content_(type|disposition)|data|file|last_modified))|head|negotiate_(c(harset|ontent_type)|language)|c(hunked_decode|ache_(etag|last_modified))|throttle|inflate|d(eflate|ate)|p(ost_(data|fields)|ut_(stream|data|file)|ersistent_handles_(c(ount|lean)|ident)|arse_(headers|cookie|params|message))|re(direct|quest(_(method_(name|unregister|exists|register)|body_encode))?)|get(_request_(headers|body(_stream)?))?|match_(etag|request_header|modified)|build_(str|cookie|url))|ob_(inflatehandler|deflatehandler|etaghandler))\\b",
2182
- "name": "support.function.http.php"
2183
- },
2184
2184
  {
2185
2185
  "match": "(?i)\\b(iconv(_(s(tr(pos|len|rpos)|ubstr|et_encoding)|get_encoding|mime_(decode(_headers)?|encode)))?|ob_iconv_handler)\\b",
2186
2186
  "name": "support.function.iconv.php"
@@ -2190,7 +2190,7 @@
2190
2190
  "name": "support.function.iisfunc.php"
2191
2191
  },
2192
2192
  {
2193
- "match": "(?i)\\b(i(ptc(parse|embed)|mage(s(y|cale|tring(up)?|et(style|t(hickness|ile)|interpolation|pixel|brush)|avealpha|x)|c(har(up)?|o(nvolution|py(res(ized|ampled)|merge(gray)?)?|lor(s(total|et|forindex)|closest(hwb|alpha)?|transparent|deallocate|exact(alpha)?|a(t|llocate(alpha)?)|resolve(alpha)?|match))|r(op(auto)?|eate(truecolor|from(string|jpeg|png|w(ebp|bmp)|g(if|d(2(part)?)?)|x(pm|bm)))?))|t(ypes|tf(text|bbox)|ruecolortopalette)|i(struecolor|nterlace)|2wbmp|d(estroy|ashedline)|jpeg|_type_to_(extension|mime_type)|p(s(slantfont|text|e(ncodefont|xtendfont)|freefont|loadfont|bbox)|ng|olygon|alette(copy|totruecolor))|ellipse|f(t(text|bbox)|il(ter|l(toborder|ed(polygon|ellipse|arc|rectangle))?)|ont(height|width)|lip)|w(ebp|bmp)|l(ine|oadfont|ayereffect)|a(ntialias|ffine(matrix(concat|get))?|lphablending|rc)|r(otate|ectangle)|g(if|d(2)?|ammacorrect|rab(screen|window))|xbm))|jpeg2wbmp|png2wbmp|g(d_info|etimagesize(fromstring)?))\\b",
2193
+ "match": "(?i)\\b(i(ptc(parse|embed)|mage(s(y|cale|tring(up)?|et(style|clip|t(hickness|ile)|interpolation|pixel|brush)|avealpha|x)|c(har(up)?|o(nvolution|py(res(ized|ampled)|merge(gray)?)?|lor(s(total|et|forindex)|closest(hwb|alpha)?|transparent|deallocate|exact(alpha)?|a(t|llocate(alpha)?)|resolve(alpha)?|match))|r(op(auto)?|eate(truecolor|from(string|jpeg|png|w(ebp|bmp)|g(if|d(2(part)?)?)|x(pm|bm)|bmp))?))|t(ypes|tf(text|bbox)|ruecolortopalette)|i(struecolor|nterlace)|2wbmp|openpolygon|d(estroy|ashedline)|jpeg|_type_to_(extension|mime_type)|p(s(slantfont|text|e(ncodefont|xtendfont)|freefont|loadfont|bbox)|ng|olygon|alette(copy|totruecolor))|ellipse|f(t(text|bbox)|il(ter|l(toborder|ed(polygon|ellipse|arc|rectangle))?)|ont(height|width)|lip)|w(ebp|bmp)|l(ine|oadfont|ayereffect)|a(ntialias|ffine(matrix(concat|get))?|lphablending|rc)|r(otate|e(solution|ctangle))|g(if|d(2)?|etclip|ammacorrect|rab(screen|window))|xbm|bmp))|jpeg2wbmp|png2wbmp|g(d_info|etimagesize(fromstring)?))\\b",
2194
2194
  "name": "support.function.image.php"
2195
2195
  },
2196
2196
  {
@@ -2202,7 +2202,7 @@
2202
2202
  "name": "support.function.interbase.php"
2203
2203
  },
2204
2204
  {
2205
- "match": "(?i)\\b(n(ormalizer_(normalize|is_normalized)|umfmt_(set_(symbol|text_attribute|pattern|attribute)|create|parse(_currency)?|format(_currency)?|get_(symbol|text_attribute|pattern|error_(code|message)|locale|attribute)))|collator_(s(ort(_with_sort_keys)?|et_(strength|attribute))|c(ompare|reate)|asort|get_(s(trength|ort_key)|error_(code|message)|locale|attribute))|transliterator_(create(_(inverse|from_rules))?|transliterate|list_ids|get_error_(code|message))|i(ntl(cal_get_error_(code|message)|tz_get_error_(code|message)|_(is_failure|error_name|get_error_(code|message)))|dn_to_(u(nicode|tf8)|ascii))|datefmt_(set_(calendar|timezone(_id)?|pattern|lenient)|create|is_lenient|parse|format(_object)?|localtime|get_(calendar(_object)?|time(type|zone(_id)?)|datetype|pattern|error_(code|message)|locale))|locale_(set_default|c(ompose|anonicalize)|parse|filter_matches|lookup|accept_from_http|get_(script|d(isplay_(script|name|variant|language|region)|efault)|primary_language|keywords|all_variants|region))|resourcebundle_(c(ount|reate)|locales|get(_error_(code|message))?)|grapheme_(s(tr(str|i(str|pos)|pos|len|r(ipos|pos))|ubstr)|extract)|msgfmt_(set_pattern|create|parse(_message)?|format(_message)?|get_(pattern|error_(code|message)|locale)))\\b",
2205
+ "match": "(?i)\\b(n(ormalizer_(normalize|is_normalized)|umfmt_(set_(symbol|text_attribute|pattern|attribute)|create|parse(_currency)?|format(_currency)?|get_(symbol|text_attribute|pattern|error_(code|message)|locale|attribute)))|collator_(s(ort(_with_sort_keys)?|et_(strength|attribute))|c(ompare|reate)|asort|get_(s(trength|ort_key)|error_(code|message)|locale|attribute))|transliterator_(create(_(inverse|from_rules))?|transliterate|list_ids|get_error_(code|message))|i(ntl(cal_get_error_(code|message)|tz_get_error_(code|message)|_(is_failure|error_name|get_error_(code|message)))|dn_to_(utf8|ascii))|datefmt_(set_(calendar|timezone(_id)?|pattern|lenient)|create|is_lenient|parse|format(_object)?|localtime|get_(calendar(_object)?|time(type|zone(_id)?)|datetype|pattern|error_(code|message)|locale))|locale_(set_default|c(ompose|anonicalize)|parse|filter_matches|lookup|accept_from_http|get_(script|d(isplay_(script|name|variant|language|region)|efault)|primary_language|keywords|all_variants|region))|resourcebundle_(c(ount|reate)|locales|get(_error_(code|message))?)|grapheme_(s(tr(str|i(str|pos)|pos|len|r(ipos|pos))|ubstr)|extract)|msgfmt_(set_pattern|create|parse(_message)?|format(_message)?|get_(pattern|error_(code|message)|locale)))\\b",
2206
2206
  "name": "support.function.intl.php"
2207
2207
  },
2208
2208
  {
@@ -2298,7 +2298,7 @@
2298
2298
  "name": "support.function.password.php"
2299
2299
  },
2300
2300
  {
2301
- "match": "(?i)\\bpcntl_(s(trerror|ig(nal(_dispatch)?|timedwait|procmask|waitinfo)|etpriority)|e(rrno|xec)|fork|w(stopsig|termsig|if(s(topped|ignaled)|exited)|exitstatus|ait(pid)?)|alarm|get(_last_error|priority))\\b",
2301
+ "match": "(?i)\\bpcntl_(s(trerror|ig(nal(_(dispatch|get_handler))?|timedwait|procmask|waitinfo)|etpriority)|e(rrno|xec)|fork|w(stopsig|termsig|if(s(topped|ignaled)|exited)|exitstatus|ait(pid)?)|alarm|get(_last_error|priority))\\b",
2302
2302
  "name": "support.function.pcntl.php"
2303
2303
  },
2304
2304
  {
@@ -2370,7 +2370,7 @@
2370
2370
  "name": "support.function.sem.php"
2371
2371
  },
2372
2372
  {
2373
- "match": "(?i)\\bsession_(s(ta(tus|rt)|et_(save_handler|cookie_params)|ave_path)|name|c(ommit|ache_(expire|limiter))|i(s_registered|d)|de(stroy|code)|un(set|register)|encode|write_close|abort|re(set|g(ister(_shutdown)?|enerate_id))|get_cookie_params|module_name)\\b",
2373
+ "match": "(?i)\\bsession_(s(ta(tus|rt)|et_(save_handler|cookie_params)|ave_path)|name|c(ommit|ache_(expire|limiter)|reate_id)|i(s_registered|d)|de(stroy|code)|un(set|register)|encode|write_close|abort|re(set|g(ister(_shutdown)?|enerate_id))|g(c|et_cookie_params)|module_name)\\b",
2374
2374
  "name": "support.function.session.php"
2375
2375
  },
2376
2376
  {
@@ -2390,7 +2390,7 @@
2390
2390
  "name": "support.function.soap.php"
2391
2391
  },
2392
2392
  {
2393
- "match": "(?i)\\bsocket_(s(hutdown|trerror|e(nd(to|msg)?|t_(nonblock|option|block)|lect))|c(onnect|l(ose|ear_error)|reate(_(pair|listen))?|msg_space)|import_stream|write|l(isten|ast_error)|accept|re(cv(from|msg)?|ad)|get(sockname|_option|peername)|bind)\\b",
2393
+ "match": "(?i)\\bsocket_(s(hutdown|trerror|e(nd(to|msg)?|t(opt|_(nonblock|option|block))|lect))|c(onnect|l(ose|ear_error)|reate(_(pair|listen))?|msg_space)|import_stream|write|l(isten|ast_error)|accept|re(cv(from|msg)?|ad)|get(sockname|opt|_option|peername)|bind)\\b",
2394
2394
  "name": "support.function.sockets.php"
2395
2395
  },
2396
2396
  {
@@ -2433,6 +2433,10 @@
2433
2433
  "match": "(?i)\\btrader_(s(t(och(f|rsi)?|ddev)|in(h)?|u(m|b)|et_(compat|unstable_period)|qrt|ar(ext)?|ma)|ht_(sine|trend(line|mode)|dcp(hase|eriod)|phasor)|natr|c(ci|o(s(h)?|rrel)|dl(s(ho(otingstar|rtline)|t(icksandwich|alledpattern)|pinningtop|eparatinglines)|h(i(kkake(mod)?|ghwave)|omingpigeon|a(ngingman|rami(cross)?|mmer))|c(o(ncealbabyswall|unterattack)|losingmarubozu)|t(hrusting|a(sukigap|kuri)|ristar)|i(n(neck|vertedhammer)|dentical3crows)|2crows|onneck|d(oji(star)?|arkcloudcover|ragonflydoji)|u(nique3river|psidegap2crows)|3(starsinsouth|inside|outside|whitesoldiers|linestrike|blackcrows)|piercing|e(ngulfing|vening(star|dojistar))|kicking(bylength)?|l(ongl(ine|eggeddoji)|adderbottom)|a(dvanceblock|bandonedbaby)|ri(sefall3methods|ckshawman)|g(apsidesidewhite|ravestonedoji)|xsidegap3methods|m(orning(star|dojistar)|a(t(hold|chinglow)|rubozu))|b(elthold|reakaway))|eil|mo)|t(sf|ypprice|3|ema|an(h)?|r(i(x|ma)|ange))|obv|d(iv|ema|x)|ultosc|p(po|lus_d(i|m))|e(rrno|xp|ma)|var|kama|floor|w(clprice|illr|ma)|l(n|inearreg(_(slope|intercept|angle))?|og10)|a(sin|cos|t(an|r)|d(osc|d|x(r)?)?|po|vgprice|roon(osc)?)|r(si|oc(p|r(100)?)?)|get_(compat|unstable_period)|m(i(n(index|us_d(i|m)|max(index)?)?|dp(oint|rice))|om|ult|edprice|fi|a(cd(ext|fix)?|vp|x(index)?|ma)?)|b(op|eta|bands))\\b",
2434
2434
  "name": "support.function.trader.php"
2435
2435
  },
2436
+ {
2437
+ "match": "(?i)\\bUI\\(Draw\\Text\\Font\\fontFamilies|quit|run)\\b",
2438
+ "name": "support.function.ui.php"
2439
+ },
2436
2440
  {
2437
2441
  "match": "(?i)\\buopz_(co(py|mpose)|implement|overload|delete|undefine|extend|f(unction|lags)|re(store|name|define)|backup)\\b",
2438
2442
  "name": "support.function.uopz.php"
@@ -2466,7 +2470,7 @@
2466
2470
  "name": "support.function.xmlwriter.php"
2467
2471
  },
2468
2472
  {
2469
- "match": "(?i)\\b(zlib_(decode|encode|get_coding_type)|readgzfile|gz(seek|c(ompress|lose)|tell|inflate|open|de(code|flate)|uncompress|p(uts|assthru)|e(ncode|of)|file|write|re(wind|ad)|get(s(s)?|c)))\\b",
2473
+ "match": "(?i)\\b(inflate_(init|add)|zlib_(decode|encode|get_coding_type)|deflate_(init|add)|readgzfile|gz(seek|c(ompress|lose)|tell|inflate|open|de(code|flate)|uncompress|p(uts|assthru)|e(ncode|of)|file|write|re(wind|ad)|get(s(s)?|c)))\\b",
2470
2474
  "name": "support.function.zlib.php"
2471
2475
  },
2472
2476
  {
@@ -123,7 +123,7 @@
123
123
  ]
124
124
  },
125
125
  {
126
- "begin": "(?:^\\s+)?(<)((?i:template))\\b(?=[^>]*lang=\"slm(?:\\?[^\"]*)?\")",
126
+ "begin": "(?:^\\s+)?(<)((?i:template))\\b(?=[^>]*lang=['\"]slm(?:\\?[^\"]*)?['\"])",
127
127
  "captures": {
128
128
  "1": {
129
129
  "name": "punctuation.definition.tag.begin.html"
@@ -158,7 +158,7 @@
158
158
  ]
159
159
  },
160
160
  {
161
- "begin": "(?:^\\s+)?(<)((?i:template))\\b(?=[^>]*lang=\"jade(?:\\?[^\"]*)?\")",
161
+ "begin": "(?:^\\s+)?(<)((?i:template))\\b(?=[^>]*lang=['\"]jade(?:\\?[^\"]*)?['\"])",
162
162
  "captures": {
163
163
  "1": {
164
164
  "name": "punctuation.definition.tag.begin.html"
@@ -193,7 +193,7 @@
193
193
  ]
194
194
  },
195
195
  {
196
- "begin": "(?:^\\s+)?(<)((?i:template))\\b(?=[^>]*lang=\"pug(?:\\?[^\"]*)?\")",
196
+ "begin": "(?:^\\s+)?(<)((?i:template))\\b(?=[^>]*lang=['\"]pug(?:\\?[^\"]*)?['\"])",
197
197
  "captures": {
198
198
  "1": {
199
199
  "name": "punctuation.definition.tag.begin.html"
@@ -228,7 +228,7 @@
228
228
  ]
229
229
  },
230
230
  {
231
- "begin": "(?:^\\s+)?(<)((?i:style))\\b(?=[^>]*lang=\"stylus(?:\\?[^\"]*)?\")",
231
+ "begin": "(?:^\\s+)?(<)((?i:style))\\b(?=[^>]*lang=['\"]stylus(?:\\?[^\"]*)?['\"])",
232
232
  "captures": {
233
233
  "1": {
234
234
  "name": "punctuation.definition.tag.begin.html"
@@ -263,7 +263,7 @@
263
263
  ]
264
264
  },
265
265
  {
266
- "begin": "(?:^\\s+)?(<)((?i:style))\\b(?=[^>]*lang=\"postcss(?:\\?[^\"]*)?\")",
266
+ "begin": "(?:^\\s+)?(<)((?i:style))\\b(?=[^>]*lang=['\"]postcss(?:\\?[^\"]*)?['\"])",
267
267
  "captures": {
268
268
  "1": {
269
269
  "name": "punctuation.definition.tag.begin.html"
@@ -298,7 +298,7 @@
298
298
  ]
299
299
  },
300
300
  {
301
- "begin": "(?:^\\s+)?(<)((?i:style))\\b(?=[^>]*lang=\"(?:sass)(?:\\?[^\"]*)?\")",
301
+ "begin": "(?:^\\s+)?(<)((?i:style))\\b(?=[^>]*lang=['\"](?:sass)(?:\\?[^\"]*)?['\"])",
302
302
  "captures": {
303
303
  "1": {
304
304
  "name": "punctuation.definition.tag.begin.html"
@@ -336,7 +336,7 @@
336
336
  ]
337
337
  },
338
338
  {
339
- "begin": "(?:^\\s+)?(<)((?i:style))\\b(?=[^>]*lang=\"(?:scss)(?:\\?[^\"]*)?\")",
339
+ "begin": "(?:^\\s+)?(<)((?i:style))\\b(?=[^>]*lang=['\"](?:scss)(?:\\?[^\"]*)?['\"])",
340
340
  "captures": {
341
341
  "1": {
342
342
  "name": "punctuation.definition.tag.begin.html"
@@ -374,7 +374,7 @@
374
374
  ]
375
375
  },
376
376
  {
377
- "begin": "(?:^\\s+)?(<)((?i:style))\\b(?=[^>]*lang=\"less(?:\\?[^\"]*)?\")",
377
+ "begin": "(?:^\\s+)?(<)((?i:style))\\b(?=[^>]*lang=['\"]less(?:\\?[^\"]*)?['\"])",
378
378
  "captures": {
379
379
  "1": {
380
380
  "name": "punctuation.definition.tag.begin.html"
@@ -444,7 +444,7 @@
444
444
  ]
445
445
  },
446
446
  {
447
- "begin": "(?:^\\s+)?(<)((?i:script))\\b(?=[^>]*lang=\"coffee(?:\\?[^\"]*)?\")",
447
+ "begin": "(?:^\\s+)?(<)((?i:script))\\b(?=[^>]*lang=['\"]coffee(?:\\?[^\"]*)?['\"])",
448
448
  "beginCaptures": {
449
449
  "1": {
450
450
  "name": "punctuation.definition.tag.begin.html"
@@ -484,7 +484,7 @@
484
484
  ]
485
485
  },
486
486
  {
487
- "begin": "(?:^\\s+)?(<)((?i:script))\\b(?=[^>]*lang=\"livescript(?:\\?[^\"]*)?\")",
487
+ "begin": "(?:^\\s+)?(<)((?i:script))\\b(?=[^>]*lang=['\"]livescript(?:\\?[^\"]*)?['\"])",
488
488
  "beginCaptures": {
489
489
  "1": {
490
490
  "name": "punctuation.definition.tag.begin.html"
@@ -160,6 +160,14 @@
160
160
  }
161
161
  ]
162
162
  },
163
+ "attr-special": {
164
+ "captures": {
165
+ "1": {
166
+ "name": "support.function.marko-attribute"
167
+ }
168
+ },
169
+ "match": "\\s+(else)\\b"
170
+ },
163
171
  "attr-stuff-concise": {
164
172
  "patterns": [
165
173
  {
@@ -209,6 +217,9 @@
209
217
  {
210
218
  "include": "#comment-block"
211
219
  },
220
+ {
221
+ "include": "#attr-special"
222
+ },
212
223
  {
213
224
  "include": "#attr-with-arg"
214
225
  },
@@ -1175,7 +1186,7 @@
1175
1186
  },
1176
1187
  "tag-name-custom-concise": {
1177
1188
  "applyEndPatternLast": 1,
1178
- "begin": "^\\s*(for|if|unless|else-if|else|var|assign|macro|invoke|include|app|await|[a-zA-Z0-9_]+([:-])[a-zA-Z0-9_:-]*|[@][a-zA-Z0-9_]+)(?=(\\s+(?![=])|$|[(]))",
1189
+ "begin": "^\\s*(for|if|unless|else-if|else|var|assign|macro|invoke|include|app|await|[a-zA-Z0-9_]+([:-])[a-zA-Z0-9_:-]*|[@][a-zA-Z0-9_-]+)(?=(\\s+(?![=])|$|[(]))",
1179
1190
  "beginCaptures": {
1180
1191
  "1": {
1181
1192
  "name": "support.function.marko-tag.concise"
@@ -1193,7 +1204,7 @@
1193
1204
  ]
1194
1205
  },
1195
1206
  "tag-name-custom-html": {
1196
- "begin": "(<)(for|if|unless|else-if|else|var|assign|macro|invoke|include|app|await|[a-zA-Z0-9_]+[-:][a-zA-Z0-9\\-_:]*|[@][a-zA-Z0-9_]+)(?=(>|/>|\\s|\\())",
1207
+ "begin": "(<)(for|if|unless|else-if|else|var|assign|macro|invoke|include|app|await|[a-zA-Z0-9_]+[-:][a-zA-Z0-9\\-_:]*|[@][a-zA-Z0-9_-]+)(?=(>|/>|\\s|\\())",
1197
1208
  "beginCaptures": {
1198
1209
  "1": {
1199
1210
  "name": "punctuation.definition.tag.begin.open.html"
@@ -1,18 +1,17 @@
1
1
  {
2
2
  "name": "Literate Clean",
3
- "scopeName": "source.gfm.clean",
3
+ "scopeName": "text.restructuredtext.clean",
4
4
  "fileTypes": [
5
5
  "lcl"
6
6
  ],
7
- "firstLineMatch": "^[><] module",
8
7
  "patterns": [
9
8
  {
10
9
  "name": "meta.embedded.clean",
11
- "begin": "^([><] )",
10
+ "begin": "^(>>?)",
12
11
  "end": "$",
13
12
  "captures": {
14
13
  "1": {
15
- "name": "support.quote.gfm"
14
+ "name": "punctuation.separator.literate.clean"
16
15
  }
17
16
  },
18
17
  "patterns": [
@@ -22,7 +21,7 @@
22
21
  ]
23
22
  },
24
23
  {
25
- "include": "source.gfm"
24
+ "include": "text.restructuredtext"
26
25
  }
27
26
  ]
28
27
  }
@@ -10,6 +10,7 @@
10
10
  "include": "#all"
11
11
  }
12
12
  ],
13
+ "limitLineLength": false,
13
14
  "repository": {
14
15
  "all": {
15
16
  "patterns": [
@@ -121,9 +122,9 @@
121
122
  },
122
123
  "headings": {
123
124
  "name": "markup.heading.restructuredtext",
124
- "match": "^[-=~`#\"^+*:.'_]{3,}\\s*$",
125
+ "match": "^(([-=~`#\"^+*:.'_])\\2{2,})(?=\\s*$)",
125
126
  "captures": {
126
- "0": {
127
+ "1": {
127
128
  "name": "punctuation.definition.heading.restructuredtext"
128
129
  }
129
130
  }
@@ -192,7 +193,7 @@
192
193
  "interpreted-block": {
193
194
  "name": "markup.other.command.restructuredtext",
194
195
  "contentName": "string.other.interpreted.restructuredtext",
195
- "begin": "(:)([-A-z0-9:_.]*)(:)(`)",
196
+ "begin": "(:)([-A-z0-9:_.]*?)(:)(`)",
196
197
  "end": "(`)",
197
198
  "beginCaptures": {
198
199
  "1": {
@@ -57,6 +57,7 @@
57
57
  "troff"
58
58
  ],
59
59
  "firstLineMatch": "(?x)\n\n# Manual page with .TH macro on first line\n^\\.TH[ \t]+(?:\\S+)\n|\n\n# Preprocessor line\n# See: https://www.gnu.org/software/groff/manual/html_node/Preprocessors-in-man-pages.html\n^'\\\\\"\\x20[tre]+(?=\\s|$)\n|\n\n# “Aliased” manual page\n^\\.so[ \t]+man(\\w+)/.+\\.\\1(?=\\s|$)\n|\n\n# Modeline\n(?i:\n\t# Emacs\n\t-\\*-(?:\\s*(?=[^:;\\s]+\\s*-\\*-)|(?:.*?[;\\s]|(?<=-\\*-))mode\\s*:\\s*)\n\t\t[gnt]?roff\n\t(?=[\\s;]|(?<![-*])-\\*-).*?-\\*-\n\t\n\t|\n\t\n\t# Vim\n\t(?:(?:\\s|^)vi(?:m[<=>]?\\d+|m)?|\\sex)(?=:(?=\\s*set?\\s[^\\n:]+:)|:(?!\\s* set?\\s))(?:(?:\\s|\\s*:\\s*)\\w*(?:\\s*=(?:[^\\n\\\\\\s]|\\\\.)*)?)*[\\s:](?:filetype|ft|syntax)\\s*=\n\t\t[gnt]?roff\n\t(?=\\s|:|$)\n)",
60
+ "limitLineLength": false,
60
61
  "patterns": [
61
62
  {
62
63
  "include": "#main"
@@ -371,6 +372,25 @@
371
372
  }
372
373
  }
373
374
  },
375
+ {
376
+ "name": "meta.function.request.$2.roff",
377
+ "begin": "^([.'])[ \t]*(ab|tm)(?=\\s|\\\\[\"#])",
378
+ "end": "(?<!\\\\)(?=\n)|(?=\\\\\")",
379
+ "beginCaptures": {
380
+ "1": {
381
+ "name": "punctuation.definition.request.roff"
382
+ },
383
+ "2": {
384
+ "name": "entity.function.name.roff"
385
+ }
386
+ },
387
+ "patterns": [
388
+ {
389
+ "include": "#escapes-copymode"
390
+ }
391
+ ],
392
+ "contentName": "string.unquoted.roff"
393
+ },
374
394
  {
375
395
  "name": "meta.function.request.$2.roff",
376
396
  "begin": "(?x) ^([.'])[ \t]* (ab|ad|af|bd|bp|br|c2|cc|ce|cf|ch|cs|da|di|dt|ec|em|eo|ev |ex|fc|fi|fl|fp|ft|hc|hw|hy|in|it|lc|lg|lf|ll|ls|lt|mc|mk |na|ne|nf|nh|nm|nn|ns|nx|os|pc|pi|pl|pm|pn|po|ps|rd|rm|rn |rr|rs|rt|so|sp|ss|sv|sy|ta|tc|ti|tm|tr|uf|vs|wh) (?=\\s|\\d+\\s*$|\\\\[\"#])",
@@ -425,10 +445,18 @@
425
445
  "name": "invalid.illegal.readonly.register.gnu.roff"
426
446
  },
427
447
  "7": {
428
- "name": "variable.parameter.roff"
448
+ "name": "variable.parameter.roff",
449
+ "patterns": [
450
+ {
451
+ "include": "#escapes"
452
+ }
453
+ ]
429
454
  },
430
455
  "8": {
431
456
  "patterns": [
457
+ {
458
+ "include": "#arithmetic"
459
+ },
432
460
  {
433
461
  "include": "#param-group"
434
462
  }
@@ -493,7 +521,7 @@
493
521
  "conditionals": {
494
522
  "patterns": [
495
523
  {
496
- "begin": "(?x)^\n([.']) [ \t]* # 1: punctuation.definition.request.roff\n(ie|if) [ \t]* # 2: keyword.control.roff\n(!)? # 3: keyword.operator.logical\n\n(?:\n\t# One-character built-in comparison name\n\t([notev]) # 4: constant.language.builtin-comparison.$4.roff\n\t\n\t|\n\t\n\t# GNU extensions\n\t([cdfmrs]) # 5: constant.language.builtin-comparison.$5.gnu.roff\n\t\n\t# Name being validated\n\t[ \t]*\n\t((?:[^ \\t\\\\]|\\\\(?![\"#]).)+) # 6: Include “#escapes”\n\t\n\t|\n\t\n\t# Arithmetic\n\t( # 7: meta.equation.roff\n\t\t\n\t\t# Starts with a bracket\n\t\t(\\() # 8: punctuation.definition.begin.roff\n\t\t(.*?) # 9: Include “#arithmetic”\n\t\t(\\)) # 10: punctuation.definition.end.roff\n\t\t\n\t\t# Anything else affixed to it\n\t\t( # 11: Include “#arithmetic”\n\t\t\t(?:\n\t\t\t\t[^\\s\\(] | # Operators/numbers\n\t\t\t\t\\(.*?\\) # More brackets\n\t\t\t)*\n\t\t)\n\t\t\n\t\t|\n\t\t\n\t\t# Doesn’t start with a bracket\n\t\t(?:\n\t\t\t# Starts with a long-form string/register\n\t\t\t(\\|?\\\\+[n*]\\(\\S{2}) # 12: Include “#escapes”\n\t\t\t|\n\t\t\t# Starts with a digit or backslash\n\t\t\t(?=\\d|\\\\)\n\t\t)\n\t\t([^\\s\\(]*) # 13: Sandwiched mathematical junk\n\t\t\n\t\t(?: # Possible embedded brackets\n\t\t\t(\\() # 14: punctuation.definition.begin.roff\n\t\t\t(.*?) # 15: Include “#arithmetic”\n\t\t\t(\\)) # 16: punctuation.definition.end.roff\n\t\t)?\n\t\t(?: # Possible trailing digits/operators\n\t\t\t[^\\s\\(]*?\n\t\t\t\\d+\n\t\t)?\n\t\t\n\t\t# Ends with a...\n\t\t(?<=\n\t\t\t# Digit\n\t\t\t\\d |\n\t\t\t\n\t\t\t# Unit suffix\n\t\t\t(?<=[\\d.])\n\t\t\t[A-Za-z] |\n\t\t\t\n\t\t\t# Closing bracket\n\t\t\t[\\)\\]] |\n\t\t\t\n\t\t\t# String/register: Long-form\n\t\t\t\\\\[n*]\n\t\t\t\\(\n\t\t\t\\S{2} |\n\t\t\t\n\t\t\t# String/register: Short-form\n\t\t\t\\\\[n*]\\S\n\t\t)\n\t)\n\t\n\t|\n\t\n\t# String/variable comparison\n\t([^\\d\\s\\\\]) # 17: punctuation.definition.string.begin.roff\n\t( # 18: variable.parameter.operand.left.roff\n\t\t(.*?) # 19: Include “#escapes”\n\t)\n\t(\\17) # 20: punctuation.definition.string.roff\n\t( # 21: variable.parameter.operand.right.roff\n\t\t(.*?) # 22: Include “#escapes”\n\t)\n\t(\\17) # 23: punctuation.definition.string.end.roff\n\t\n\t|\n\t\n\t# Anything not recognised\n\t(\\S) # 24: meta.operand.single.roff\n)?\n\n(.*) # 25: Include “#conditional-innards”",
524
+ "begin": "(?x)^\n([.']) [ \t]* # 1: punctuation.definition.request.roff\n(ie|if) [ \t]* # 2: keyword.control.roff\n(!)? # 3: keyword.operator.logical\n\n(?:\n\t# One-character built-in comparison name\n\t([notev]) # 4: constant.language.builtin-comparison.$4.roff\n\t\n\t|\n\t\n\t# GNU extensions\n\t([cdFmrS]) # 5: constant.language.builtin-comparison.$5.gnu.roff\n\t\n\t# Name being validated\n\t[ \t]*\n\t((?:[^ \\t\\\\]|\\\\(?![\"#]).)+) # 6: Include “#escapes”\n\t\n\t|\n\t\n\t# Arithmetic\n\t( # 7: meta.equation.roff\n\t\t\n\t\t# Starts with a bracket\n\t\t(\\() # 8: punctuation.definition.begin.roff\n\t\t(.*?) # 9: Include “#arithmetic”\n\t\t(\\)) # 10: punctuation.definition.end.roff\n\t\t\n\t\t# Anything else affixed to it\n\t\t( # 11: Include “#arithmetic”\n\t\t\t(?:\n\t\t\t\t[^\\s\\(] | # Operators/numbers\n\t\t\t\t\\(.*?\\) # More brackets\n\t\t\t)*\n\t\t)\n\t\t\n\t\t|\n\t\t\n\t\t# Doesn’t start with a bracket\n\t\t(?:\n\t\t\t# Starts with a long-form string/register\n\t\t\t(\\|?\\\\+[n*]\\(\\S{2}) # 12: Include “#escapes”\n\t\t\t|\n\t\t\t# Starts with a digit or backslash\n\t\t\t(?=\\d|\\\\)\n\t\t)\n\t\t([^\\s\\(]*) # 13: Sandwiched mathematical junk\n\t\t\n\t\t(?: # Possible embedded brackets\n\t\t\t(\\() # 14: punctuation.definition.begin.roff\n\t\t\t(.*?) # 15: Include “#arithmetic”\n\t\t\t(\\)) # 16: punctuation.definition.end.roff\n\t\t)?\n\t\t(?: # Possible trailing digits/operators\n\t\t\t[^\\s\\(]*?\n\t\t\t\\d+\n\t\t)?\n\t\t\n\t\t# Ends with a...\n\t\t(?<=\n\t\t\t# Digit\n\t\t\t\\d |\n\t\t\t\n\t\t\t# Unit suffix\n\t\t\t(?<=[\\d.])\n\t\t\t[A-Za-z] |\n\t\t\t\n\t\t\t# Closing bracket\n\t\t\t[\\)\\]] |\n\t\t\t\n\t\t\t# String/register: Long-form\n\t\t\t\\\\[n*]\n\t\t\t\\(\n\t\t\t\\S{2} |\n\t\t\t\n\t\t\t# String/register: Short-form\n\t\t\t\\\\[n*]\\S\n\t\t)\n\t)\n\t\n\t|\n\t\n\t# String/variable comparison\n\t([^\\d\\s\\\\]) # 17: punctuation.definition.string.begin.roff\n\t( # 18: variable.parameter.operand.left.roff\n\t\t(.*?) # 19: Include “#escapes”\n\t)\n\t(\\17) # 20: punctuation.definition.string.roff\n\t( # 21: variable.parameter.operand.right.roff\n\t\t(.*?) # 22: Include “#escapes”\n\t)\n\t(\\17) # 23: punctuation.definition.string.end.roff\n\t\n\t|\n\t\n\t# Anything not recognised\n\t(\\S) # 24: meta.operand.single.roff\n)?\n\n(.*) # 25: Include “#conditional-innards”",
497
525
  "end": "$",
498
526
  "beginCaptures": {
499
527
  "0": {
@@ -683,6 +711,14 @@
683
711
  {
684
712
  "include": "#number"
685
713
  },
714
+ {
715
+ "match": "<\\?",
716
+ "name": "keyword.operator.minimum.gnu.roff"
717
+ },
718
+ {
719
+ "match": ">\\?",
720
+ "name": "keyword.operator.maximum.gnu.roff"
721
+ },
686
722
  {
687
723
  "match": "[-/+*%]",
688
724
  "name": "keyword.operator.arithmetic.roff"
@@ -694,6 +730,18 @@
694
730
  {
695
731
  "match": "\\|",
696
732
  "name": "keyword.operator.absolute.roff"
733
+ },
734
+ {
735
+ "name": "meta.scaling-indicator.gnu.roff",
736
+ "match": "(?<=^|\\()([cfimnPpsuvz])(;)",
737
+ "captures": {
738
+ "1": {
739
+ "name": "keyword.other.unit.roff"
740
+ },
741
+ "2": {
742
+ "name": "punctuation.separator.semicolon.roff"
743
+ }
744
+ }
697
745
  }
698
746
  ]
699
747
  },
@@ -906,7 +954,7 @@
906
954
  },
907
955
  {
908
956
  "name": "meta.request.$2.roff",
909
- "begin": "^([.'])[ \t]*(ul|cu)(.*?)$\\n",
957
+ "begin": "^([.'])[ \t]*(ul|cu)(?=\\s|$|\\\\)(.*?)$\\n",
910
958
  "end": "(?<!\\\\)$",
911
959
  "beginCaptures": {
912
960
  "1": {
@@ -1666,18 +1714,15 @@
1666
1714
  },
1667
1715
  {
1668
1716
  "name": "constant.character.escape.function.named-char.roff",
1669
- "match": "(?x) ((\\\\)(\\()) (em|hy|bu|sq|ru|14|12|34|fi|fl|ff|Fi|Fl|de|dg|fm|ct|rg|co|pl|mi|eq|sc|aa|ga|ul|sl|ts|sr|rn|ap |ua|da|mu|di|cu|ca|sb|sp|ib|ip|if|pd|gr|no|is|pt|es|mo|br|dd|rh|lh|bs|or|ci|lt|lb|rt|rb|lk|rk |bv|lf|rf|lc|rc|[>=<|!]=|->|<-|[+]-|\\*[A-IK-UW-Z*a-ik-uw-z])",
1717
+ "match": "(\\\\)(\\()(\\S{2})",
1670
1718
  "captures": {
1671
1719
  "1": {
1672
- "name": "entity.name.roff"
1720
+ "name": "punctuation.definition.brace.roff"
1673
1721
  },
1674
1722
  "2": {
1675
1723
  "name": "punctuation.definition.escape.roff"
1676
1724
  },
1677
1725
  "3": {
1678
- "name": "punctuation.definition.brace.roff"
1679
- },
1680
- "4": {
1681
1726
  "name": "variable.parameter.roff"
1682
1727
  }
1683
1728
  }
@@ -1804,8 +1849,8 @@
1804
1849
  }
1805
1850
  },
1806
1851
  {
1807
- "begin": "((\\\\)f[I2])",
1808
- "end": "(?=\\\\f[A-Za-z0-9])|^(?=\\.(?:SH|SS|P|[HILPT]P)\\b)",
1852
+ "begin": "((\\\\)f(?:[I2]|(\\()CI|(\\[)\\s*(?:[I2]|CI)\\s*(\\])))",
1853
+ "end": "(?=\\\\f[\\[A-Za-z0-9])|^(?=\\.(?:SH|SS|P|[HILPT]P)\\b)",
1809
1854
  "beginCaptures": {
1810
1855
  "0": {
1811
1856
  "name": "constant.character.escape.font.roff"
@@ -1815,6 +1860,12 @@
1815
1860
  },
1816
1861
  "2": {
1817
1862
  "name": "punctuation.definition.escape.roff"
1863
+ },
1864
+ "3": {
1865
+ "name": "punctuation.section.begin.bracket.square.roff"
1866
+ },
1867
+ "4": {
1868
+ "name": "punctuation.section.end.bracket.square.roff"
1818
1869
  }
1819
1870
  },
1820
1871
  "patterns": [
@@ -1827,8 +1878,8 @@
1827
1878
  ]
1828
1879
  },
1829
1880
  {
1830
- "begin": "((\\\\)f[B3])",
1831
- "end": "(?=\\\\f[A-Za-z0-9])|^(?=\\.(?:SH|SS|P|[HILPT]P)\\b)",
1881
+ "begin": "((\\\\)f(?:[B3]|(\\()CB|(\\[)\\s*(?:[B3]|CB)\\s*(\\])))",
1882
+ "end": "(?=\\\\f[\\[A-Za-z0-9])|^(?=\\.(?:SH|SS|P|[HILPT]P)\\b)",
1832
1883
  "beginCaptures": {
1833
1884
  "0": {
1834
1885
  "name": "constant.character.escape.font.roff"
@@ -1838,6 +1889,15 @@
1838
1889
  },
1839
1890
  "2": {
1840
1891
  "name": "punctuation.definition.escape.roff"
1892
+ },
1893
+ "3": {
1894
+ "name": "punctuation.definition.brace.roff"
1895
+ },
1896
+ "4": {
1897
+ "name": "punctuation.section.begin.bracket.square.roff"
1898
+ },
1899
+ "5": {
1900
+ "name": "punctuation.section.end.bracket.square.roff"
1841
1901
  }
1842
1902
  },
1843
1903
  "patterns": [
@@ -1850,8 +1910,8 @@
1850
1910
  ]
1851
1911
  },
1852
1912
  {
1853
- "begin": "((\\\\)f4)",
1854
- "end": "(?=\\\\f[A-Za-z0-9])|^(?=\\.(?:SH|SS|P|[HILPT]P)\\b)",
1913
+ "begin": "((\\\\)f(?:4|(\\()BI|(\\[)\\s*BI\\s*(\\])))",
1914
+ "end": "(?=\\\\f[\\[A-Za-z0-9])|^(?=\\.(?:SH|SS|P|[HILPT]P)\\b)",
1855
1915
  "beginCaptures": {
1856
1916
  "0": {
1857
1917
  "name": "constant.character.escape.font.roff"
@@ -1861,6 +1921,15 @@
1861
1921
  },
1862
1922
  "2": {
1863
1923
  "name": "punctuation.definition.escape.roff"
1924
+ },
1925
+ "3": {
1926
+ "name": "punctuation.definition.brace.roff"
1927
+ },
1928
+ "4": {
1929
+ "name": "punctuation.section.begin.bracket.square.roff"
1930
+ },
1931
+ "5": {
1932
+ "name": "punctuation.section.end.bracket.square.roff"
1864
1933
  }
1865
1934
  },
1866
1935
  "patterns": [
@@ -1872,6 +1941,38 @@
1872
1941
  }
1873
1942
  ]
1874
1943
  },
1944
+ {
1945
+ "begin": "((\\\\)f(?:(\\()C[WR]|(\\[)\\s*C[WR]\\s*(\\])))",
1946
+ "end": "(?=\\\\f[\\[A-Za-z0-9])|^(?=\\.(?:SH|SS|P|[HILPT]P)\\b)",
1947
+ "beginCaptures": {
1948
+ "0": {
1949
+ "name": "constant.character.escape.font.roff"
1950
+ },
1951
+ "1": {
1952
+ "name": "entity.name.roff"
1953
+ },
1954
+ "2": {
1955
+ "name": "punctuation.definition.escape.roff"
1956
+ },
1957
+ "3": {
1958
+ "name": "punctuation.definition.brace.roff"
1959
+ },
1960
+ "4": {
1961
+ "name": "punctuation.section.begin.bracket.square.roff"
1962
+ },
1963
+ "5": {
1964
+ "name": "punctuation.section.end.bracket.square.roff"
1965
+ }
1966
+ },
1967
+ "patterns": [
1968
+ {
1969
+ "include": "$self"
1970
+ },
1971
+ {
1972
+ "include": "#monospace-word"
1973
+ }
1974
+ ]
1975
+ },
1875
1976
  {
1876
1977
  "name": "constant.character.escape.function.font.gnu.roff",
1877
1978
  "begin": "((\\\\)[Ff](\\[))",
@@ -2187,10 +2288,37 @@
2187
2288
  }
2188
2289
  },
2189
2290
  {
2190
- "name": "meta.function.$2.unparsed.macro.mdoc.roff",
2191
- "begin": "^([.'])\\s*(%[ABCDIJNOPQRTUV]|B[dfklt]|br|D[bdt]|E[dfklx]|F[do]|Hf|In|L[bp]|Nd|Os|Pp|R[esv]|Sm|sp|Ud)(?=\\s)",
2192
- "end": "(?<!\\\\)$",
2291
+ "begin": "^([.'])\\s*(Bd)\\s+(-literal)(?=\\s|$)(.*)",
2292
+ "end": "^([.'])\\s*(Ed)(?=\\s|$)",
2193
2293
  "beginCaptures": {
2294
+ "0": {
2295
+ "name": "meta.function.$2.unparsed.macro.mdoc.roff"
2296
+ },
2297
+ "1": {
2298
+ "name": "punctuation.definition.macro.roff"
2299
+ },
2300
+ "2": {
2301
+ "name": "entity.function.name.roff"
2302
+ },
2303
+ "3": {
2304
+ "patterns": [
2305
+ {
2306
+ "include": "#mdoc-args"
2307
+ }
2308
+ ]
2309
+ },
2310
+ "4": {
2311
+ "patterns": [
2312
+ {
2313
+ "include": "#mdoc-unparsed"
2314
+ }
2315
+ ]
2316
+ }
2317
+ },
2318
+ "endCaptures": {
2319
+ "0": {
2320
+ "name": "meta.function.$2.unparsed.macro.mdoc.roff"
2321
+ },
2194
2322
  "1": {
2195
2323
  "name": "punctuation.definition.macro.roff"
2196
2324
  },
@@ -2200,13 +2328,101 @@
2200
2328
  },
2201
2329
  "patterns": [
2202
2330
  {
2203
- "include": "#mdoc-delimiters"
2331
+ "name": "meta.html-snippet.mdoc.roff",
2332
+ "begin": "^(?:\\S*.*?\\s+)?HTML:\\s*$\\n?",
2333
+ "end": "^(?!\\t|\\s*$)",
2334
+ "beginCaptures": {
2335
+ "0": {
2336
+ "patterns": [
2337
+ {
2338
+ "include": "#main"
2339
+ }
2340
+ ]
2341
+ }
2342
+ },
2343
+ "patterns": [
2344
+ {
2345
+ "name": "text.embedded.html.basic",
2346
+ "match": ".+",
2347
+ "captures": {
2348
+ "0": {
2349
+ "patterns": [
2350
+ {
2351
+ "include": "text.html.basic"
2352
+ }
2353
+ ]
2354
+ }
2355
+ }
2356
+ }
2357
+ ]
2204
2358
  },
2205
2359
  {
2206
- "include": "#mdoc-args"
2360
+ "name": "meta.js-snippet.mdoc.roff",
2361
+ "begin": "^(?:\\S*.*?\\s+)?JavaScript:\\s*$\\n?",
2362
+ "end": "^(?!\\t|\\s*$)",
2363
+ "beginCaptures": {
2364
+ "0": {
2365
+ "patterns": [
2366
+ {
2367
+ "include": "#main"
2368
+ }
2369
+ ]
2370
+ }
2371
+ },
2372
+ "patterns": [
2373
+ {
2374
+ "match": ".+",
2375
+ "captures": {
2376
+ "0": {
2377
+ "patterns": [
2378
+ {
2379
+ "include": "source.js"
2380
+ }
2381
+ ]
2382
+ }
2383
+ }
2384
+ }
2385
+ ]
2207
2386
  },
2208
2387
  {
2209
- "include": "#generic-parameter"
2388
+ "name": "meta.css-snippet.mdoc.roff",
2389
+ "begin": "^(?:\\S*.*?\\s+)?CSS:\\s*$\\n?",
2390
+ "end": "^(?!\\t|\\s*$)",
2391
+ "beginCaptures": {
2392
+ "0": {
2393
+ "patterns": [
2394
+ {
2395
+ "include": "#main"
2396
+ }
2397
+ ]
2398
+ }
2399
+ },
2400
+ "patterns": [
2401
+ {
2402
+ "include": "source.css"
2403
+ }
2404
+ ]
2405
+ },
2406
+ {
2407
+ "include": "#main"
2408
+ }
2409
+ ]
2410
+ },
2411
+ {
2412
+ "name": "meta.function.$2.unparsed.macro.mdoc.roff",
2413
+ "begin": "^([.'])\\s*(%[ABCDIJNOPQRTUV]|B[dfklt]|br|D[bdt]|E[dfklx]|F[do]|Hf|In|L[bp]|Nd|Os|Pp|R[esv]|Sm|sp|Ud)(?=\\s)",
2414
+ "end": "(?<!\\\\)$",
2415
+ "beginCaptures": {
2416
+ "1": {
2417
+ "name": "punctuation.definition.macro.roff"
2418
+ },
2419
+ "2": {
2420
+ "name": "entity.function.name.roff"
2421
+ }
2422
+ },
2423
+ "patterns": [
2424
+ {
2425
+ "include": "#mdoc-unparsed"
2210
2426
  }
2211
2427
  ]
2212
2428
  },
@@ -2241,7 +2457,7 @@
2241
2457
  {
2242
2458
  "name": "meta.function.$1.callable.macro.mdoc.roff",
2243
2459
  "begin": "(?<=Em|Ar)\\G|(?<=\\s)(Em|Ar)(?=\\s)",
2244
- "end": "(?x)\n(?<!\\\\)$ |\n(?=\n\t\\s+\n\t(?:Ac|Ad|An|Ao|Ap|Aq|Ar|At|Bc|Bo|Bq|Brc|Bro|Brq|Bsx|Bx|Cd|Cm|Dc|Do|Dq|Dv|Dx|Ec|Em\n\t|En|Eo|Er|Es|Ev|Fa|Fc|Fl|Fn|Fr|Ft|Fx|Ic|Li|Lk|Ms|Mt|Nm|No|Ns|Nx|Oc|Oo|Op|Ot|Ox|Pa\n\t|Pc|Pf|Po|Pq|Qc|Ql|Qo|Qq|Sc|So|Sq|Sx|Sy|Ta|Tn|Ux|Va|Vt|Xc|Xo|Xr)\n\t\\s |\n\t\\\\\" |\n\t\\\\f[A-Za-z0-9]\n)",
2460
+ "end": "(?x)\n(?<!\\\\)$ |\n(?=\n\t\\s+\n\t(?:Ac|Ad|An|Ao|Ap|Aq|Ar|At|Bc|Bo|Bq|Brc|Bro|Brq|Bsx|Bx|Cd|Cm|Dc|Do|Dq|Dv|Dx|Ec|Em\n\t|En|Eo|Er|Es|Ev|Fa|Fc|Fl|Fn|Fr|Ft|Fx|Ic|Li|Lk|Ms|Mt|Nm|No|Ns|Nx|Oc|Oo|Op|Ot|Ox|Pa\n\t|Pc|Pf|Po|Pq|Qc|Ql|Qo|Qq|Sc|So|Sq|Sx|Sy|Ta|Tn|Ux|Va|Vt|Xc|Xo|Xr)\n\t\\s |\n\t\\\\\" |\n\t\\\\f[\\[A-Za-z0-9]\n)",
2245
2461
  "beginCaptures": {
2246
2462
  "1": {
2247
2463
  "name": "entity.function.name.roff"
@@ -2262,7 +2478,7 @@
2262
2478
  {
2263
2479
  "name": "meta.function.$1.callable.macro.mdoc.roff",
2264
2480
  "begin": "(?<=Sy|Fl|Cm)\\G|(?<=\\s)(Sy|Fl|Cm)(?=\\s)",
2265
- "end": "(?x)\n(?<!\\\\)$ |\n(?=\n\t\\s+\n\t(?:Ac|Ad|An|Ao|Ap|Aq|Ar|At|Bc|Bo|Bq|Brc|Bro|Brq|Bsx|Bx|Cd|Cm|Dc|Do|Dq|Dv|Dx|Ec|Em\n\t|En|Eo|Er|Es|Ev|Fa|Fc|Fl|Fn|Fr|Ft|Fx|Ic|Li|Lk|Ms|Mt|Nm|No|Ns|Nx|Oc|Oo|Op|Ot|Ox|Pa\n\t|Pc|Pf|Po|Pq|Qc|Ql|Qo|Qq|Sc|So|Sq|Sx|Sy|Ta|Tn|Ux|Va|Vt|Xc|Xo|Xr)\n\t\\s |\n\t\\\\\" |\n\t\\\\f[A-Za-z0-9]\n)",
2481
+ "end": "(?x)\n(?<!\\\\)$ |\n(?=\n\t\\s+\n\t(?:Ac|Ad|An|Ao|Ap|Aq|Ar|At|Bc|Bo|Bq|Brc|Bro|Brq|Bsx|Bx|Cd|Cm|Dc|Do|Dq|Dv|Dx|Ec|Em\n\t|En|Eo|Er|Es|Ev|Fa|Fc|Fl|Fn|Fr|Ft|Fx|Ic|Li|Lk|Ms|Mt|Nm|No|Ns|Nx|Oc|Oo|Op|Ot|Ox|Pa\n\t|Pc|Pf|Po|Pq|Qc|Ql|Qo|Qq|Sc|So|Sq|Sx|Sy|Ta|Tn|Ux|Va|Vt|Xc|Xo|Xr)\n\t\\s |\n\t\\\\\" |\n\t\\\\f[\\[A-Za-z0-9]\n)",
2266
2482
  "beginCaptures": {
2267
2483
  "1": {
2268
2484
  "name": "entity.function.name.roff"
@@ -2372,6 +2588,19 @@
2372
2588
  }
2373
2589
  ]
2374
2590
  },
2591
+ "mdoc-unparsed": {
2592
+ "patterns": [
2593
+ {
2594
+ "include": "#mdoc-delimiters"
2595
+ },
2596
+ {
2597
+ "include": "#mdoc-args"
2598
+ },
2599
+ {
2600
+ "include": "#generic-parameter"
2601
+ }
2602
+ ]
2603
+ },
2375
2604
  "ms": {
2376
2605
  "patterns": [
2377
2606
  {
@@ -4698,6 +4927,144 @@
4698
4927
  }
4699
4928
  ]
4700
4929
  },
4930
+ {
4931
+ "begin": "^([.'])[ \t]*(Perl)[ \t]+(begin|start)(?=\\s|\\\\[\"#])(.*)$",
4932
+ "end": "^([.'])[ \t]*(Perl)[ \t]+(end|stop)(?=\\s|\\\\[\"#])",
4933
+ "contentName": "source.embedded.perl.gnu.roff",
4934
+ "patterns": [
4935
+ {
4936
+ "include": "source.perl"
4937
+ }
4938
+ ],
4939
+ "beginCaptures": {
4940
+ "0": {
4941
+ "name": "meta.function.begin.perl.macro.gnu.roff"
4942
+ },
4943
+ "1": {
4944
+ "name": "punctuation.definition.macro.roff"
4945
+ },
4946
+ "2": {
4947
+ "name": "entity.function.name.roff"
4948
+ },
4949
+ "3": {
4950
+ "name": "constant.language.embedding-control.roff"
4951
+ },
4952
+ "4": {
4953
+ "patterns": [
4954
+ {
4955
+ "include": "#escapes"
4956
+ }
4957
+ ]
4958
+ }
4959
+ },
4960
+ "endCaptures": {
4961
+ "0": {
4962
+ "name": "meta.function.end.perl.macro.gnu.roff"
4963
+ },
4964
+ "1": {
4965
+ "name": "punctuation.definition.macro.roff"
4966
+ },
4967
+ "2": {
4968
+ "name": "entity.function.name.roff"
4969
+ },
4970
+ "3": {
4971
+ "name": "constant.language.embedding-control.roff"
4972
+ }
4973
+ }
4974
+ },
4975
+ {
4976
+ "begin": "^([.'])[ \t]*(lilypond)[ \t]+(begin|start)(?=\\s|\\\\[\"#])(.*)$",
4977
+ "end": "^([.'])[ \t]*(lilypond)[ \t]+(end|stop)(?=\\s|\\\\[\"#])",
4978
+ "contentName": "source.embedded.lilypond.gnu.roff",
4979
+ "beginCaptures": {
4980
+ "0": {
4981
+ "name": "meta.function.begin.lilypond.macro.gnu.roff"
4982
+ },
4983
+ "1": {
4984
+ "name": "punctuation.definition.macro.roff"
4985
+ },
4986
+ "2": {
4987
+ "name": "entity.function.name.roff"
4988
+ },
4989
+ "3": {
4990
+ "name": "constant.language.embedding-control.roff"
4991
+ },
4992
+ "4": {
4993
+ "patterns": [
4994
+ {
4995
+ "include": "#escapes"
4996
+ }
4997
+ ]
4998
+ }
4999
+ },
5000
+ "endCaptures": {
5001
+ "0": {
5002
+ "name": "meta.function.end.lilypond.macro.gnu.roff"
5003
+ },
5004
+ "1": {
5005
+ "name": "punctuation.definition.macro.roff"
5006
+ },
5007
+ "2": {
5008
+ "name": "entity.function.name.roff"
5009
+ },
5010
+ "3": {
5011
+ "name": "constant.language.embedding-control.roff"
5012
+ }
5013
+ },
5014
+ "patterns": [
5015
+ {
5016
+ "include": "source.AtLilyPond"
5017
+ },
5018
+ {
5019
+ "include": "source.lilypond"
5020
+ }
5021
+ ]
5022
+ },
5023
+ {
5024
+ "begin": "^([.'])[ \t]*(pinyin)[ \t]+(begin|start)(?=\\s|\\\\[\"#])(.*)$",
5025
+ "end": "^([.'])[ \t]*(pinyin)[ \t]+(end|stop)(?=\\s|\\\\[\"#])",
5026
+ "contentName": "meta.pinyin.gnu.roff",
5027
+ "patterns": [
5028
+ {
5029
+ "include": "#main"
5030
+ }
5031
+ ],
5032
+ "beginCaptures": {
5033
+ "0": {
5034
+ "name": "meta.function.begin.pinyin.macro.gnu.roff"
5035
+ },
5036
+ "1": {
5037
+ "name": "punctuation.definition.macro.roff"
5038
+ },
5039
+ "2": {
5040
+ "name": "entity.function.name.roff"
5041
+ },
5042
+ "3": {
5043
+ "name": "constant.language.embedding-control.roff"
5044
+ },
5045
+ "4": {
5046
+ "patterns": [
5047
+ {
5048
+ "include": "#escapes"
5049
+ }
5050
+ ]
5051
+ }
5052
+ },
5053
+ "endCaptures": {
5054
+ "0": {
5055
+ "name": "meta.function.end.pinyin.macro.gnu.roff"
5056
+ },
5057
+ "1": {
5058
+ "name": "punctuation.definition.macro.roff"
5059
+ },
5060
+ "2": {
5061
+ "name": "entity.function.name.roff"
5062
+ },
5063
+ "3": {
5064
+ "name": "constant.language.embedding-control.roff"
5065
+ }
5066
+ }
5067
+ },
4701
5068
  {
4702
5069
  "include": "source.pic#tags"
4703
5070
  },
@@ -4932,7 +5299,7 @@
4932
5299
  },
4933
5300
  {
4934
5301
  "name": "meta.structure.dictionary.refer.roff",
4935
- "contentName": "meta.structure.dictionary.value.refer.rofff",
5302
+ "contentName": "meta.structure.dictionary.value.refer.roff",
4936
5303
  "begin": "^([.'])?\\s*(%)([A-Z])(?=\\s)",
4937
5304
  "end": "(?<!\\\\)$",
4938
5305
  "patterns": [