github-linguist 7.6.0 → 7.10.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (147) hide show
  1. checksums.yaml +5 -5
  2. data/bin/github-linguist +17 -4
  3. data/grammars/annotation.liquidhaskell.haskell.json +58 -11
  4. data/grammars/etc.json +472 -4
  5. data/grammars/hidden.manref.json +29 -0
  6. data/grammars/hidden.regexp.injection-shell.json +28 -0
  7. data/grammars/hint.haskell.json +58 -11
  8. data/grammars/hint.message.haskell.json +58 -11
  9. data/grammars/hint.type.haskell.json +58 -11
  10. data/grammars/injections.etc.json +601 -1
  11. data/grammars/markdown.plantuml.codeblock.json +26 -0
  12. data/grammars/source.4dm.json +1156 -0
  13. data/grammars/source.abap.json +7 -7
  14. data/grammars/source.abl.json +685 -83
  15. data/grammars/source.abnf.json +23 -1
  16. data/grammars/source.agda.json +33 -203
  17. data/grammars/source.ahk.json +9 -5
  18. data/grammars/source.angelscript.json +1 -1
  19. data/grammars/source.ballerina.json +55 -19
  20. data/grammars/source.c++.json +4 -4
  21. data/grammars/source.c.platform.json +584 -33
  22. data/grammars/source.chapel.json +7 -4
  23. data/grammars/source.csound.json +1 -1
  24. data/grammars/source.css.json +3 -3
  25. data/grammars/source.css.scss.json +164 -15
  26. data/grammars/source.curlrc.json +869 -65
  27. data/grammars/source.d.json +2 -2
  28. data/grammars/source.dart.json +58 -32
  29. data/grammars/source.dircolors.json +137 -0
  30. data/grammars/source.direct-x.json +135 -0
  31. data/grammars/source.ebnf.json +67 -39
  32. data/grammars/source.editorconfig.json +23 -5
  33. data/grammars/source.elixir.json +51 -0
  34. data/grammars/source.elm.json +1 -1
  35. data/grammars/source.emacs.lisp.json +10 -0
  36. data/grammars/source.faust.json +119 -0
  37. data/grammars/source.futhark.json +146 -0
  38. data/grammars/source.gcode.json +166 -8
  39. data/grammars/source.gedcom.json +196 -0
  40. data/grammars/source.generic-db.json +41 -0
  41. data/grammars/source.gfm.blade.json +15 -0
  42. data/grammars/source.gfm.json +1697 -1439
  43. data/grammars/source.gitconfig.json +1 -1
  44. data/grammars/source.hack.json +200 -98
  45. data/grammars/source.haskell.json +58 -11
  46. data/grammars/source.hlsl.json +9 -5
  47. data/grammars/source.hosts.json +40 -0
  48. data/grammars/source.hsig.json +58 -11
  49. data/grammars/source.httpspec.json +1 -1
  50. data/grammars/source.hx.json +9 -5
  51. data/grammars/source.hxml.json +2 -2
  52. data/grammars/source.idris.json +1 -1
  53. data/grammars/source.igor.json +46 -2
  54. data/grammars/source.ini.npmrc.json +311 -0
  55. data/grammars/source.inno.json +133 -0
  56. data/grammars/source.inputrc.json +500 -0
  57. data/grammars/source.isabelle.root.json +1 -1
  58. data/grammars/source.jison.json +3 -0
  59. data/grammars/source.jisonlex.json +3 -0
  60. data/grammars/source.js.json +4 -4
  61. data/grammars/source.julia.json +70 -24
  62. data/grammars/source.kotlin.json +17 -51
  63. data/grammars/source.lcov.json +398 -0
  64. data/grammars/source.lean.json +20 -4
  65. data/grammars/source.lean.markdown.json +2598 -0
  66. data/grammars/source.lex.json +4 -4
  67. data/grammars/source.m2.json +125 -0
  68. data/grammars/source.m4.json +141 -99
  69. data/grammars/source.man-conf.json +47 -35
  70. data/grammars/source.matlab.json +437 -184
  71. data/grammars/source.mcfunction-snapshot.json +21388 -561
  72. data/grammars/source.mcfunction.json +55 -5
  73. data/grammars/source.meson.json +1 -1
  74. data/grammars/source.mlir.json +37 -317
  75. data/grammars/source.modula-3.json +10 -0
  76. data/grammars/source.msl.json +755 -0
  77. data/grammars/source.nasl.json +155 -0
  78. data/grammars/source.neon.json +381 -0
  79. data/grammars/source.nextflow.json +2 -2
  80. data/grammars/source.objc.platform.json +493 -35
  81. data/grammars/source.odin-ehr.json +806 -0
  82. data/grammars/source.odin.json +402 -0
  83. data/grammars/source.openbsd-pkg.contents.json +128 -0
  84. data/grammars/source.opts.json +12 -2
  85. data/grammars/source.perl6fe.json +1 -1
  86. data/grammars/source.postscript.json +358 -103
  87. data/grammars/source.prisma.json +435 -0
  88. data/grammars/source.purescript.json +29 -2
  89. data/grammars/source.python.json +52 -0
  90. data/grammars/source.q.json +150 -63
  91. data/grammars/source.qasm.json +66 -0
  92. data/grammars/source.ql.json +1408 -0
  93. data/grammars/source.r.json +4 -4
  94. data/grammars/source.reason.json +28 -16
  95. data/grammars/source.rego.json +124 -0
  96. data/grammars/source.sass.json +158 -3
  97. data/grammars/source.scala.json +53 -18
  98. data/grammars/source.sieve.json +383 -0
  99. data/grammars/source.solidity.json +1 -1
  100. data/grammars/source.ssh-config.json +1 -14
  101. data/grammars/source.swift.json +162 -2
  102. data/grammars/source.sy.json +2088 -183
  103. data/grammars/source.tags.json +266 -0
  104. data/grammars/source.terraform.json +576 -132
  105. data/grammars/source.tnsaudit.json +256 -0
  106. data/grammars/source.ts.json +246 -70
  107. data/grammars/source.tsx.json +247 -71
  108. data/grammars/source.v.json +587 -761
  109. data/grammars/source.vim-snippet.json +645 -0
  110. data/grammars/source.viml.json +6 -6
  111. data/grammars/source.webassembly.json +10 -0
  112. data/grammars/source.webidl.json +8 -0
  113. data/grammars/source.wgetrc.json +1640 -0
  114. data/grammars/source.wsd.json +781 -0
  115. data/grammars/source.x86.json +7 -3
  116. data/grammars/source.zig.json +231 -360
  117. data/grammars/text.dfy.dafny.json +188 -0
  118. data/grammars/text.html.php.blade.json +535 -528
  119. data/grammars/text.html.riot.json +788 -0
  120. data/grammars/text.muse.json +1471 -0
  121. data/grammars/text.openbsd-pkg.desc.json +78 -0
  122. data/grammars/text.roff.json +49 -1
  123. data/grammars/text.sfd.json +21 -0
  124. data/grammars/text.tex.latex.haskell.json +58 -11
  125. data/grammars/text.vim-help.json +383 -0
  126. data/grammars/text.xml.svg.json +8 -2
  127. data/grammars/version +1 -1
  128. data/lib/linguist/VERSION +1 -1
  129. data/lib/linguist/blob_helper.rb +4 -2
  130. data/lib/linguist/file_blob.rb +1 -1
  131. data/lib/linguist/generated.rb +96 -28
  132. data/lib/linguist/heuristics.yml +64 -4
  133. data/lib/linguist/languages.json +1 -1
  134. data/lib/linguist/languages.yml +408 -49
  135. data/lib/linguist/lazy_blob.rb +10 -10
  136. data/lib/linguist/linguist.bundle +0 -0
  137. data/lib/linguist/samples.json +48129 -31562
  138. data/lib/linguist/shebang.rb +5 -3
  139. data/lib/linguist/vendor.yml +71 -60
  140. metadata +48 -17
  141. data/grammars/source.LS.json +0 -85
  142. data/grammars/source.MCPOST.json +0 -54
  143. data/grammars/source.MOD.json +0 -55
  144. data/grammars/source.apt.json +0 -18
  145. data/grammars/source.jlex.json +0 -322
  146. data/grammars/source.yaml-ext.json +0 -324
  147. data/grammars/text.html.abl.json +0 -70
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 0ed222666d0aca787b0aa049c3a9e224cdbdc4c5
4
- data.tar.gz: c4f8792d4184481ab146d3564268959490e7db68
2
+ SHA256:
3
+ metadata.gz: 17295b377f80cbcffaf551fb456ff1efd060a01230928300d3b07042d3d8c330
4
+ data.tar.gz: c783d40d56c55bad1761755ccc0fd97ce744ae1b206d3902b67260ca1097dac8
5
5
  SHA512:
6
- metadata.gz: 83d6828a32c1710979bcaa981f0c56d9d2304ae3c68f5f51d336323972a82762c1b1565e6c0e8a5794e89b9e29b0490ed4beeb5cbac44dbcc53ec0c3133b1d6b
7
- data.tar.gz: 5937dd7e2deb2d32cce1b1e854d9d952c1dafa9a926c6fdc6082a66725b2702d6e9f2e3415f7f3a73ef1157dc6894bc32d38ad2e3768173d704a920fa8795ca6
6
+ metadata.gz: c725414eb0a90a509d128786abb5f3df82f915d840cb8c1078e9869a28af74c674f4ad0e2459652f6150a6b1a6469dd62e3780fef0886d42c1a2b47af8f1f2fc
7
+ data.tar.gz: 1e28352cacaed155ca8419243327eeca62fe0f048a4a24c0c6868a2a3b6470b91dd46ab13881d7170b80a90e3cea3d629c8b926237aa98408ff8ed4635e333a6
@@ -26,6 +26,7 @@ json_breakdown = true if ARGV[0] == "--json"
26
26
  if File.directory?(path)
27
27
  rugged = Rugged::Repository.new(path)
28
28
  repo = Linguist::Repository.new(rugged, rugged.head.target_id)
29
+
29
30
  if !json_breakdown
30
31
  repo.languages.sort_by { |_, size| size }.reverse.each do |language, size|
31
32
  percentage = ((size / repo.size.to_f) * 100)
@@ -48,6 +49,7 @@ if File.directory?(path)
48
49
  end
49
50
  elsif File.file?(path)
50
51
  blob = Linguist::FileBlob.new(path, Dir.pwd)
52
+
51
53
  type = if blob.text?
52
54
  'Text'
53
55
  elsif blob.image?
@@ -56,10 +58,21 @@ elsif File.file?(path)
56
58
  'Binary'
57
59
  end
58
60
 
59
- puts "#{blob.name}: #{blob.loc} lines (#{blob.sloc} sloc)"
60
- puts " type: #{type}"
61
- puts " mime type: #{blob.mime_type}"
62
- puts " language: #{blob.language}"
61
+ if json_breakdown
62
+ puts JSON.generate( { blob.name => {
63
+ :lines => blob.loc,
64
+ :sloc => blob.sloc,
65
+ :type => type,
66
+ :mime_type => blob.mime_type,
67
+ :language => blob.language
68
+ }
69
+ } )
70
+ else
71
+ puts "#{blob.name}: #{blob.loc} lines (#{blob.sloc} sloc)"
72
+ puts " type: #{type}"
73
+ puts " mime type: #{blob.mime_type}"
74
+ puts " language: #{blob.language}"
75
+ end
63
76
 
64
77
  if blob.large?
65
78
  puts " blob is too large to be shown"
@@ -251,7 +251,7 @@
251
251
  {
252
252
  "name": "meta.ctor.type-declaration.haskell",
253
253
  "contentName": "meta.type-signature.haskell",
254
- "begin": "(?:\\G(?:\\s*\\w+\\s)?|^)([ \\t]*)(?:(?:((?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:\\((?!--+\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:\\((?!--+\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\))))*))(?:\\s*((?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))))",
254
+ "begin": "(?:\\G(?:\\s*\\w+\\s)?|^)([ \\t]*)(?:(?:((?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\))))*))(?:\\s*((?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))))",
255
255
  "end": "(?:^(?!\\1[ \\t]|[ \\t]*$)|(?=@-}))",
256
256
  "patterns": [
257
257
  {
@@ -286,6 +286,9 @@
286
286
  {
287
287
  "include": "#comments"
288
288
  },
289
+ {
290
+ "include": "#string"
291
+ },
289
292
  {
290
293
  "include": "#where"
291
294
  },
@@ -590,7 +593,7 @@
590
593
  {
591
594
  "name": "meta.function.type-declaration.haskell",
592
595
  "contentName": "meta.type-signature.haskell",
593
- "begin": "(?:\\G(?:\\s*\\w+\\s)?|^)([ \\t]*)(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\))))*)\\s*((?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))))",
596
+ "begin": "(?:\\G(?:\\s*\\w+\\s)?|^)([ \\t]*)(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\))))*)\\s*((?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))))",
594
597
  "end": "(?:^(?!\\1[ \\t]|[ \\t]*$)|(?=@-}))|(?=(?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:\u003c-|=)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))",
595
598
  "patterns": [
596
599
  {
@@ -812,7 +815,7 @@
812
815
  "patterns": [
813
816
  {
814
817
  "name": "entity.name.function.operator.haskell",
815
- "match": "(?:\\((?!--+\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\))",
818
+ "match": "(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\))",
816
819
  "captures": {
817
820
  "0": {
818
821
  "patterns": [
@@ -886,7 +889,7 @@
886
889
  {
887
890
  "name": "meta.function.type-declaration.haskell",
888
891
  "contentName": "meta.type-signature.haskell",
889
- "begin": "(?:\\G(?:\\s*\\w+\\s)?|^)([ \\t]*)(((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\))))*))\\s*$",
892
+ "begin": "(?:\\G(?:\\s*\\w+\\s)?|^)([ \\t]*)(((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\))))*))\\s*$",
890
893
  "end": "(?:^(?!\\1[ \\t]|[ \\t]*$)|(?=@-}))",
891
894
  "patterns": [
892
895
  {
@@ -1070,9 +1073,12 @@
1070
1073
  {
1071
1074
  "include": "#comma"
1072
1075
  },
1076
+ {
1077
+ "include": "#infix_op"
1078
+ },
1073
1079
  {
1074
1080
  "name": "meta.other.constructor-list.haskell",
1075
- "begin": "(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))\\s*\\(",
1081
+ "begin": "\\(",
1076
1082
  "end": "\\)",
1077
1083
  "patterns": [
1078
1084
  {
@@ -1098,9 +1104,6 @@
1098
1104
  "include": "#infix_op"
1099
1105
  }
1100
1106
  ]
1101
- },
1102
- {
1103
- "include": "#infix_op"
1104
1107
  }
1105
1108
  ],
1106
1109
  "applyEndPatternLast": true
@@ -1242,8 +1245,8 @@
1242
1245
  {
1243
1246
  "name": "meta.record-field.type-declaration.haskell",
1244
1247
  "contentName": "meta.type-signature.haskell",
1245
- "begin": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\))))*)\\s*((?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))))",
1246
- "end": "(?=(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\))))*)\\s*((?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))))|})",
1248
+ "begin": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\))))*)\\s*((?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))))",
1249
+ "end": "(?=(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\))))*)\\s*((?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))))|})",
1247
1250
  "patterns": [
1248
1251
  {
1249
1252
  "include": "#type_signature"
@@ -1335,7 +1338,7 @@
1335
1338
  "scoped_type_override": {
1336
1339
  "patterns": [
1337
1340
  {
1338
- "match": "(?:\\G(?:\\s*\\w+\\s)?|^)([ \\t]*)(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\))))*)\\s*((?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))))((?:(?!{-|(?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:--+)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))).|{-.*?-})*)((?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:\u003c-|=)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))",
1341
+ "match": "(?:\\G(?:\\s*\\w+\\s)?|^)([ \\t]*)(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\))))*)\\s*((?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))))((?:(?!{-|(?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:--+)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))).|{-.*?-})*)((?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:\u003c-|=)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))",
1339
1342
  "captures": {
1340
1343
  "2": {
1341
1344
  "patterns": [
@@ -1716,6 +1719,12 @@
1716
1719
  {
1717
1720
  "include": "#via_list"
1718
1721
  },
1722
+ {
1723
+ "include": "#via_list_newline"
1724
+ },
1725
+ {
1726
+ "include": "#via_indent"
1727
+ },
1719
1728
  {
1720
1729
  "include": "#via_simple"
1721
1730
  },
@@ -1724,6 +1733,25 @@
1724
1733
  }
1725
1734
  ]
1726
1735
  },
1736
+ "via_indent": {
1737
+ "patterns": [
1738
+ {
1739
+ "name": "meta.via.haskell",
1740
+ "begin": "(?:\\G(?:\\s*\\w+\\s)?|^)([ \\t]*)(via)\\s*",
1741
+ "end": "(?:^(?!\\1|[ \\t]*$)|(?=@-}))",
1742
+ "patterns": [
1743
+ {
1744
+ "include": "#type_signature"
1745
+ }
1746
+ ],
1747
+ "beginCaptures": {
1748
+ "2": {
1749
+ "name": "keyword.other.haskell"
1750
+ }
1751
+ }
1752
+ }
1753
+ ]
1754
+ },
1727
1755
  "via_keyword": {
1728
1756
  "patterns": [
1729
1757
  {
@@ -1756,6 +1784,25 @@
1756
1784
  }
1757
1785
  ]
1758
1786
  },
1787
+ "via_list_newline": {
1788
+ "patterns": [
1789
+ {
1790
+ "name": "meta.via.haskell",
1791
+ "begin": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(via)\\s*",
1792
+ "end": "$",
1793
+ "patterns": [
1794
+ {
1795
+ "include": "#type_signature"
1796
+ }
1797
+ ],
1798
+ "beginCaptures": {
1799
+ "1": {
1800
+ "name": "keyword.other.haskell"
1801
+ }
1802
+ }
1803
+ }
1804
+ ]
1805
+ },
1759
1806
  "via_simple": {
1760
1807
  "patterns": [
1761
1808
  {
@@ -27,9 +27,6 @@
27
27
  },
28
28
  {
29
29
  "include": "#dot"
30
- },
31
- {
32
- "include": "#bareword"
33
30
  }
34
31
  ],
35
32
  "repository": {
@@ -41,8 +38,44 @@
41
38
  "name": "constant.logical.bool.boolean.${1:/downcase}",
42
39
  "match": "\\b(true|false|TRUE|FALSE)\\b"
43
40
  },
41
+ "bracket": {
42
+ "patterns": [
43
+ {
44
+ "name": "punctuation.definition.bracket.curly.brace.begin",
45
+ "match": "\\{"
46
+ },
47
+ {
48
+ "name": "punctuation.definition.bracket.curly.brace.end",
49
+ "match": "\\}"
50
+ },
51
+ {
52
+ "name": "punctuation.definition.bracket.square.begin",
53
+ "match": "\\["
54
+ },
55
+ {
56
+ "name": "punctuation.definition.bracket.square.end",
57
+ "match": "\\]"
58
+ },
59
+ {
60
+ "name": "punctuation.definition.bracket.round.parenthesis.begin",
61
+ "match": "\\("
62
+ },
63
+ {
64
+ "name": "punctuation.definition.bracket.round.parenthesis.end",
65
+ "match": "\\)"
66
+ },
67
+ {
68
+ "name": "punctuation.definition.bracket.angle.begin",
69
+ "match": "\u003c"
70
+ },
71
+ {
72
+ "name": "punctuation.definition.bracket.angle.end",
73
+ "match": "\u003e"
74
+ }
75
+ ]
76
+ },
44
77
  "colon": {
45
- "name": "keyword.operator.assignment.key-value.colon",
78
+ "name": "punctuation.delimiter.separator.colon",
46
79
  "match": ":"
47
80
  },
48
81
  "comma": {
@@ -50,6 +83,13 @@
50
83
  "match": ","
51
84
  },
52
85
  "comment": {
86
+ "patterns": [
87
+ {
88
+ "include": "#commentHash"
89
+ }
90
+ ]
91
+ },
92
+ "commentHash": {
53
93
  "name": "comment.line.number-sign",
54
94
  "begin": "#",
55
95
  "end": "$",
@@ -59,10 +99,59 @@
59
99
  }
60
100
  }
61
101
  },
102
+ "commentSemi": {
103
+ "name": "comment.line.semicolon",
104
+ "begin": ";+",
105
+ "end": "$",
106
+ "beginCaptures": {
107
+ "0": {
108
+ "name": "punctuation.definition.comment"
109
+ }
110
+ }
111
+ },
112
+ "commentSlash": {
113
+ "name": "comment.line.double-slash",
114
+ "begin": "//",
115
+ "end": "$",
116
+ "beginCaptures": {
117
+ "0": {
118
+ "name": "punctuation.definition.comment"
119
+ }
120
+ }
121
+ },
122
+ "dash": {
123
+ "name": "punctuation.delimiter.separator.dash.hyphen",
124
+ "match": "-"
125
+ },
62
126
  "dot": {
63
127
  "name": "punctuation.delimiter.separator.property.period.dot",
64
128
  "match": "\\."
65
129
  },
130
+ "dotPair": {
131
+ "name": "keyword.operator.punctuation.dots.splat.range.spread.rest",
132
+ "match": "\\.\\.|‥"
133
+ },
134
+ "dotTrail": {
135
+ "name": "punctuation.delimiter.separator.dotted.border.leader.dots",
136
+ "match": "\\.{4,}"
137
+ },
138
+ "dots": {
139
+ "patterns": [
140
+ {
141
+ "include": "#ellipsis"
142
+ },
143
+ {
144
+ "include": "#dotPair"
145
+ },
146
+ {
147
+ "include": "#dot"
148
+ }
149
+ ]
150
+ },
151
+ "ellipsis": {
152
+ "name": "keyword.operator.punctuation.ellipsis.splat.range.spread.rest",
153
+ "match": "\\.{3}|…"
154
+ },
66
155
  "eql": {
67
156
  "name": "keyword.operator.assignment.key-value.equals-sign",
68
157
  "match": "="
@@ -94,6 +183,14 @@
94
183
  "name": "constant.numeric.float.real.decimal.dec",
95
184
  "match": "[-+]?(?:[0-9]*\\.[0-9]+|[0-9]+\\.)++"
96
185
  },
186
+ "hex": {
187
+ "name": "constant.numeric.integer.int.hexadecimal.hex",
188
+ "match": "[-+]?[A-Fa-f0-9]+"
189
+ },
190
+ "hexNoSign": {
191
+ "name": "constant.numeric.integer.int.hexadecimal.hex",
192
+ "match": "[A-Fa-f0-9]+"
193
+ },
97
194
  "int": {
98
195
  "patterns": [
99
196
  {
@@ -112,6 +209,23 @@
112
209
  "name": "constant.numeric.integer.int.decimal.dec",
113
210
  "match": "[-+]?[0-9]+"
114
211
  },
212
+ "ip": {
213
+ "name": "constant.numeric.other.ip-address",
214
+ "match": "(?:\\d+\\.){3,}\\d+(?=\\s|$)",
215
+ "captures": {
216
+ "0": {
217
+ "patterns": [
218
+ {
219
+ "include": "#dot"
220
+ }
221
+ ]
222
+ }
223
+ }
224
+ },
225
+ "kolon": {
226
+ "name": "keyword.operator.assignment.key-value.colon",
227
+ "match": ":"
228
+ },
115
229
  "num": {
116
230
  "patterns": [
117
231
  {
@@ -122,6 +236,227 @@
122
236
  }
123
237
  ]
124
238
  },
239
+ "op": {
240
+ "patterns": [
241
+ {
242
+ "include": "#opBitAssign"
243
+ },
244
+ {
245
+ "include": "#opMathAssign"
246
+ },
247
+ {
248
+ "include": "#opBit"
249
+ },
250
+ {
251
+ "include": "#opFix"
252
+ },
253
+ {
254
+ "include": "#opCmp"
255
+ },
256
+ {
257
+ "include": "#opLog"
258
+ },
259
+ {
260
+ "include": "#opMath"
261
+ }
262
+ ]
263
+ },
264
+ "opBit": {
265
+ "patterns": [
266
+ {
267
+ "name": "keyword.operator.bitwise.xor",
268
+ "match": "\\^"
269
+ },
270
+ {
271
+ "name": "keyword.operator.bitwise.not",
272
+ "match": "~"
273
+ },
274
+ {
275
+ "name": "keyword.operator.bitwise.and",
276
+ "match": "\u0026"
277
+ },
278
+ {
279
+ "name": "keyword.operator.bitwise.or",
280
+ "match": "\\|"
281
+ },
282
+ {
283
+ "name": "keyword.operator.bitwise.shift.left",
284
+ "match": "\u003c\u003c"
285
+ },
286
+ {
287
+ "name": "keyword.operator.bitwise.shift.right.unsigned",
288
+ "match": "\u003e\u003e\u003e"
289
+ },
290
+ {
291
+ "name": "keyword.operator.bitwise.shift.right.signed",
292
+ "match": "\u003e\u003e"
293
+ }
294
+ ]
295
+ },
296
+ "opBitAssign": {
297
+ "patterns": [
298
+ {
299
+ "name": "keyword.operator.assignment.bitwise.xor",
300
+ "match": "\\^="
301
+ },
302
+ {
303
+ "name": "keyword.operator.assignment.bitwise.not",
304
+ "match": "~="
305
+ },
306
+ {
307
+ "name": "keyword.operator.assignment.bitwise.and",
308
+ "match": "\u0026="
309
+ },
310
+ {
311
+ "name": "keyword.operator.assignment.bitwise.or",
312
+ "match": "\\|="
313
+ },
314
+ {
315
+ "name": "keyword.operator.assignment.bitwise.shift.left",
316
+ "match": "\u003c\u003c="
317
+ },
318
+ {
319
+ "name": "keyword.operator.assignment.bitwise.shift.right.unsigned",
320
+ "match": "\u003e\u003e\u003e="
321
+ },
322
+ {
323
+ "name": "keyword.operator.assignment.bitwise.shift.right.signed",
324
+ "match": "\u003e\u003e="
325
+ }
326
+ ]
327
+ },
328
+ "opCmp": {
329
+ "patterns": [
330
+ {
331
+ "name": "keyword.operator.logical.comparison.starship.spaceship",
332
+ "match": "\u003c=\u003e"
333
+ },
334
+ {
335
+ "name": "keyword.operator.logical.comparison.less-than-or-equal-to.lte",
336
+ "match": "\u003c="
337
+ },
338
+ {
339
+ "name": "keyword.operator.logical.comparison.less-than.lt",
340
+ "match": "\u003c"
341
+ },
342
+ {
343
+ "name": "keyword.operator.logical.comparison.greater-than-or-equal-to.gte",
344
+ "match": "\u003e="
345
+ },
346
+ {
347
+ "name": "keyword.operator.logical.comparison.greater-than.gt",
348
+ "match": "\u003e"
349
+ },
350
+ {
351
+ "name": "keyword.operator.logical.comparison.equal-to.equals.equal.eql.eq.strict",
352
+ "match": "==="
353
+ },
354
+ {
355
+ "name": "keyword.operator.logical.comparison.equal-to.equals.equal.eql.eq",
356
+ "match": "=="
357
+ },
358
+ {
359
+ "name": "keyword.operator.logical.comparison.not-equal-to.not-equal.unequal.neql.ne.strict",
360
+ "match": "!=="
361
+ },
362
+ {
363
+ "name": "keyword.operator.logical.comparison.not-equal-to.not-equal.unequal.neql.ne",
364
+ "match": "!="
365
+ }
366
+ ]
367
+ },
368
+ "opFix": {
369
+ "patterns": [
370
+ {
371
+ "name": "keyword.operator.increment",
372
+ "match": "\\+{2}"
373
+ },
374
+ {
375
+ "name": "keyword.operator.decrement",
376
+ "match": "-{2}"
377
+ }
378
+ ]
379
+ },
380
+ "opLog": {
381
+ "patterns": [
382
+ {
383
+ "name": "keyword.operator.logical.boolean.cast",
384
+ "match": "!!"
385
+ },
386
+ {
387
+ "name": "keyword.operator.logical.boolean.not.negation.negate",
388
+ "match": "!"
389
+ },
390
+ {
391
+ "name": "keyword.operator.logical.boolean.and",
392
+ "match": "\u0026\u0026"
393
+ },
394
+ {
395
+ "name": "keyword.operator.logical.boolean.or",
396
+ "match": "\\|{2}"
397
+ },
398
+ {
399
+ "name": "keyword.operator.logical.boolean.or.nullish",
400
+ "match": "\\?{2}"
401
+ }
402
+ ]
403
+ },
404
+ "opMath": {
405
+ "patterns": [
406
+ {
407
+ "name": "keyword.operator.arithmetic.exponentiation.exponent.exp.power",
408
+ "match": "\\*{2}|\\^"
409
+ },
410
+ {
411
+ "name": "keyword.operator.arithmetic.addition.add.plus",
412
+ "match": "\\+"
413
+ },
414
+ {
415
+ "name": "keyword.operator.arithmetic.multiplication.multiply.times",
416
+ "match": "\\*"
417
+ },
418
+ {
419
+ "name": "keyword.operator.arithmetic.division.divide",
420
+ "match": "/"
421
+ },
422
+ {
423
+ "name": "keyword.operator.arithmetic.remainder.modulo.modulus.mod",
424
+ "match": "%"
425
+ },
426
+ {
427
+ "name": "keyword.operator.arithmetic.subtraction.subtract.minus",
428
+ "match": "[-֊־᐀᠆‐-―⸗⸚⸺⸻⹀〜〰゠︱︲﹘﹣-]"
429
+ }
430
+ ]
431
+ },
432
+ "opMathAssign": {
433
+ "patterns": [
434
+ {
435
+ "name": "keyword.operator.assignment.arithmetic.exponentiation.exponent.exp.power",
436
+ "match": "\\*{2}="
437
+ },
438
+ {
439
+ "name": "keyword.operator.assignment.arithmetic.addition.add.plus",
440
+ "match": "\\+="
441
+ },
442
+ {
443
+ "name": "keyword.operator.assignment.arithmetic.multiplication.multiply.times",
444
+ "match": "\\*="
445
+ },
446
+ {
447
+ "name": "keyword.operator.assignment.arithmetic.division.divide",
448
+ "match": "/="
449
+ },
450
+ {
451
+ "name": "keyword.operator.assignment.arithmetic.remainder.modulo.modulus.mod",
452
+ "match": "%="
453
+ },
454
+ {
455
+ "name": "keyword.operator.assignment.arithmetic.subtraction.subtract.minus",
456
+ "match": "[-֊־᐀᠆‐-―⸗⸚⸺⸻⹀〜〰゠︱︲﹘﹣-]="
457
+ }
458
+ ]
459
+ },
125
460
  "str": {
126
461
  "patterns": [
127
462
  {
@@ -171,6 +506,139 @@
171
506
  "name": "punctuation.definition.string.end"
172
507
  }
173
508
  }
509
+ },
510
+ "tab": {
511
+ "patterns": [
512
+ {
513
+ "match": "^\\t+",
514
+ "captures": {
515
+ "0": {
516
+ "patterns": [
517
+ {
518
+ "name": "punctuation.whitespace.leading.tab.hard-tab",
519
+ "match": "\\t"
520
+ }
521
+ ]
522
+ }
523
+ }
524
+ },
525
+ {
526
+ "match": "\\t+$",
527
+ "captures": {
528
+ "0": {
529
+ "patterns": [
530
+ {
531
+ "name": "punctuation.whitespace.trailing.tab.hard-tab",
532
+ "match": "\\t"
533
+ }
534
+ ]
535
+ }
536
+ }
537
+ },
538
+ {
539
+ "name": "punctuation.whitespace.tab.hard-tab",
540
+ "match": "\\t"
541
+ }
542
+ ]
543
+ },
544
+ "url": {
545
+ "patterns": [
546
+ {
547
+ "match": "(?x)\n(\"|'|\\b)\n(\n\t# Protocol\n\t( https?\n\t| s?ftp\n\t| ftps\n\t| file\n\t| wss?\n\t| smb\n\t| git (?:\\+https?)?\n\t| ssh\n\t| rsync\n\t| afp\n\t| nfs\n\t| (?:x-)?man(?:-page)?\n\t| gopher\n\t| txmt\n\t| issue\n\t| atom\n\t) ://\n\t\n\t# Path specifier\n\t(?:\n\t\t(?! \\#\\w*\\#)\n\t\t(?: [-:\\@\\w.,~%+_/?=\u0026\\#;|!])\n\t)+\n\t\n\t# Don't include trailing punctuation\n\t(?\u003c![-.,?:\\#;])\n)\n(\\1)",
548
+ "captures": {
549
+ "1": {
550
+ "name": "punctuation.definition.link.begin.url"
551
+ },
552
+ "2": {
553
+ "name": "constant.other.reference.link.underline.$3.url"
554
+ },
555
+ "4": {
556
+ "name": "punctuation.definition.link.end.url"
557
+ }
558
+ }
559
+ },
560
+ {
561
+ "match": "(?x)\n(\"|'|\\b)\n(\n\tmailto (:)\n\t(?:\n\t\t(?! \\#\\w*\\#)\n\t\t(?: [-:@\\w.,~%+_/?=\u0026\\#;|!])\n\t)+\n\t(?\u003c![-.,?:\\#;])\n)\n(\\1)",
562
+ "captures": {
563
+ "1": {
564
+ "name": "punctuation.definition.link.begin.url"
565
+ },
566
+ "2": {
567
+ "name": "constant.other.reference.link.underline.mailto.url"
568
+ },
569
+ "3": {
570
+ "name": "punctuation.separator.delimiter.scheme.url"
571
+ },
572
+ "4": {
573
+ "name": "punctuation.definition.link.end.url"
574
+ }
575
+ }
576
+ }
577
+ ]
578
+ },
579
+ "version": {
580
+ "name": "constant.other.version-string",
581
+ "match": "(?x)\n(\"|'|\\b)\n([vV]?)\n(0 | [1-9]\\d*) (\\.)\n(0 | [1-9]\\d*) (\\.)\n(0 | [1-9]\\d*)\n(?:\n\t(-)\n\t(\n\t\t(?: 0\n\t\t| [1-9]\\d*\n\t\t| \\d*[a-zA-Z-][0-9a-zA-Z-]*\n\t\t)\n\t\t\n\t\t(?:\n\t\t\t\\.\n\t\t\t(?: 0\n\t\t\t| [1-9]\\d*\n\t\t\t| \\d*[a-zA-Z-][0-9a-zA-Z-]*\n\t\t\t)\n\t\t)*\n\t)\n)?\n(?:\n\t(\\+)\n\t(\n\t\t[0-9a-zA-Z-]+\n\t\t(?:\\.[0-9a-zA-Z-]+)*\n\t)\n)?\n(\\1)",
582
+ "captures": {
583
+ "1": {
584
+ "name": "punctuation.definition.version-string.begin"
585
+ },
586
+ "10": {
587
+ "name": "punctuation.delimiter.separator.plus"
588
+ },
589
+ "11": {
590
+ "name": "meta.build-metadata",
591
+ "patterns": [
592
+ {
593
+ "include": "#dot"
594
+ }
595
+ ]
596
+ },
597
+ "12": {
598
+ "name": "punctuation.definition.version-string.end"
599
+ },
600
+ "2": {
601
+ "name": "punctuation.definition.version-prefix"
602
+ },
603
+ "3": {
604
+ "name": "meta.major.release-number"
605
+ },
606
+ "4": {
607
+ "patterns": [
608
+ {
609
+ "include": "#dot"
610
+ }
611
+ ]
612
+ },
613
+ "5": {
614
+ "name": "meta.minor.release-number"
615
+ },
616
+ "6": {
617
+ "patterns": [
618
+ {
619
+ "include": "#dot"
620
+ }
621
+ ]
622
+ },
623
+ "7": {
624
+ "name": "meta.patch.release-number"
625
+ },
626
+ "8": {
627
+ "patterns": [
628
+ {
629
+ "include": "#dash"
630
+ }
631
+ ]
632
+ },
633
+ "9": {
634
+ "name": "meta.prerelease.release-number",
635
+ "patterns": [
636
+ {
637
+ "include": "#dot"
638
+ }
639
+ ]
640
+ }
641
+ }
174
642
  }
175
643
  }
176
644
  }