github-linguist 5.3.3 → 6.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (460) hide show
  1. checksums.yaml +4 -4
  2. data/bin/git-linguist +5 -2
  3. data/ext/linguist/linguist.c +18 -7
  4. data/grammars/annotation.liquidhaskell.haskell.json +969 -862
  5. data/grammars/config.xcompose.json +22 -25
  6. data/grammars/file.lasso.json +296 -309
  7. data/grammars/hint.haskell.json +867 -766
  8. data/grammars/hint.message.haskell.json +867 -766
  9. data/grammars/hint.type.haskell.json +867 -766
  10. data/grammars/objdump.x86asm.json +20 -24
  11. data/grammars/source.Kotlin.json +220 -225
  12. data/grammars/source.LS.json +36 -55
  13. data/grammars/source.MCPOST.json +24 -38
  14. data/grammars/source.MOD.json +26 -41
  15. data/grammars/source.SASLog.json +9 -16
  16. data/grammars/source.abap.json +48 -56
  17. data/grammars/source.abl.json +8 -14
  18. data/grammars/source.abnf.json +88 -98
  19. data/grammars/source.actionscript.3.json +398 -429
  20. data/grammars/source.acucobol.json +5 -8
  21. data/grammars/source.ada.json +46 -53
  22. data/grammars/source.afm.json +548 -554
  23. data/grammars/source.agc.json +34 -37
  24. data/grammars/source.agda.json +79 -91
  25. data/grammars/source.ahk.json +62 -66
  26. data/grammars/source.alloy.json +16 -20
  27. data/grammars/source.ampl.json +41 -47
  28. data/grammars/source.angelscript.json +71 -80
  29. data/grammars/source.antlr.json +131 -136
  30. data/grammars/source.apache-config.json +93 -99
  31. data/grammars/source.apache-config.mod_perl.json +19 -24
  32. data/grammars/source.apl.json +1038 -1029
  33. data/grammars/source.applescript.json +501 -523
  34. data/grammars/source.apt.json +9 -16
  35. data/grammars/source.asn.json +27 -31
  36. data/grammars/source.asp.json +61 -67
  37. data/grammars/source.aspectj.json +385 -391
  38. data/grammars/source.assembly.json +49 -55
  39. data/grammars/source.ats.json +45 -121
  40. data/grammars/source.autoit.json +64 -69
  41. data/grammars/source.awk.json +172 -176
  42. data/grammars/source.ballerina.json +48 -395
  43. data/grammars/source.batchfile.json +269 -269
  44. data/grammars/source.befunge.json +17 -21
  45. data/grammars/source.bf.json +5 -11
  46. data/grammars/source.bison.json +10 -14
  47. data/grammars/source.blitzmax.json +300 -305
  48. data/grammars/source.boo.json +189 -193
  49. data/grammars/source.brightauthorproject.json +8 -13
  50. data/grammars/source.brightscript.json +37 -47
  51. data/grammars/source.bro.json +134 -140
  52. data/grammars/source.bsl.json +152 -193
  53. data/grammars/source.bsv.json +96 -102
  54. data/grammars/source.c++.json +176 -193
  55. data/grammars/source.c++.qt.json +13 -21
  56. data/grammars/source.c.ec.json +15 -21
  57. data/grammars/source.c.json +237 -251
  58. data/grammars/source.c.platform.json +153 -159
  59. data/grammars/source.c2hs.json +3 -6
  60. data/grammars/source.cabal.json +17 -20
  61. data/grammars/source.cache.cmake.json +18 -23
  62. data/grammars/source.cake.json +4 -7
  63. data/grammars/source.camlp4.ocaml.json +24 -27
  64. data/grammars/source.capnp.json +33 -38
  65. data/grammars/source.ceylon.json +44 -50
  66. data/grammars/source.cfscript.cfc.json +78 -86
  67. data/grammars/source.cfscript.json +513 -520
  68. data/grammars/source.changelogs.rpm-spec.json +8 -16
  69. data/grammars/source.chapel.json +109 -87
  70. data/grammars/source.cirru.json +25 -30
  71. data/grammars/source.clarion.json +41 -54
  72. data/grammars/source.clean.json +90 -95
  73. data/grammars/source.click.json +25 -28
  74. data/grammars/source.clips.json +10 -23
  75. data/grammars/source.clojure.json +151 -168
  76. data/grammars/source.cm.json +14 -19
  77. data/grammars/source.cmake.json +53 -61
  78. data/grammars/source.cobol.json +165 -180
  79. data/grammars/source.coffee.json +454 -462
  80. data/grammars/source.cool.json +36 -43
  81. data/grammars/source.coq.json +17 -21
  82. data/grammars/source.crystal.json +889 -983
  83. data/grammars/source.cs.json +739 -740
  84. data/grammars/source.csound-document.json +69 -73
  85. data/grammars/source.csound-score.json +52 -55
  86. data/grammars/source.csound.json +167 -171
  87. data/grammars/source.css.json +683 -688
  88. data/grammars/source.css.less.json +211 -511
  89. data/grammars/source.css.mss.json +94 -101
  90. data/grammars/source.css.postcss.sugarss.json +260 -0
  91. data/grammars/source.csx.json +4 -7
  92. data/grammars/source.cuda-c++.json +47 -81
  93. data/grammars/source.cwl.json +103 -0
  94. data/grammars/source.cython.json +536 -582
  95. data/grammars/source.d.json +243 -252
  96. data/grammars/source.dart.json +161 -166
  97. data/grammars/source.data-weave.json +901 -905
  98. data/grammars/source.desktop.json +29 -33
  99. data/grammars/source.diff.json +43 -52
  100. data/grammars/source.disasm.json +15 -16
  101. data/grammars/source.ditroff.desc.json +73 -84
  102. data/grammars/source.ditroff.json +60 -61
  103. data/grammars/source.dm.json +202 -213
  104. data/grammars/source.dmf.json +44 -47
  105. data/grammars/source.dockerfile.json +29 -34
  106. data/grammars/source.dot.json +46 -55
  107. data/grammars/source.dylan.json +63 -68
  108. data/grammars/source.ebnf.json +55 -62
  109. data/grammars/source.eiffel.json +57 -62
  110. data/grammars/source.elixir.json +321 -366
  111. data/grammars/source.emacs.lisp.json +458 -249
  112. data/grammars/source.erazor.json +49 -57
  113. data/grammars/source.erlang.json +508 -515
  114. data/grammars/source.essl.json +17 -30
  115. data/grammars/source.factor.json +85 -91
  116. data/grammars/source.fan.json +92 -96
  117. data/grammars/source.fancy.json +93 -118
  118. data/grammars/source.fish.json +74 -98
  119. data/grammars/source.fontforge.json +142 -146
  120. data/grammars/source.forth.json +42 -57
  121. data/grammars/source.fortran.json +193 -231
  122. data/grammars/source.fortran.modern.json +77 -103
  123. data/grammars/source.fsharp.fsi.json +1 -6
  124. data/grammars/source.fsharp.fsl.json +1 -6
  125. data/grammars/source.fsharp.fsx.json +1 -6
  126. data/grammars/source.fsharp.json +148 -153
  127. data/grammars/source.gap.json +60 -70
  128. data/grammars/source.gcode.json +9 -16
  129. data/grammars/source.gdb.json +63 -79
  130. data/grammars/source.gdb.session.json +27 -28
  131. data/grammars/source.gdbregs.json +7 -8
  132. data/grammars/source.gdscript.json +92 -96
  133. data/grammars/source.gerber.json +38 -56
  134. data/grammars/source.gfm.json +447 -462
  135. data/grammars/source.glsl.json +58 -83
  136. data/grammars/source.gn.json +188 -193
  137. data/grammars/source.gnuplot.json +104 -120
  138. data/grammars/source.go.json +169 -181
  139. data/grammars/source.golo.json +82 -87
  140. data/grammars/source.gosu.2.json +58 -68
  141. data/grammars/source.grace.json +266 -270
  142. data/grammars/source.graphql.json +586 -596
  143. data/grammars/source.groovy.gradle.json +18 -22
  144. data/grammars/source.groovy.json +422 -433
  145. data/grammars/source.harbour.json +129 -173
  146. data/grammars/source.haskell.json +871 -772
  147. data/grammars/source.haxe.2.json +402 -413
  148. data/grammars/source.hlsl.json +6 -16
  149. data/grammars/source.hsc2hs.json +1 -4
  150. data/grammars/source.hsig.json +871 -770
  151. data/grammars/source.hss.1.json +122 -144
  152. data/grammars/source.httpspec.json +119 -123
  153. data/grammars/source.hxml.json +8 -15
  154. data/grammars/source.ideal.json +125 -125
  155. data/grammars/source.idl-dlm.json +25 -32
  156. data/grammars/source.idl.json +59 -80
  157. data/grammars/source.idris.json +171 -185
  158. data/grammars/source.inform7.json +117 -121
  159. data/grammars/source.ini.json +37 -43
  160. data/grammars/source.io.json +65 -73
  161. data/grammars/source.ioke.json +72 -78
  162. data/grammars/source.isabelle.root.json +26 -30
  163. data/grammars/source.isabelle.theory.json +46 -50
  164. data/grammars/source.j.json +18 -21
  165. data/grammars/source.jasmin.json +45 -50
  166. data/grammars/source.java-properties.json +31 -41
  167. data/grammars/source.java.json +333 -342
  168. data/grammars/source.jcl.json +15 -18
  169. data/grammars/source.jflex.json +166 -172
  170. data/grammars/source.jison.json +331 -334
  171. data/grammars/source.jisonlex-injection.json +1 -2
  172. data/grammars/source.jisonlex.json +148 -151
  173. data/grammars/source.jolie.json +37 -43
  174. data/grammars/source.jq.json +80 -87
  175. data/grammars/source.js.json +798 -818
  176. data/grammars/source.js.jsx.json +2115 -2225
  177. data/grammars/source.js.objj.json +167 -172
  178. data/grammars/source.js.regexp.json +50 -50
  179. data/grammars/source.js.regexp.replacement.json +7 -7
  180. data/grammars/source.jsdoc.json +94 -94
  181. data/grammars/source.json.json +61 -71
  182. data/grammars/source.julia.console.json +5 -6
  183. data/grammars/source.julia.json +237 -234
  184. data/grammars/source.lean.json +55 -67
  185. data/grammars/source.lid.json +6 -10
  186. data/grammars/source.lilypond.json +181 -195
  187. data/grammars/source.lisp.json +40 -50
  188. data/grammars/source.litcoffee.json +169 -183
  189. data/grammars/source.livescript.json +207 -220
  190. data/grammars/source.llvm.json +28 -38
  191. data/grammars/source.logos.json +7 -14
  192. data/grammars/source.logtalk.json +136 -141
  193. data/grammars/source.loomscript.json +77 -83
  194. data/grammars/source.lsl.json +90 -106
  195. data/grammars/source.lua.json +100 -109
  196. data/grammars/source.makefile.json +181 -188
  197. data/grammars/source.makegen.json +3 -7
  198. data/grammars/source.mask.json +260 -265
  199. data/grammars/source.mata.json +38 -46
  200. data/grammars/source.mathematica.json +155 -167
  201. data/grammars/source.matlab.json +407 -684
  202. data/grammars/source.maxscript.json +293 -281
  203. data/grammars/source.mercury.json +179 -184
  204. data/grammars/source.meson.json +52 -58
  205. data/grammars/source.meta-info.json +64 -74
  206. data/grammars/source.ml.json +107 -113
  207. data/grammars/source.modelica.json +51 -59
  208. data/grammars/source.modula2.json +33 -42
  209. data/grammars/source.monkey.json +234 -241
  210. data/grammars/source.moonscript.json +51 -56
  211. data/grammars/source.mql5.json +74 -101
  212. data/grammars/source.mupad.json +30 -72
  213. data/grammars/source.ncl.json +1 -14
  214. data/grammars/source.ne.json +39 -42
  215. data/grammars/source.nemerle.json +58 -63
  216. data/grammars/source.nesc.json +9 -15
  217. data/grammars/source.netlinx.erb.json +13 -25
  218. data/grammars/source.netlinx.json +231 -292
  219. data/grammars/source.nextflow-groovy.json +1360 -0
  220. data/grammars/source.nextflow.json +74 -0
  221. data/grammars/source.nginx.json +274 -287
  222. data/grammars/source.nim.json +442 -483
  223. data/grammars/source.nim_filter.json +6 -26
  224. data/grammars/source.nimcfg.json +38 -51
  225. data/grammars/source.ninja.json +64 -70
  226. data/grammars/source.nit.json +60 -64
  227. data/grammars/source.nix.json +269 -273
  228. data/grammars/source.nmml.json +31 -37
  229. data/grammars/source.nsis.json +66 -72
  230. data/grammars/source.nu.json +129 -139
  231. data/grammars/source.nut.json +129 -133
  232. data/grammars/source.objc++.json +3 -10
  233. data/grammars/source.objc.json +303 -314
  234. data/grammars/source.objc.platform.json +145 -151
  235. data/grammars/source.ocaml.json +506 -514
  236. data/grammars/source.ocamllex.json +108 -115
  237. data/grammars/source.ocamlyacc.json +116 -123
  238. data/grammars/source.ooc.json +148 -155
  239. data/grammars/source.opa.json +39 -49
  240. data/grammars/source.opal.json +84 -89
  241. data/grammars/source.opalsysdefs.json +9 -13
  242. data/grammars/source.opencobol.json +22 -25
  243. data/grammars/source.opentype.json +148 -152
  244. data/grammars/source.ox.json +36 -44
  245. data/grammars/source.oz.json +31 -38
  246. data/grammars/source.p4.json +49 -59
  247. data/grammars/source.pan.json +273 -278
  248. data/grammars/source.papyrus.skyrim.json +705 -781
  249. data/grammars/source.parrot.pir.json +59 -65
  250. data/grammars/source.pascal.json +54 -61
  251. data/grammars/source.pawn.json +835 -849
  252. data/grammars/source.pcb.board.json +153 -158
  253. data/grammars/source.pcb.schematic.json +134 -138
  254. data/grammars/source.pcb.sexp.json +64 -74
  255. data/grammars/source.pep8.json +28 -32
  256. data/grammars/source.perl.6.json +83 -92
  257. data/grammars/source.perl.json +711 -737
  258. data/grammars/source.perl6fe.json +1204 -1218
  259. data/grammars/source.php.zephir.json +80 -89
  260. data/grammars/source.pic.json +137 -142
  261. data/grammars/source.pig_latin.json +76 -80
  262. data/grammars/source.pike.json +23 -36
  263. data/grammars/source.po.json +74 -84
  264. data/grammars/source.pogoscript.json +23 -29
  265. data/grammars/source.pony.json +98 -108
  266. data/grammars/source.postcss.json +370 -0
  267. data/grammars/source.postscript.json +88 -97
  268. data/grammars/source.pov-ray sdl.json +36 -42
  269. data/grammars/source.powershell.json +175 -197
  270. data/grammars/source.processing.json +236 -249
  271. data/grammars/source.prolog.eclipse.json +33 -38
  272. data/grammars/source.prolog.json +66 -72
  273. data/grammars/source.protobuf.json +88 -94
  274. data/grammars/source.puppet.json +144 -151
  275. data/grammars/source.purescript.json +268 -289
  276. data/grammars/source.pyjade.json +256 -281
  277. data/grammars/source.python.django.json +13 -18
  278. data/grammars/source.python.json +3319 -3367
  279. data/grammars/source.python.salt.json +3 -7
  280. data/grammars/source.qmake.json +83 -90
  281. data/grammars/source.qml.json +57 -78
  282. data/grammars/source.quoting.perl6fe.json +666 -669
  283. data/grammars/source.r.json +75 -84
  284. data/grammars/source.racket.json +17 -38
  285. data/grammars/source.rascal.json +77 -80
  286. data/grammars/source.reason.hover.type.json +1 -1
  287. data/grammars/source.reason.json +1025 -1080
  288. data/grammars/source.rebol.json +167 -177
  289. data/grammars/source.red.json +169 -177
  290. data/grammars/source.regexp.babel.json +74 -77
  291. data/grammars/source.regexp.extended.json +4 -5
  292. data/grammars/source.regexp.json +260 -264
  293. data/grammars/source.regexp.perl6fe.json +108 -111
  294. data/grammars/source.regexp.python.json +210 -215
  295. data/grammars/source.regexp.spin.json +63 -72
  296. data/grammars/source.renpy.json +617 -687
  297. data/grammars/source.rexx.json +25 -32
  298. data/grammars/source.ring.json +84 -114
  299. data/grammars/source.rpm-spec.json +392 -401
  300. data/grammars/source.ruby.gemfile.json +9 -12
  301. data/grammars/source.ruby.json +862 -952
  302. data/grammars/source.ruby.rspec.cucumber.steps.json +90 -103
  303. data/grammars/source.rust.json +223 -281
  304. data/grammars/source.sas.json +88 -105
  305. data/grammars/source.sass.json +100 -108
  306. data/grammars/source.sbt.json +16 -23
  307. data/grammars/source.scad.json +60 -67
  308. data/grammars/source.scala.json +215 -228
  309. data/grammars/source.scaml.json +120 -135
  310. data/grammars/source.scheme.json +119 -136
  311. data/grammars/source.scilab.json +40 -47
  312. data/grammars/source.scss.json +369 -403
  313. data/grammars/source.sdbl.json +14 -25
  314. data/grammars/source.shaderlab.json +24 -27
  315. data/grammars/source.shell.json +409 -440
  316. data/grammars/source.shen.json +75 -94
  317. data/grammars/source.smali.json +232 -293
  318. data/grammars/source.smalltalk.json +60 -75
  319. data/grammars/source.smt.json +67 -82
  320. data/grammars/source.solidity.json +35 -54
  321. data/grammars/source.sp.json +40 -45
  322. data/grammars/source.sparql.json +3 -8
  323. data/grammars/source.spin.json +277 -297
  324. data/grammars/source.sqf.json +34 -44
  325. data/grammars/source.sql.json +142 -156
  326. data/grammars/source.stan.json +201 -160
  327. data/grammars/source.stata.json +57 -68
  328. data/grammars/source.strings.json +26 -30
  329. data/grammars/source.stylus.json +558 -565
  330. data/grammars/source.supercollider.json +33 -40
  331. data/grammars/source.swift.json +999 -1077
  332. data/grammars/source.systemverilog.json +351 -365
  333. data/grammars/source.tcl.json +77 -94
  334. data/grammars/source.tea.json +61 -67
  335. data/grammars/source.terra.json +25 -32
  336. data/grammars/source.terraform.json +68 -88
  337. data/grammars/source.thrift.json +300 -306
  338. data/grammars/source.tl.json +112 -117
  339. data/grammars/source.tla.json +65 -69
  340. data/grammars/source.toc.json +21 -25
  341. data/grammars/source.toml.json +117 -122
  342. data/grammars/source.ts.json +2838 -2774
  343. data/grammars/source.tsx.json +180 -184
  344. data/grammars/source.turing.json +970 -974
  345. data/grammars/source.turtle.json +124 -140
  346. data/grammars/source.txl.json +23 -37
  347. data/grammars/source.ucfconstraints.json +16 -21
  348. data/grammars/source.ur.json +15 -27
  349. data/grammars/source.vala.json +221 -235
  350. data/grammars/source.varnish.vcl.json +117 -129
  351. data/grammars/source.vbnet.json +69 -106
  352. data/grammars/source.verilog.json +101 -107
  353. data/grammars/source.vhdl.json +437 -445
  354. data/grammars/source.viml.json +540 -550
  355. data/grammars/source.wavefront.mtl.json +274 -277
  356. data/grammars/source.wavefront.obj.json +781 -784
  357. data/grammars/source.wdl.json +66 -46
  358. data/grammars/source.webassembly.json +97 -102
  359. data/grammars/source.webidl.json +311 -326
  360. data/grammars/source.x10.json +28 -32
  361. data/grammars/source.x86asm.json +21 -26
  362. data/grammars/source.xc.json +164 -172
  363. data/grammars/source.xq.json +81 -92
  364. data/grammars/source.xtend.json +199 -208
  365. data/grammars/source.yaml-ext.json +118 -124
  366. data/grammars/source.yaml.json +155 -174
  367. data/grammars/source.yaml.salt.json +113 -116
  368. data/grammars/source.yang.json +10 -13
  369. data/grammars/source.yara.json +98 -0
  370. data/grammars/text.bibtex.json +95 -100
  371. data/grammars/text.cfml.basic.json +403 -404
  372. data/grammars/text.elixir.json +18 -23
  373. data/grammars/text.error-list.json +15 -16
  374. data/grammars/text.find-refs.json +487 -488
  375. data/grammars/text.gherkin.feature.json +45 -53
  376. data/grammars/text.haml.json +176 -189
  377. data/grammars/text.hamlc.json +82 -88
  378. data/grammars/text.html.abl.json +16 -21
  379. data/grammars/text.html.asciidoc.json +139 -153
  380. data/grammars/text.html.asdoc.json +145 -155
  381. data/grammars/text.html.asp.json +23 -28
  382. data/grammars/text.html.basic.json +323 -338
  383. data/grammars/text.html.cfm.json +316 -325
  384. data/grammars/text.html.creole.json +177 -189
  385. data/grammars/text.html.django.json +27 -33
  386. data/grammars/text.html.ecr.json +21 -25
  387. data/grammars/text.html.elixir.json +3 -9
  388. data/grammars/text.html.erb.json +81 -85
  389. data/grammars/text.html.erlang.yaws.json +24 -29
  390. data/grammars/text.html.factor.json +5 -11
  391. data/grammars/text.html.ftl.json +16 -25
  392. data/grammars/text.html.handlebars.json +579 -598
  393. data/grammars/text.html.javadoc.json +426 -0
  394. data/grammars/text.html.js.json +11 -17
  395. data/grammars/text.html.jsp.json +377 -384
  396. data/grammars/text.html.liquid.json +8 -18
  397. data/grammars/text.html.mako.json +257 -275
  398. data/grammars/text.html.markdown.source.gfm.apib.json +419 -427
  399. data/grammars/text.html.markdown.source.gfm.mson.json +405 -414
  400. data/grammars/text.html.mediawiki.json +318 -344
  401. data/grammars/text.html.php.blade.json +2134 -2140
  402. data/grammars/text.html.php.json +980 -1013
  403. data/grammars/text.html.slash.json +101 -107
  404. data/grammars/text.html.smarty.json +75 -83
  405. data/grammars/text.html.soy.json +250 -253
  406. data/grammars/text.html.ssp.json +18 -24
  407. data/grammars/text.html.tcl.json +17 -24
  408. data/grammars/text.html.twig.json +712 -718
  409. data/grammars/text.idl-idldoc.json +5 -9
  410. data/grammars/text.jade.json +213 -235
  411. data/grammars/text.junit-test-report.json +25 -28
  412. data/grammars/text.log.latex.json +44 -46
  413. data/grammars/text.marko.json +370 -401
  414. data/grammars/text.python.console.json +3 -7
  415. data/grammars/text.python.traceback.json +2 -5
  416. data/grammars/text.rdoc.json +15 -19
  417. data/grammars/text.restructuredtext.clean.json +8 -11
  418. data/grammars/text.restructuredtext.json +886 -873
  419. data/grammars/text.robot.json +26 -36
  420. data/grammars/text.roff.json +2852 -2915
  421. data/grammars/text.runoff.json +56 -69
  422. data/grammars/text.sfd.json +151 -155
  423. data/grammars/text.shell-session.json +5 -8
  424. data/grammars/text.slim.json +184 -210
  425. data/grammars/text.srt.json +54 -57
  426. data/grammars/text.tex.json +98 -105
  427. data/grammars/text.tex.latex.beamer.json +14 -20
  428. data/grammars/text.tex.latex.haskell.json +883 -782
  429. data/grammars/text.tex.latex.json +281 -291
  430. data/grammars/text.tex.latex.memoir.json +39 -46
  431. data/grammars/text.tex.latex.rd.json +32 -38
  432. data/grammars/text.xml.ant.json +62 -69
  433. data/grammars/text.xml.flex-config.json +1009 -1013
  434. data/grammars/text.xml.genshi.json +10 -16
  435. data/grammars/text.xml.json +117 -130
  436. data/grammars/text.xml.pom.json +235 -240
  437. data/grammars/text.xml.xsl.json +31 -37
  438. data/grammars/text.zone_file.json +24 -29
  439. data/lib/linguist/blob.rb +10 -1
  440. data/lib/linguist/blob_helper.rb +4 -1
  441. data/lib/linguist/file_blob.rb +5 -0
  442. data/lib/linguist/generated.rb +16 -0
  443. data/lib/linguist/heuristics.rb +23 -11
  444. data/lib/linguist/language.rb +3 -6
  445. data/lib/linguist/languages.json +1 -1
  446. data/lib/linguist/languages.yml +74 -12
  447. data/lib/linguist/lazy_blob.rb +15 -1
  448. data/lib/linguist/linguist.bundle +0 -0
  449. data/lib/linguist/samples.json +1666 -3381
  450. data/lib/linguist/shebang.rb +2 -0
  451. data/lib/linguist/strategy/modeline.rb +2 -0
  452. data/lib/linguist/vendor.yml +5 -6
  453. data/lib/linguist/version.rb +1 -1
  454. metadata +12 -11
  455. data/grammars/source.elm.json +0 -381
  456. data/grammars/source.nant-build.json +0 -86
  457. data/grammars/source.octave.json +0 -451
  458. data/grammars/text.html.mediawiki.elm-build-output.json +0 -111
  459. data/grammars/text.html.mediawiki.elm-documentation.json +0 -22
  460. data/grammars/text.html.vue.json +0 -936
@@ -1,17 +1,22 @@
1
1
  {
2
- "fileTypes": [
3
- "ebnf"
4
- ],
5
- "foldingStartMarker": "\\(\\*",
6
- "foldingStopMarker": "\\*\\)",
7
- "keyEquivalent": "^~E",
8
2
  "name": "EBNF",
3
+ "scopeName": "source.ebnf",
9
4
  "patterns": [
10
5
  {
11
6
  "include": "#comment"
12
7
  },
13
8
  {
9
+ "name": "meta.syntax-rule.ebnf",
14
10
  "begin": "\\s*(\\b(?:\\w|\\s|[\\-_0-9])+\\b)\\s*(=)",
11
+ "end": ";",
12
+ "patterns": [
13
+ {
14
+ "include": "#comment"
15
+ },
16
+ {
17
+ "include": "#subrules"
18
+ }
19
+ ],
15
20
  "captures": {
16
21
  "1": {
17
22
  "name": "entity.name.function.ebnf"
@@ -20,60 +25,50 @@
20
25
  "name": "keyword.operator.definition.ebnf"
21
26
  }
22
27
  },
23
- "end": ";",
24
28
  "endCaptures": {
25
29
  "0": {
26
30
  "name": "punctuation.terminator.syntax-rule.ebnf"
27
31
  }
28
- },
29
- "name": "meta.syntax-rule.ebnf",
30
- "patterns": [
31
- {
32
- "include": "#comment"
33
- },
34
- {
35
- "include": "#subrules"
36
- }
37
- ]
32
+ }
38
33
  }
39
34
  ],
40
35
  "repository": {
41
36
  "comment": {
37
+ "name": "comment.block.ebnf",
42
38
  "begin": "\\(\\*(?!\\))",
43
- "end": "\\*\\)",
44
- "name": "comment.block.ebnf"
39
+ "end": "\\*\\)"
45
40
  },
46
41
  "double-quote-string": {
42
+ "name": "string.quoted.double.ebnf",
47
43
  "begin": "\"",
48
- "end": "\"",
49
- "name": "string.quoted.double.ebnf"
44
+ "end": "\""
50
45
  },
51
46
  "group": {
52
47
  "begin": "\\(",
48
+ "end": "\\)",
49
+ "patterns": [
50
+ {
51
+ "include": "#subrules"
52
+ }
53
+ ],
53
54
  "beginCaptures": {
54
55
  "0": {
55
56
  "name": "keyword.other.group.begin.ebnf"
56
57
  }
57
58
  },
58
- "end": "\\)",
59
59
  "endCaptures": {
60
60
  "0": {
61
61
  "name": "keyword.other.group.end.ebnf"
62
62
  }
63
- },
64
- "patterns": [
65
- {
66
- "include": "#subrules"
67
- }
68
- ]
63
+ }
69
64
  },
70
65
  "invalid": {
71
- "match": "\\(\\s*[*:/]\\s*\\)",
72
- "name": "invalid.illegal.ebnf"
66
+ "name": "invalid.illegal.ebnf",
67
+ "match": "\\(\\s*[*:/]\\s*\\)"
73
68
  },
74
69
  "non-terminal": {
75
- "match": "\\w[\\w\\-_0-9]*\\w",
76
- "name": "variable.other.non-terminal.ebnf"
70
+ "name": "variable.other.non-terminal.ebnf",
71
+ "match": "\\w[\\w\\-_0-9]*\\w"
77
72
  },
78
73
  "operator": {
79
74
  "patterns": [
@@ -89,56 +84,57 @@
89
84
  ]
90
85
  },
91
86
  "operator-alternative": {
92
- "match": "\\|",
93
- "name": "keyword.operator.alternative.ebnf"
87
+ "name": "keyword.operator.alternative.ebnf",
88
+ "match": "\\|"
94
89
  },
95
90
  "operator-concatenation": {
96
- "match": ",",
97
- "name": "keyword.operator.concatenation.ebnf"
91
+ "name": "keyword.operator.concatenation.ebnf",
92
+ "match": ","
98
93
  },
99
94
  "operator-exception": {
100
- "match": "-",
101
- "name": "keyword.operator.exception.ebnf"
95
+ "name": "keyword.operator.exception.ebnf",
96
+ "match": "-"
102
97
  },
103
98
  "optional": {
104
99
  "begin": "\\[",
100
+ "end": "\\]",
101
+ "patterns": [
102
+ {
103
+ "include": "#subrules"
104
+ }
105
+ ],
105
106
  "beginCaptures": {
106
107
  "0": {
107
108
  "name": "keyword.other.optional.begin.ebnf"
108
109
  }
109
110
  },
110
- "end": "\\]",
111
111
  "endCaptures": {
112
112
  "0": {
113
113
  "name": "keyword.other.optional.end.ebnf"
114
114
  }
115
- },
115
+ }
116
+ },
117
+ "repetition": {
118
+ "begin": "{",
119
+ "end": "}",
116
120
  "patterns": [
117
121
  {
118
122
  "include": "#subrules"
119
123
  }
120
- ]
121
- },
122
- "repetition": {
123
- "begin": "{",
124
+ ],
124
125
  "beginCaptures": {
125
126
  "0": {
126
127
  "name": "keyword.other.repetition.begin.ebnf"
127
128
  }
128
129
  },
129
- "end": "}",
130
130
  "endCaptures": {
131
131
  "0": {
132
132
  "name": "keyword.other.repetition.end.ebnf"
133
133
  }
134
- },
135
- "patterns": [
136
- {
137
- "include": "#subrules"
138
- }
139
- ]
134
+ }
140
135
  },
141
136
  "repetition-numbered": {
137
+ "match": "(\\d+)\\s*(\\*)",
142
138
  "captures": {
143
139
  "1": {
144
140
  "name": "constant.numeric.integer.ebnf"
@@ -146,28 +142,27 @@
146
142
  "2": {
147
143
  "name": "keyword.operator.repetition.ebnf"
148
144
  }
149
- },
150
- "match": "(\\d+)\\s*(\\*)"
145
+ }
151
146
  },
152
147
  "single-quote-string": {
148
+ "name": "string.quoted.single.ebnf",
153
149
  "begin": "'",
154
- "end": "'",
155
- "name": "string.quoted.single.ebnf"
150
+ "end": "'"
156
151
  },
157
152
  "special-sequence": {
153
+ "name": "entity.other.attribute-name.ebnf",
158
154
  "begin": "\\?",
155
+ "end": "\\?",
159
156
  "beginCaptures": {
160
157
  "0": {
161
158
  "name": "keyword.other.special-sequence.begin.ebnf"
162
159
  }
163
160
  },
164
- "end": "\\?",
165
161
  "endCaptures": {
166
162
  "0": {
167
163
  "name": "keyword.other.special-sequence.end.ebnf"
168
164
  }
169
- },
170
- "name": "entity.other.attribute-name.ebnf"
165
+ }
171
166
  },
172
167
  "subrules": {
173
168
  "patterns": [
@@ -203,7 +198,5 @@
203
198
  }
204
199
  ]
205
200
  }
206
- },
207
- "scopeName": "source.ebnf",
208
- "uuid": "D9954069-097B-4361-818D-EF4986D442E7"
209
- }
201
+ }
202
+ }
@@ -1,128 +1,125 @@
1
1
  {
2
- "fileTypes": [
3
- "e"
4
- ],
5
- "keyEquivalent": "^~E",
6
2
  "name": "Eiffel",
3
+ "scopeName": "source.eiffel",
7
4
  "patterns": [
8
5
  {
9
6
  "begin": "(^[ \\t]+)?(?=--)",
10
- "beginCaptures": {
11
- "1": {
12
- "name": "punctuation.whitespace.comment.leading.eiffel"
13
- }
14
- },
15
7
  "end": "(?!\\G)",
16
8
  "patterns": [
17
9
  {
10
+ "name": "comment.line.double-dash.eiffel",
18
11
  "begin": "--",
12
+ "end": "\\n",
19
13
  "beginCaptures": {
20
14
  "0": {
21
15
  "name": "punctuation.definition.comment.eiffel"
22
16
  }
23
- },
24
- "end": "\\n",
25
- "name": "comment.line.double-dash.eiffel"
17
+ }
26
18
  }
27
- ]
19
+ ],
20
+ "beginCaptures": {
21
+ "1": {
22
+ "name": "punctuation.whitespace.comment.leading.eiffel"
23
+ }
24
+ }
28
25
  },
29
26
  {
30
- "match": "\\b(Indexing|indexing|deferred|expanded|class|inherit|rename|as|export|undefine|redefine|select|all|create|creation|feature|prefix|infix|separate|frozen|obsolete|local|is|unique|do|once|external|alias|require|ensure|invariant|variant|rescue|retry|like|check|if|else|elseif|then|inspect|when|from|loop|until|debug|not|or|and|xor|implies|old|end)\\b",
31
- "name": "keyword.control.eiffel"
27
+ "name": "keyword.control.eiffel",
28
+ "match": "\\b(Indexing|indexing|deferred|expanded|class|inherit|rename|as|export|undefine|redefine|select|all|create|creation|feature|prefix|infix|separate|frozen|obsolete|local|is|unique|do|once|external|alias|require|ensure|invariant|variant|rescue|retry|like|check|if|else|elseif|then|inspect|when|from|loop|until|debug|not|or|and|xor|implies|old|end)\\b"
32
29
  },
33
30
  {
34
- "match": "[a-zA-Z_]+",
35
- "name": "variable.other.eiffel"
31
+ "name": "variable.other.eiffel",
32
+ "match": "[a-zA-Z_]+"
36
33
  },
37
34
  {
38
- "match": "\\b(True|true|False|false|Void|void|Result|result)\\b",
39
- "name": "constant.language.eiffel"
35
+ "name": "constant.language.eiffel",
36
+ "match": "\\b(True|true|False|false|Void|void|Result|result)\\b"
40
37
  },
41
38
  {
39
+ "name": "meta.features.eiffel",
42
40
  "begin": "feature",
43
- "end": "end",
44
- "name": "meta.features.eiffel"
41
+ "end": "end"
45
42
  },
46
43
  {
44
+ "name": "meta.effective_routine_body.eiffel",
47
45
  "begin": "(do|once)",
48
- "end": "(ensure|end)",
49
- "name": "meta.effective_routine_body.eiffel"
46
+ "end": "(ensure|end)"
50
47
  },
51
48
  {
49
+ "name": "meta.rescue.eiffel",
52
50
  "begin": "rescue",
53
- "end": "end",
54
- "name": "meta.rescue.eiffel"
51
+ "end": "end"
55
52
  },
56
53
  {
54
+ "name": "string.quoted.double.eiffel",
57
55
  "begin": "\"",
56
+ "end": "\"",
57
+ "patterns": [
58
+ {
59
+ "name": "constant.character.escape.eiffel",
60
+ "match": "\\\\."
61
+ }
62
+ ],
58
63
  "beginCaptures": {
59
64
  "0": {
60
65
  "name": "punctuation.definition.string.begin.eiffel"
61
66
  }
62
67
  },
63
- "end": "\"",
64
68
  "endCaptures": {
65
69
  "0": {
66
70
  "name": "punctuation.definition.string.end.eiffel"
67
71
  }
68
- },
69
- "name": "string.quoted.double.eiffel",
70
- "patterns": [
71
- {
72
- "match": "\\\\.",
73
- "name": "constant.character.escape.eiffel"
74
- }
75
- ]
72
+ }
76
73
  },
77
74
  {
78
- "match": "[0-9]+",
79
- "name": "constant.numeric.eiffel"
75
+ "name": "constant.numeric.eiffel",
76
+ "match": "[0-9]+"
80
77
  },
81
78
  {
82
- "match": "\\b(deferred|expanded)\\b",
83
- "name": "storage.modifier.eiffel"
79
+ "name": "storage.modifier.eiffel",
80
+ "match": "\\b(deferred|expanded)\\b"
84
81
  },
85
82
  {
83
+ "name": "meta.definition.class.eiffel",
86
84
  "begin": "^\\s*\n\t\t\t\t\t((?:\\b(deferred|expanded)\\b\\s*)*) # modifier\n\t\t\t\t\t(class)\\s+\n\t\t\t\t\t(\\w+)\\s* # identifier",
87
- "captures": {
88
- "1": {
89
- "name": "storage.modifier.eiffel"
90
- }
91
- },
92
85
  "end": "(?=end)",
93
- "name": "meta.definition.class.eiffel",
94
86
  "patterns": [
95
87
  {
88
+ "name": "meta.definition.class.extends.java",
96
89
  "begin": "\\b(extends)\\b\\s+",
97
- "captures": {
98
- "1": {
99
- "name": "storage.modifier.java"
100
- }
101
- },
102
90
  "end": "(?={|implements)",
103
- "name": "meta.definition.class.extends.java",
104
91
  "patterns": [
105
92
  {
106
93
  "include": "#all-types"
107
94
  }
108
- ]
109
- },
110
- {
111
- "begin": "\\b(implements)\\b\\s+",
95
+ ],
112
96
  "captures": {
113
97
  "1": {
114
98
  "name": "storage.modifier.java"
115
99
  }
116
- },
117
- "end": "(?={|extends)",
100
+ }
101
+ },
102
+ {
118
103
  "name": "meta.definition.class.implements.java",
104
+ "begin": "\\b(implements)\\b\\s+",
105
+ "end": "(?={|extends)",
119
106
  "patterns": [
120
107
  {
121
108
  "include": "#all-types"
122
109
  }
123
- ]
110
+ ],
111
+ "captures": {
112
+ "1": {
113
+ "name": "storage.modifier.java"
114
+ }
115
+ }
116
+ }
117
+ ],
118
+ "captures": {
119
+ "1": {
120
+ "name": "storage.modifier.eiffel"
124
121
  }
125
- ]
122
+ }
126
123
  }
127
124
  ],
128
125
  "repository": {
@@ -132,7 +129,5 @@
132
129
  "variable": {
133
130
  "match": "[a-zA-Z0-9_]+"
134
131
  }
135
- },
136
- "scopeName": "source.eiffel",
137
- "uuid": "34672373-DED9-45B8-AF7E-2E4B6C3D6B76"
138
- }
132
+ }
133
+ }
@@ -1,37 +1,34 @@
1
1
  {
2
- "comment": "Textmate bundle for Elixir Programming Language.",
3
- "fileTypes": [
4
- "ex",
5
- "exs"
6
- ],
7
- "firstLineMatch": "^#!/.*\\belixir",
8
- "foldingStartMarker": "(after|else|catch|rescue|\\-\\>|\\{|\\[|do)\\s*$",
9
- "foldingStopMarker": "^\\s*((\\}|\\]|after|else|catch|rescue)\\s*$|end\\b)",
10
- "keyEquivalent": "^~E",
11
2
  "name": "Elixir",
3
+ "scopeName": "source.elixir",
12
4
  "patterns": [
13
5
  {
14
- "begin": "\\b(fn)\\b(?!.*->)",
6
+ "begin": "\\b(fn)\\b(?!.*-\u003e)",
7
+ "end": "$",
8
+ "patterns": [
9
+ {
10
+ "include": "#core_syntax"
11
+ }
12
+ ],
15
13
  "beginCaptures": {
16
14
  "1": {
17
15
  "name": "keyword.control.elixir"
18
16
  }
19
- },
20
- "end": "$",
17
+ }
18
+ },
19
+ {
20
+ "begin": "\\b(fn)\\b(?=.*-\u003e)",
21
+ "end": "(?\u003e(-\u003e)|(when)|(\\)))",
21
22
  "patterns": [
22
23
  {
23
24
  "include": "#core_syntax"
24
25
  }
25
- ]
26
- },
27
- {
28
- "begin": "\\b(fn)\\b(?=.*->)",
26
+ ],
29
27
  "beginCaptures": {
30
28
  "1": {
31
29
  "name": "keyword.control.elixir"
32
30
  }
33
31
  },
34
- "end": "(?>(->)|(when)|(\\)))",
35
32
  "endCaptures": {
36
33
  "1": {
37
34
  "name": "keyword.operator.other.elixir"
@@ -40,26 +37,26 @@
40
37
  "name": "keyword.control.elixir"
41
38
  },
42
39
  "3": {
43
- "name": "punctuation.definition.parameters.elixir"
44
- }
45
- },
46
- "patterns": [
47
- {
48
- "include": "#core_syntax"
40
+ "name": "punctuation.section.function.elixir"
49
41
  }
50
- ]
42
+ }
51
43
  },
52
44
  {
53
45
  "include": "#core_syntax"
54
46
  },
55
47
  {
56
- "begin": "^(?=.*->)((?![^\"']*(\"|')[^\"']*->)|(?=.*->[^\"']*(\"|')[^\"']*->))((?!.*\\([^\\)]*->)|(?=[^\\(\\)]*->)|(?=\\s*\\(.*\\).*->))((?!.*\\b(fn)\\b)|(?=.*->.*\\bfn\\b))",
48
+ "begin": "^(?=.*-\u003e)((?![^\"']*(\"|')[^\"']*-\u003e)|(?=.*-\u003e[^\"']*(\"|')[^\"']*-\u003e))((?!.*\\([^\\)]*-\u003e)|(?=[^\\(\\)]*-\u003e)|(?=\\s*\\(.*\\).*-\u003e))((?!.*\\b(fn)\\b)|(?=.*-\u003e.*\\bfn\\b))",
49
+ "end": "(?\u003e(-\u003e)|(when)|(\\)))",
50
+ "patterns": [
51
+ {
52
+ "include": "#core_syntax"
53
+ }
54
+ ],
57
55
  "beginCaptures": {
58
56
  "1": {
59
57
  "name": "keyword.control.elixir"
60
58
  }
61
59
  },
62
- "end": "(?>(->)|(when)|(\\)))",
63
60
  "endCaptures": {
64
61
  "1": {
65
62
  "name": "keyword.operator.other.elixir"
@@ -68,84 +65,104 @@
68
65
  "name": "keyword.control.elixir"
69
66
  },
70
67
  "3": {
71
- "name": "punctuation.definition.parameters.elixir"
72
- }
73
- },
74
- "patterns": [
75
- {
76
- "include": "#core_syntax"
68
+ "name": "punctuation.section.function.elixir"
77
69
  }
78
- ]
70
+ }
79
71
  }
80
72
  ],
81
73
  "repository": {
82
74
  "core_syntax": {
83
75
  "patterns": [
84
76
  {
77
+ "name": "meta.module.elixir",
85
78
  "begin": "^\\s*(defmodule)\\b",
79
+ "end": "\\b(do)\\b",
80
+ "patterns": [
81
+ {
82
+ "name": "entity.name.class.elixir",
83
+ "match": "\\b[A-Z]\\w*\\b"
84
+ }
85
+ ],
86
86
  "beginCaptures": {
87
87
  "1": {
88
88
  "name": "keyword.control.module.elixir"
89
89
  }
90
90
  },
91
- "end": "\\b(do)\\b",
92
91
  "endCaptures": {
93
92
  "1": {
94
93
  "name": "keyword.control.module.elixir"
95
94
  }
96
- },
97
- "name": "meta.module.elixir",
98
- "patterns": [
99
- {
100
- "match": "\\b[A-Z]\\w*\\b",
101
- "name": "entity.name.class.elixir"
102
- }
103
- ]
95
+ }
104
96
  },
105
97
  {
98
+ "name": "meta.protocol_declaration.elixir",
106
99
  "begin": "^\\s*(defprotocol)\\b",
100
+ "end": "\\b(do)\\b",
101
+ "patterns": [
102
+ {
103
+ "name": "entity.name.protocol.elixir",
104
+ "match": "\\b[A-Z]\\w*\\b"
105
+ }
106
+ ],
107
107
  "beginCaptures": {
108
108
  "1": {
109
109
  "name": "keyword.control.protocol.elixir"
110
110
  }
111
111
  },
112
- "end": "\\b(do)\\b",
113
112
  "endCaptures": {
114
113
  "1": {
115
114
  "name": "keyword.control.protocol.elixir"
116
115
  }
117
- },
118
- "name": "meta.protocol_declaration.elixir",
119
- "patterns": [
120
- {
121
- "match": "\\b[A-Z]\\w*\\b",
122
- "name": "entity.name.protocol.elixir"
123
- }
124
- ]
116
+ }
125
117
  },
126
118
  {
119
+ "name": "meta.protocol_implementation.elixir",
127
120
  "begin": "^\\s*(defimpl)\\b",
121
+ "end": "\\b(do)\\b",
122
+ "patterns": [
123
+ {
124
+ "name": "entity.name.protocol.elixir",
125
+ "match": "\\b[A-Z]\\w*\\b"
126
+ }
127
+ ],
128
128
  "beginCaptures": {
129
129
  "1": {
130
130
  "name": "keyword.control.protocol.elixir"
131
131
  }
132
132
  },
133
- "end": "\\b(do)\\b",
134
133
  "endCaptures": {
135
134
  "1": {
136
135
  "name": "keyword.control.protocol.elixir"
137
136
  }
138
- },
139
- "name": "meta.protocol_implementation.elixir",
137
+ }
138
+ },
139
+ {
140
+ "name": "meta.function.public.elixir",
141
+ "begin": "^\\s*(def|defmacro)\\s+((?\u003e[a-zA-Z_]\\w*(?\u003e\\.|::))?(?\u003e[a-zA-Z_]\\w*(?\u003e[?!]|=(?!\u003e))?|===?|\u003e[\u003e=]?|\u003c=\u003e|\u003c[\u003c=]?|[%\u0026`/\\|]|\\*\\*?|=?~|[-+]@?|\\[\\]=?))((\\()|\\s*)",
142
+ "end": "(\\bdo:)|(\\bdo\\b)|(?=\\s+(def|defmacro)\\b)",
140
143
  "patterns": [
141
144
  {
142
- "match": "\\b[A-Z]\\w*\\b",
143
- "name": "entity.name.protocol.elixir"
145
+ "include": "$self"
146
+ },
147
+ {
148
+ "begin": "\\s(\\\\\\\\)",
149
+ "end": ",|\\)|$",
150
+ "patterns": [
151
+ {
152
+ "include": "$self"
153
+ }
154
+ ],
155
+ "beginCaptures": {
156
+ "1": {
157
+ "name": "keyword.operator.other.elixir"
158
+ }
159
+ }
160
+ },
161
+ {
162
+ "name": "keyword.control.elixir",
163
+ "match": "\\b(is_atom|is_binary|is_bitstring|is_boolean|is_float|is_function|is_integer|is_list|is_map|is_nil|is_number|is_pid|is_port|is_record|is_reference|is_tuple|is_exception|abs|bit_size|byte_size|div|elem|hd|length|map_size|node|rem|round|tl|trunc|tuple_size)\\b"
144
164
  }
145
- ]
146
- },
147
- {
148
- "begin": "^\\s*(def|defmacro)\\s+((?>[a-zA-Z_]\\w*(?>\\.|::))?(?>[a-zA-Z_]\\w*(?>[?!]|=(?!>))?|===?|>[>=]?|<=>|<[<=]?|[%&`/\\|]|\\*\\*?|=?~|[-+]@?|\\[\\]=?))((\\()|\\s*)",
165
+ ],
149
166
  "beginCaptures": {
150
167
  "1": {
151
168
  "name": "keyword.control.module.elixir"
@@ -154,10 +171,9 @@
154
171
  "name": "entity.name.function.public.elixir"
155
172
  },
156
173
  "4": {
157
- "name": "punctuation.definition.parameters.elixir"
174
+ "name": "punctuation.section.function.elixir"
158
175
  }
159
176
  },
160
- "end": "(\\bdo:)|(\\bdo\\b)|(?=\\s+(def|defmacro)\\b)",
161
177
  "endCaptures": {
162
178
  "1": {
163
179
  "name": "constant.other.keywords.elixir"
@@ -165,34 +181,35 @@
165
181
  "2": {
166
182
  "name": "keyword.control.module.elixir"
167
183
  }
168
- },
169
- "name": "meta.function.public.elixir",
184
+ }
185
+ },
186
+ {
187
+ "name": "meta.function.private.elixir",
188
+ "begin": "^\\s*(defp|defmacrop)\\s+((?\u003e[a-zA-Z_]\\w*(?\u003e\\.|::))?(?\u003e[a-zA-Z_]\\w*(?\u003e[?!]|=(?!\u003e))?|===?|\u003e[\u003e=]?|\u003c=\u003e|\u003c[\u003c=]?|[%\u0026`/\\|]|\\*\\*?|=?~|[-+]@?|\\[\\]=?))((\\()|\\s*)",
189
+ "end": "(\\bdo:)|(\\bdo\\b)|(?=\\s+(defp|defmacrop)\\b)",
170
190
  "patterns": [
171
191
  {
172
192
  "include": "$self"
173
193
  },
174
194
  {
175
195
  "begin": "\\s(\\\\\\\\)",
176
- "beginCaptures": {
177
- "1": {
178
- "name": "keyword.operator.other.elixir"
179
- }
180
- },
181
196
  "end": ",|\\)|$",
182
197
  "patterns": [
183
198
  {
184
199
  "include": "$self"
185
200
  }
186
- ]
201
+ ],
202
+ "beginCaptures": {
203
+ "1": {
204
+ "name": "keyword.operator.other.elixir"
205
+ }
206
+ }
187
207
  },
188
208
  {
189
- "match": "\\b(is_atom|is_binary|is_bitstring|is_boolean|is_float|is_function|is_integer|is_list|is_map|is_nil|is_number|is_pid|is_port|is_record|is_reference|is_tuple|is_exception|abs|bit_size|byte_size|div|elem|hd|length|map_size|node|rem|round|tl|trunc|tuple_size)\\b",
190
- "name": "keyword.control.elixir"
209
+ "name": "keyword.control.elixir",
210
+ "match": "\\b(is_atom|is_binary|is_bitstring|is_boolean|is_float|is_function|is_integer|is_list|is_map|is_nil|is_number|is_pid|is_port|is_record|is_reference|is_tuple|is_exception|abs|bit_size|byte_size|div|elem|hd|length|map_size|node|rem|round|tl|trunc|tuple_size)\\b"
191
211
  }
192
- ]
193
- },
194
- {
195
- "begin": "^\\s*(defp|defmacrop)\\s+((?>[a-zA-Z_]\\w*(?>\\.|::))?(?>[a-zA-Z_]\\w*(?>[?!]|=(?!>))?|===?|>[>=]?|<=>|<[<=]?|[%&`/\\|]|\\*\\*?|=?~|[-+]@?|\\[\\]=?))((\\()|\\s*)",
212
+ ],
196
213
  "beginCaptures": {
197
214
  "1": {
198
215
  "name": "keyword.control.module.elixir"
@@ -201,10 +218,9 @@
201
218
  "name": "entity.name.function.private.elixir"
202
219
  },
203
220
  "4": {
204
- "name": "punctuation.definition.parameters.elixir"
221
+ "name": "punctuation.section.function.elixir"
205
222
  }
206
223
  },
207
- "end": "(\\bdo:)|(\\bdo\\b)|(?=\\s+(defp|defmacrop)\\b)",
208
224
  "endCaptures": {
209
225
  "1": {
210
226
  "name": "constant.other.keywords.elixir"
@@ -212,37 +228,12 @@
212
228
  "2": {
213
229
  "name": "keyword.control.module.elixir"
214
230
  }
215
- },
216
- "name": "meta.function.private.elixir",
217
- "patterns": [
218
- {
219
- "include": "$self"
220
- },
221
- {
222
- "begin": "\\s(\\\\\\\\)",
223
- "beginCaptures": {
224
- "1": {
225
- "name": "keyword.operator.other.elixir"
226
- }
227
- },
228
- "end": ",|\\)|$",
229
- "patterns": [
230
- {
231
- "include": "$self"
232
- }
233
- ]
234
- },
235
- {
236
- "match": "\\b(is_atom|is_binary|is_bitstring|is_boolean|is_float|is_function|is_integer|is_list|is_map|is_nil|is_number|is_pid|is_port|is_record|is_reference|is_tuple|is_exception|abs|bit_size|byte_size|div|elem|hd|length|map_size|node|rem|round|tl|trunc|tuple_size)\\b",
237
- "name": "keyword.control.elixir"
238
- }
239
- ]
231
+ }
240
232
  },
241
233
  {
234
+ "name": "comment.documentation.heredoc",
242
235
  "begin": "@(module|type)?doc (~[a-z])?\"\"\"",
243
- "comment": "@doc with heredocs is treated as documentation",
244
236
  "end": "\\s*\"\"\"",
245
- "name": "comment.documentation.heredoc",
246
237
  "patterns": [
247
238
  {
248
239
  "include": "#interpolated_elixir"
@@ -253,16 +244,14 @@
253
244
  ]
254
245
  },
255
246
  {
247
+ "name": "comment.documentation.heredoc",
256
248
  "begin": "@(module|type)?doc ~[A-Z]\"\"\"",
257
- "comment": "@doc with heredocs is treated as documentation",
258
- "end": "\\s*\"\"\"",
259
- "name": "comment.documentation.heredoc"
249
+ "end": "\\s*\"\"\""
260
250
  },
261
251
  {
252
+ "name": "comment.documentation.heredoc",
262
253
  "begin": "@(module|type)?doc (~[a-z])?'''",
263
- "comment": "@doc with heredocs is treated as documentation",
264
254
  "end": "\\s*'''",
265
- "name": "comment.documentation.heredoc",
266
255
  "patterns": [
267
256
  {
268
257
  "include": "#interpolated_elixir"
@@ -273,21 +262,18 @@
273
262
  ]
274
263
  },
275
264
  {
265
+ "name": "comment.documentation.heredoc",
276
266
  "begin": "@(module|type)?doc ~[A-Z]'''",
277
- "comment": "@doc with heredocs is treated as documentation",
278
- "end": "\\s*'''",
279
- "name": "comment.documentation.heredoc"
267
+ "end": "\\s*'''"
280
268
  },
281
269
  {
282
- "comment": "@doc false is treated as documentation",
283
- "match": "@(module|type)?doc false",
284
- "name": "comment.documentation.false"
270
+ "name": "comment.documentation.false",
271
+ "match": "@(module|type)?doc false"
285
272
  },
286
273
  {
274
+ "name": "comment.documentation.string",
287
275
  "begin": "@(module|type)?doc \"",
288
- "comment": "@doc with string is treated as documentation",
289
276
  "end": "\"",
290
- "name": "comment.documentation.string",
291
277
  "patterns": [
292
278
  {
293
279
  "include": "#interpolated_elixir"
@@ -298,90 +284,60 @@
298
284
  ]
299
285
  },
300
286
  {
301
- "begin": "(::)",
302
- "beginCaptures": {
303
- "0": {
304
- "name": "punctuation.binary.elixir"
305
- }
306
- },
307
- "end": "(,|>>|$)",
308
- "endCaptures": {
309
- "0": {
310
- "name": "punctuation.binary.elixir"
311
- }
312
- },
313
- "patterns": [
314
- {
315
- "match": "\\b[a-z]\\w*\\b",
316
- "name": "support.type.binary.elixir"
317
- },
318
- {
319
- "match": "\\b(0x[0-9A-Fa-f](?>_?[0-9A-Fa-f])*|\\d(?>_?\\d)*(\\.(?![^[:space:][:digit:]])(?>_?\\d)*)?([eE][-+]?\\d(?>_?\\d)*)?|0b[01]+|0o[0-7]+)\\b",
320
- "name": "constant.numeric.elixir"
321
- }
322
- ]
323
- },
324
- {
325
- "match": "(?<!\\.)\\b(do|end|case|bc|lc|for|if|cond|unless|try|receive|fn|defmodule|defp?|defprotocol|defimpl|defrecord|defstruct|defmacrop?|defdelegate|defcallback|defmacrocallback|defexception|defoverridable|exit|after|rescue|catch|else|raise|throw|import|require|alias|use|quote|unquote|super|with)\\b(?![?!:])",
326
- "name": "keyword.control.elixir"
287
+ "name": "keyword.control.elixir",
288
+ "match": "(?\u003c!\\.)\\b(do|end|case|bc|lc|for|if|cond|unless|try|receive|fn|defmodule|defp?|defprotocol|defimpl|defrecord|defstruct|defmacrop?|defdelegate|defcallback|defmacrocallback|defexception|defoverridable|exit|after|rescue|catch|else|raise|throw|import|require|alias|use|quote|unquote|super|with)\\b(?![?!:])"
327
289
  },
328
290
  {
329
- "comment": " as above, just doesn't need a 'end' and does a logic operation",
330
- "match": "(?<!\\.)\\b(and|not|or|when|xor|in)\\b",
331
- "name": "keyword.operator.elixir"
291
+ "name": "keyword.operator.elixir",
292
+ "match": "(?\u003c!\\.)\\b(and|not|or|when|xor|in)\\b"
332
293
  },
333
294
  {
334
- "match": "\\b[A-Z]\\w*\\b",
335
- "name": "entity.name.class.elixir"
295
+ "name": "entity.name.class.elixir",
296
+ "match": "\\b[A-Z]\\w*\\b"
336
297
  },
337
298
  {
338
- "match": "\\b(nil|true|false)\\b(?![?!])",
339
- "name": "constant.language.elixir"
299
+ "name": "constant.language.elixir",
300
+ "match": "\\b(nil|true|false)\\b(?![?!])"
340
301
  },
341
302
  {
342
- "match": "\\b(__(CALLER|ENV|MODULE|DIR)__)\\b(?![?!])",
343
- "name": "variable.language.elixir"
303
+ "name": "variable.language.elixir",
304
+ "match": "\\b(__(CALLER|ENV|MODULE|DIR)__)\\b(?![?!])"
344
305
  },
345
306
  {
307
+ "name": "variable.other.readwrite.module.elixir",
308
+ "match": "(@)[a-zA-Z_]\\w*",
346
309
  "captures": {
347
310
  "1": {
348
311
  "name": "punctuation.definition.variable.elixir"
349
312
  }
350
- },
351
- "match": "(@)[a-zA-Z_]\\w*",
352
- "name": "variable.other.readwrite.module.elixir"
313
+ }
353
314
  },
354
315
  {
316
+ "name": "variable.other.anonymous.elixir",
317
+ "match": "(\u0026)\\d+",
355
318
  "captures": {
356
319
  "1": {
357
320
  "name": "punctuation.definition.variable.elixir"
358
321
  }
359
- },
360
- "match": "(&)\\d+",
361
- "name": "variable.other.anonymous.elixir"
322
+ }
362
323
  },
363
324
  {
325
+ "name": "variable.other.capture.elixir",
326
+ "match": "\\^[a-z_]\\w*",
364
327
  "captures": {
365
328
  "1": {
366
329
  "name": "punctuation.definition.variable.elixir"
367
330
  }
368
- },
369
- "match": "\\^[a-z_]\\w*",
370
- "name": "variable.other.capture.elixir"
331
+ }
371
332
  },
372
333
  {
373
- "match": "\\b(0x[0-9A-Fa-f](?>_?[0-9A-Fa-f])*|\\d(?>_?\\d)*(\\.(?![^[:space:][:digit:]])(?>_?\\d)*)?([eE][-+]?\\d(?>_?\\d)*)?|0b[01]+|0o[0-7]+)\\b",
374
- "name": "constant.numeric.elixir"
334
+ "name": "constant.numeric.elixir",
335
+ "match": "\\b(0x[0-9A-Fa-f](?\u003e_?[0-9A-Fa-f])*|\\d(?\u003e_?\\d)*(\\.(?![^[:space:][:digit:]])(?\u003e_?\\d)*)?([eE][-+]?\\d(?\u003e_?\\d)*)?|0b[01]+|0o[0-7]+)\\b"
375
336
  },
376
337
  {
338
+ "name": "constant.other.symbol.single-quoted.elixir",
377
339
  "begin": ":'",
378
- "captures": {
379
- "0": {
380
- "name": "punctuation.definition.constant.elixir"
381
- }
382
- },
383
340
  "end": "'",
384
- "name": "constant.other.symbol.single-quoted.elixir",
385
341
  "patterns": [
386
342
  {
387
343
  "include": "#interpolated_elixir"
@@ -389,17 +345,17 @@
389
345
  {
390
346
  "include": "#escaped_char"
391
347
  }
392
- ]
393
- },
394
- {
395
- "begin": ":\"",
348
+ ],
396
349
  "captures": {
397
350
  "0": {
398
351
  "name": "punctuation.definition.constant.elixir"
399
352
  }
400
- },
401
- "end": "\"",
353
+ }
354
+ },
355
+ {
402
356
  "name": "constant.other.symbol.double-quoted.elixir",
357
+ "begin": ":\"",
358
+ "end": "\"",
403
359
  "patterns": [
404
360
  {
405
361
  "include": "#interpolated_elixir"
@@ -407,23 +363,17 @@
407
363
  {
408
364
  "include": "#escaped_char"
409
365
  }
410
- ]
411
- },
412
- {
413
- "begin": "(?>''')",
414
- "beginCaptures": {
415
- "0": {
416
- "name": "punctuation.definition.string.begin.elixir"
417
- }
418
- },
419
- "comment": "Single-quoted heredocs",
420
- "end": "^\\s*'''",
421
- "endCaptures": {
366
+ ],
367
+ "captures": {
422
368
  "0": {
423
- "name": "punctuation.definition.string.end.elixir"
369
+ "name": "punctuation.definition.constant.elixir"
424
370
  }
425
- },
371
+ }
372
+ },
373
+ {
426
374
  "name": "string.quoted.single.heredoc.elixir",
375
+ "begin": "(?\u003e''')",
376
+ "end": "^\\s*'''",
427
377
  "patterns": [
428
378
  {
429
379
  "include": "#interpolated_elixir"
@@ -431,23 +381,22 @@
431
381
  {
432
382
  "include": "#escaped_char"
433
383
  }
434
- ]
435
- },
436
- {
437
- "begin": "'",
384
+ ],
438
385
  "beginCaptures": {
439
386
  "0": {
440
387
  "name": "punctuation.definition.string.begin.elixir"
441
388
  }
442
389
  },
443
- "comment": "single quoted string (allows for interpolation)",
444
- "end": "'",
445
390
  "endCaptures": {
446
391
  "0": {
447
392
  "name": "punctuation.definition.string.end.elixir"
448
393
  }
449
- },
394
+ }
395
+ },
396
+ {
450
397
  "name": "string.quoted.single.elixir",
398
+ "begin": "'",
399
+ "end": "'",
451
400
  "patterns": [
452
401
  {
453
402
  "include": "#interpolated_elixir"
@@ -455,23 +404,22 @@
455
404
  {
456
405
  "include": "#escaped_char"
457
406
  }
458
- ]
459
- },
460
- {
461
- "begin": "(?>\"\"\")",
407
+ ],
462
408
  "beginCaptures": {
463
409
  "0": {
464
410
  "name": "punctuation.definition.string.begin.elixir"
465
411
  }
466
412
  },
467
- "comment": "Double-quoted heredocs",
468
- "end": "^\\s*\"\"\"",
469
413
  "endCaptures": {
470
414
  "0": {
471
415
  "name": "punctuation.definition.string.end.elixir"
472
416
  }
473
- },
417
+ }
418
+ },
419
+ {
474
420
  "name": "string.quoted.double.heredoc.elixir",
421
+ "begin": "(?\u003e\"\"\")",
422
+ "end": "^\\s*\"\"\"",
475
423
  "patterns": [
476
424
  {
477
425
  "include": "#interpolated_elixir"
@@ -479,23 +427,22 @@
479
427
  {
480
428
  "include": "#escaped_char"
481
429
  }
482
- ]
483
- },
484
- {
485
- "begin": "\"",
430
+ ],
486
431
  "beginCaptures": {
487
432
  "0": {
488
433
  "name": "punctuation.definition.string.begin.elixir"
489
434
  }
490
435
  },
491
- "comment": "double quoted string (allows for interpolation)",
492
- "end": "\"",
493
436
  "endCaptures": {
494
437
  "0": {
495
438
  "name": "punctuation.definition.string.end.elixir"
496
439
  }
497
- },
440
+ }
441
+ },
442
+ {
498
443
  "name": "string.quoted.double.elixir",
444
+ "begin": "\"",
445
+ "end": "\"",
499
446
  "patterns": [
500
447
  {
501
448
  "include": "#interpolated_elixir"
@@ -503,23 +450,22 @@
503
450
  {
504
451
  "include": "#escaped_char"
505
452
  }
506
- ]
507
- },
508
- {
509
- "begin": "~[a-z](?>\"\"\")",
453
+ ],
510
454
  "beginCaptures": {
511
455
  "0": {
512
456
  "name": "punctuation.definition.string.begin.elixir"
513
457
  }
514
458
  },
515
- "comment": "Double-quoted heredocs sigils",
516
- "end": "^\\s*\"\"\"",
517
459
  "endCaptures": {
518
460
  "0": {
519
461
  "name": "punctuation.definition.string.end.elixir"
520
462
  }
521
- },
463
+ }
464
+ },
465
+ {
522
466
  "name": "string.quoted.double.heredoc.elixir",
467
+ "begin": "~[a-z](?\u003e\"\"\")",
468
+ "end": "^\\s*\"\"\"",
523
469
  "patterns": [
524
470
  {
525
471
  "include": "#interpolated_elixir"
@@ -527,23 +473,22 @@
527
473
  {
528
474
  "include": "#escaped_char"
529
475
  }
530
- ]
531
- },
532
- {
533
- "begin": "~[a-z]\\{",
476
+ ],
534
477
  "beginCaptures": {
535
478
  "0": {
536
479
  "name": "punctuation.definition.string.begin.elixir"
537
480
  }
538
481
  },
539
- "comment": "sigil (allow for interpolation)",
540
- "end": "\\}[a-z]*",
541
482
  "endCaptures": {
542
483
  "0": {
543
484
  "name": "punctuation.definition.string.end.elixir"
544
485
  }
545
- },
486
+ }
487
+ },
488
+ {
546
489
  "name": "string.interpolated.elixir",
490
+ "begin": "~[a-z]\\{",
491
+ "end": "\\}[a-z]*",
547
492
  "patterns": [
548
493
  {
549
494
  "include": "#interpolated_elixir"
@@ -551,23 +496,22 @@
551
496
  {
552
497
  "include": "#escaped_char"
553
498
  }
554
- ]
555
- },
556
- {
557
- "begin": "~[a-z]\\[",
499
+ ],
558
500
  "beginCaptures": {
559
501
  "0": {
560
502
  "name": "punctuation.definition.string.begin.elixir"
561
503
  }
562
504
  },
563
- "comment": "sigil (allow for interpolation)",
564
- "end": "\\][a-z]*",
565
505
  "endCaptures": {
566
506
  "0": {
567
507
  "name": "punctuation.definition.string.end.elixir"
568
508
  }
569
- },
509
+ }
510
+ },
511
+ {
570
512
  "name": "string.interpolated.elixir",
513
+ "begin": "~[a-z]\\[",
514
+ "end": "\\][a-z]*",
571
515
  "patterns": [
572
516
  {
573
517
  "include": "#interpolated_elixir"
@@ -575,23 +519,22 @@
575
519
  {
576
520
  "include": "#escaped_char"
577
521
  }
578
- ]
579
- },
580
- {
581
- "begin": "~[a-z]\\<",
522
+ ],
582
523
  "beginCaptures": {
583
524
  "0": {
584
525
  "name": "punctuation.definition.string.begin.elixir"
585
526
  }
586
527
  },
587
- "comment": "sigil (allow for interpolation)",
588
- "end": "\\>[a-z]*",
589
528
  "endCaptures": {
590
529
  "0": {
591
530
  "name": "punctuation.definition.string.end.elixir"
592
531
  }
593
- },
532
+ }
533
+ },
534
+ {
594
535
  "name": "string.interpolated.elixir",
536
+ "begin": "~[a-z]\\\u003c",
537
+ "end": "\\\u003e[a-z]*",
595
538
  "patterns": [
596
539
  {
597
540
  "include": "#interpolated_elixir"
@@ -599,23 +542,22 @@
599
542
  {
600
543
  "include": "#escaped_char"
601
544
  }
602
- ]
603
- },
604
- {
605
- "begin": "~[a-z]\\(",
545
+ ],
606
546
  "beginCaptures": {
607
547
  "0": {
608
548
  "name": "punctuation.definition.string.begin.elixir"
609
549
  }
610
550
  },
611
- "comment": "sigil (allow for interpolation)",
612
- "end": "\\)[a-z]*",
613
551
  "endCaptures": {
614
552
  "0": {
615
553
  "name": "punctuation.definition.string.end.elixir"
616
554
  }
617
- },
555
+ }
556
+ },
557
+ {
618
558
  "name": "string.interpolated.elixir",
559
+ "begin": "~[a-z]\\(",
560
+ "end": "\\)[a-z]*",
619
561
  "patterns": [
620
562
  {
621
563
  "include": "#interpolated_elixir"
@@ -623,23 +565,22 @@
623
565
  {
624
566
  "include": "#escaped_char"
625
567
  }
626
- ]
627
- },
628
- {
629
- "begin": "~[a-z]([^\\w])",
568
+ ],
630
569
  "beginCaptures": {
631
570
  "0": {
632
571
  "name": "punctuation.definition.string.begin.elixir"
633
572
  }
634
573
  },
635
- "comment": "sigil (allow for interpolation)",
636
- "end": "\\1[a-z]*",
637
574
  "endCaptures": {
638
575
  "0": {
639
576
  "name": "punctuation.definition.string.end.elixir"
640
577
  }
641
- },
578
+ }
579
+ },
580
+ {
642
581
  "name": "string.interpolated.elixir",
582
+ "begin": "~[a-z]([^\\w])",
583
+ "end": "\\1[a-z]*",
643
584
  "patterns": [
644
585
  {
645
586
  "include": "#interpolated_elixir"
@@ -650,208 +591,227 @@
650
591
  {
651
592
  "include": "#escaped_char"
652
593
  }
653
- ]
594
+ ],
595
+ "beginCaptures": {
596
+ "0": {
597
+ "name": "punctuation.definition.string.begin.elixir"
598
+ }
599
+ },
600
+ "endCaptures": {
601
+ "0": {
602
+ "name": "punctuation.definition.string.end.elixir"
603
+ }
604
+ }
654
605
  },
655
606
  {
656
- "begin": "~[A-Z](?>\"\"\")",
607
+ "name": "string.quoted.other.literal.upper.elixir",
608
+ "begin": "~[A-Z](?\u003e\"\"\")",
609
+ "end": "^\\s*\"\"\"",
657
610
  "beginCaptures": {
658
611
  "0": {
659
612
  "name": "punctuation.definition.string.begin.elixir"
660
613
  }
661
614
  },
662
- "comment": "Double-quoted heredocs sigils",
663
- "end": "^\\s*\"\"\"",
664
615
  "endCaptures": {
665
616
  "0": {
666
617
  "name": "punctuation.definition.string.end.elixir"
667
618
  }
668
- },
669
- "name": "string.quoted.other.literal.upper.elixir"
619
+ }
670
620
  },
671
621
  {
622
+ "name": "string.quoted.other.literal.upper.elixir",
672
623
  "begin": "~[A-Z]\\{",
624
+ "end": "\\}[a-z]*",
673
625
  "beginCaptures": {
674
626
  "0": {
675
627
  "name": "punctuation.definition.string.begin.elixir"
676
628
  }
677
629
  },
678
- "comment": "sigil (without interpolation)",
679
- "end": "\\}[a-z]*",
680
630
  "endCaptures": {
681
631
  "0": {
682
632
  "name": "punctuation.definition.string.end.elixir"
683
633
  }
684
- },
685
- "name": "string.quoted.other.literal.upper.elixir"
634
+ }
686
635
  },
687
636
  {
637
+ "name": "string.quoted.other.literal.upper.elixir",
688
638
  "begin": "~[A-Z]\\[",
639
+ "end": "\\][a-z]*",
689
640
  "beginCaptures": {
690
641
  "0": {
691
642
  "name": "punctuation.definition.string.begin.elixir"
692
643
  }
693
644
  },
694
- "comment": "sigil (without interpolation)",
695
- "end": "\\][a-z]*",
696
645
  "endCaptures": {
697
646
  "0": {
698
647
  "name": "punctuation.definition.string.end.elixir"
699
648
  }
700
- },
701
- "name": "string.quoted.other.literal.upper.elixir"
649
+ }
702
650
  },
703
651
  {
704
- "begin": "~[A-Z]\\<",
652
+ "name": "string.quoted.other.literal.upper.elixir",
653
+ "begin": "~[A-Z]\\\u003c",
654
+ "end": "\\\u003e[a-z]*",
705
655
  "beginCaptures": {
706
656
  "0": {
707
657
  "name": "punctuation.definition.string.begin.elixir"
708
658
  }
709
659
  },
710
- "comment": "sigil (without interpolation)",
711
- "end": "\\>[a-z]*",
712
660
  "endCaptures": {
713
661
  "0": {
714
662
  "name": "punctuation.definition.string.end.elixir"
715
663
  }
716
- },
717
- "name": "string.quoted.other.literal.upper.elixir"
664
+ }
718
665
  },
719
666
  {
667
+ "name": "string.quoted.other.literal.upper.elixir",
720
668
  "begin": "~[A-Z]\\(",
669
+ "end": "\\)[a-z]*",
721
670
  "beginCaptures": {
722
671
  "0": {
723
672
  "name": "punctuation.definition.string.begin.elixir"
724
673
  }
725
674
  },
726
- "comment": "sigil (without interpolation)",
727
- "end": "\\)[a-z]*",
728
675
  "endCaptures": {
729
676
  "0": {
730
677
  "name": "punctuation.definition.string.end.elixir"
731
678
  }
732
- },
733
- "name": "string.quoted.other.literal.upper.elixir"
679
+ }
734
680
  },
735
681
  {
682
+ "name": "string.quoted.other.literal.upper.elixir",
736
683
  "begin": "~[A-Z]([^\\w])",
684
+ "end": "\\1[a-z]*",
737
685
  "beginCaptures": {
738
686
  "0": {
739
687
  "name": "punctuation.definition.string.begin.elixir"
740
688
  }
741
689
  },
742
- "comment": "sigil (without interpolation)",
743
- "end": "\\1[a-z]*",
744
690
  "endCaptures": {
745
691
  "0": {
746
692
  "name": "punctuation.definition.string.end.elixir"
747
693
  }
748
- },
749
- "name": "string.quoted.other.literal.upper.elixir"
694
+ }
750
695
  },
751
696
  {
697
+ "name": "constant.other.symbol.elixir",
698
+ "match": "(?\u003c!:)(:)(?\u003e[a-zA-Z_][\\w@]*(?\u003e[?!]|=(?![\u003e=]))?|\\\u003c\\\u003e|===?|!==?|\u003c\u003c\u003e\u003e|\u003c\u003c\u003c|\u003e\u003e\u003e|~~~|::|\u003c\\-|\\|\u003e|=\u003e|=~|=|/|\\\\\\\\|\\*\\*?|\\.\\.?\\.?|\u003e=?|\u003c=?|\u0026\u0026?\u0026?|\\+\\+?|\\-\\-?|\\|\\|?\\|?|\\!|@|\\%?\\{\\}|%|\\[\\]|\\^(\\^\\^)?)",
752
699
  "captures": {
753
700
  "1": {
754
701
  "name": "punctuation.definition.constant.elixir"
755
702
  }
756
- },
757
- "comment": "symbols",
758
- "match": "(?<!:)(:)(?>[a-zA-Z_][\\w@]*(?>[?!]|=(?![>=]))?|\\<\\>|===?|!==?|<<>>|<<<|>>>|~~~|::|<\\-|\\|>|=>|=~|=|/|\\\\\\\\|\\*\\*?|\\.\\.?\\.?|>=?|<=?|&&?&?|\\+\\+?|\\-\\-?|\\|\\|?\\|?|\\!|@|\\%?\\{\\}|%|\\[\\]|\\^(\\^\\^)?)",
759
- "name": "constant.other.symbol.elixir"
703
+ }
760
704
  },
761
705
  {
706
+ "name": "constant.other.keywords.elixir",
707
+ "match": "(?\u003e[a-zA-Z_][\\w@]*(?\u003e[?!])?)(:)(?!:)",
762
708
  "captures": {
763
709
  "1": {
764
710
  "name": "punctuation.definition.constant.elixir"
765
711
  }
766
- },
767
- "comment": "symbols",
768
- "match": "(?>[a-zA-Z_][\\w@]*(?>[?!])?)(:)(?!:)",
769
- "name": "constant.other.keywords.elixir"
712
+ }
770
713
  },
771
714
  {
715
+ "name": "comment.line.section.elixir",
716
+ "match": "^\\s*(##).*$\\n?",
772
717
  "captures": {
773
718
  "1": {
774
719
  "name": "punctuation.definition.comment.elixir"
775
720
  }
776
- },
777
- "match": "^\\s*(##).*$\\n?",
778
- "name": "comment.line.section.elixir"
721
+ }
779
722
  },
780
723
  {
724
+ "name": "comment.line.number-sign.elixir",
725
+ "match": "(?:^[ \\t]+)?(#).*$\\n?",
781
726
  "captures": {
782
727
  "1": {
783
728
  "name": "punctuation.definition.comment.elixir"
784
729
  }
785
- },
786
- "match": "(?:^[ \\t]+)?(#).*$\\n?",
787
- "name": "comment.line.number-sign.elixir"
730
+ }
788
731
  },
789
732
  {
790
- "comment": "\n\t\t\tmatches questionmark-letters.\n\n\t\t\texamples (1st alternation = hex):\n\t\t\t?\\x1 ?\\x61\n\n\t\t\texamples (2rd alternation = escaped):\n\t\t\t?\\n ?\\b\n\n\t\t\texamples (3rd alternation = normal):\n\t\t\t?a ?A ?0 \n\t\t\t?* ?\" ?( \n\t\t\t?. ?#\n\t\t\t\n\t\t\tthe negative lookbehind prevents against matching\n\t\t\tp(42.tainted?)\n\t\t\t",
791
- "match": "(?<!\\w)\\?(\\\\(x[0-9A-Fa-f]{1,2}(?![0-9A-Fa-f])\\b|[^xMC])|[^\\s\\\\])",
792
- "name": "constant.numeric.elixir"
733
+ "name": "constant.numeric.elixir",
734
+ "match": "(?\u003c!\\w)\\?(\\\\(x[0-9A-Fa-f]{1,2}(?![0-9A-Fa-f])\\b|[^xMC])|[^\\s\\\\])"
793
735
  },
794
736
  {
795
- "match": "===?|!==?|<=?|>=?",
796
- "name": "keyword.operator.comparison.elixir"
737
+ "name": "keyword.operator.concatenation.elixir",
738
+ "match": "\\+\\+|\\-\\-|\u003c\\|\u003e"
797
739
  },
798
740
  {
799
- "match": "(\\|\\|\\||&&&|^^^|<<<|>>>|~~~)",
800
- "name": "keyword.operator.bitwise.elixir"
741
+ "name": "keyword.operator.sigils_1.elixir",
742
+ "match": "\\|\\\u003e|\u003c~\u003e|\u003c\u003e|\u003c\u003c\u003c|\u003e\u003e\u003e|~\u003e\u003e|\u003c\u003c~|~\u003e|\u003c~|\u003c\\|\u003e"
801
743
  },
802
744
  {
803
- "match": "(?<=[ \\t])!+|\\bnot\\b|&&|\\band\\b|\\|\\||\\bor\\b|\\bxor\\b",
804
- "name": "keyword.operator.logical.elixir"
745
+ "name": "keyword.operator.sigils_2.elixir",
746
+ "match": "\u0026\u0026\u0026|\u0026\u0026"
805
747
  },
806
748
  {
807
- "match": "(\\*|\\+|\\-|/)",
808
- "name": "keyword.operator.arithmetic.elixir"
749
+ "name": "keyword.operator.sigils_3.elixir",
750
+ "match": "\u003c\\-|\\\\\\\\"
809
751
  },
810
752
  {
811
- "match": "\\||\\+\\+|\\-\\-|\\*\\*|\\\\\\\\|\\<\\-|\\<\\>|\\<\\<|\\>\\>|\\:\\:|\\.\\.|\\|>|~|=>|&",
812
- "name": "keyword.operator.other.elixir"
753
+ "name": "keyword.operator.comparison.elixir",
754
+ "match": "===?|!==?|\u003c=?|\u003e=?"
813
755
  },
814
756
  {
815
- "match": "=",
816
- "name": "keyword.operator.assignment.elixir"
757
+ "name": "keyword.operator.bitwise.elixir",
758
+ "match": "(\\|\\|\\||\u0026\u0026\u0026|^^^|\u003c\u003c\u003c|\u003e\u003e\u003e|~~~)"
817
759
  },
818
760
  {
819
- "match": ":",
820
- "name": "punctuation.separator.other.elixir"
761
+ "name": "keyword.operator.logical.elixir",
762
+ "match": "(?\u003c=[ \\t])!+|\\bnot\\b|\u0026\u0026|\\band\\b|\\|\\||\\bor\\b|\\bxor\\b"
821
763
  },
822
764
  {
823
- "match": "\\;",
824
- "name": "punctuation.separator.statement.elixir"
765
+ "name": "keyword.operator.arithmetic.elixir",
766
+ "match": "(\\*|\\+|\\-|/)"
825
767
  },
826
768
  {
827
- "match": ",",
828
- "name": "punctuation.separator.object.elixir"
769
+ "name": "keyword.operator.other.elixir",
770
+ "match": "\\||\\+\\+|\\-\\-|\\*\\*|\\\\\\\\|\\\u003c\\-|\\\u003c\\\u003e|\\\u003c\\\u003c|\\\u003e\\\u003e|\\:\\:|\\.\\.|\\|\u003e|~|=\u003e|\u0026"
829
771
  },
830
772
  {
831
- "match": "\\.",
832
- "name": "punctuation.separator.method.elixir"
773
+ "name": "keyword.operator.assignment.elixir",
774
+ "match": "="
833
775
  },
834
776
  {
835
- "match": "\\{|\\}",
836
- "name": "punctuation.section.scope.elixir"
777
+ "name": "punctuation.separator.other.elixir",
778
+ "match": ":"
837
779
  },
838
780
  {
839
- "match": "\\[|\\]",
840
- "name": "punctuation.section.array.elixir"
781
+ "name": "punctuation.separator.statement.elixir",
782
+ "match": "\\;"
841
783
  },
842
784
  {
843
- "match": "\\(|\\)",
844
- "name": "punctuation.section.function.elixir"
785
+ "name": "punctuation.separator.object.elixir",
786
+ "match": ","
787
+ },
788
+ {
789
+ "name": "punctuation.separator.method.elixir",
790
+ "match": "\\."
791
+ },
792
+ {
793
+ "name": "punctuation.section.scope.elixir",
794
+ "match": "\\{|\\}"
795
+ },
796
+ {
797
+ "name": "punctuation.section.array.elixir",
798
+ "match": "\\[|\\]"
799
+ },
800
+ {
801
+ "name": "punctuation.section.function.elixir",
802
+ "match": "\\(|\\)"
845
803
  }
846
804
  ]
847
805
  },
848
806
  "escaped_char": {
849
- "match": "\\\\(x[\\da-fA-F]{1,2}|.)",
850
- "name": "constant.character.escaped.elixir"
807
+ "name": "constant.character.escaped.elixir",
808
+ "match": "\\\\(x[\\da-fA-F]{1,2}|.)"
851
809
  },
852
810
  "interpolated_elixir": {
853
811
  "patterns": [
854
812
  {
813
+ "name": "source.elixir.embedded.source",
814
+ "match": "#\\{(\\})",
855
815
  "captures": {
856
816
  "0": {
857
817
  "name": "punctuation.section.embedded.elixir"
@@ -859,19 +819,12 @@
859
819
  "1": {
860
820
  "name": "source.elixir.embedded.source.empty"
861
821
  }
862
- },
863
- "match": "#\\{(\\})",
864
- "name": "source.elixir.embedded.source"
822
+ }
865
823
  },
866
824
  {
825
+ "name": "source.elixir.embedded.source",
867
826
  "begin": "#\\{",
868
- "captures": {
869
- "0": {
870
- "name": "punctuation.section.embedded.elixir"
871
- }
872
- },
873
827
  "end": "\\}",
874
- "name": "source.elixir.embedded.source",
875
828
  "patterns": [
876
829
  {
877
830
  "include": "#nest_curly_and_self"
@@ -879,7 +832,12 @@
879
832
  {
880
833
  "include": "$self"
881
834
  }
882
- ]
835
+ ],
836
+ "captures": {
837
+ "0": {
838
+ "name": "punctuation.section.embedded.elixir"
839
+ }
840
+ }
883
841
  }
884
842
  ]
885
843
  },
@@ -887,17 +845,17 @@
887
845
  "patterns": [
888
846
  {
889
847
  "begin": "\\{",
890
- "captures": {
891
- "0": {
892
- "name": "punctuation.section.scope.elixir"
893
- }
894
- },
895
848
  "end": "\\}",
896
849
  "patterns": [
897
850
  {
898
851
  "include": "#nest_curly_and_self"
899
852
  }
900
- ]
853
+ ],
854
+ "captures": {
855
+ "0": {
856
+ "name": "punctuation.section.scope.elixir"
857
+ }
858
+ }
901
859
  },
902
860
  {
903
861
  "include": "$self"
@@ -913,6 +871,8 @@
913
871
  "include": "#escaped_char"
914
872
  },
915
873
  {
874
+ "name": "string.regexp.arbitrary-repitition.elixir",
875
+ "match": "(\\{)\\d+(,\\d+)?(\\})",
916
876
  "captures": {
917
877
  "1": {
918
878
  "name": "punctuation.definition.arbitrary-repitition.elixir"
@@ -920,53 +880,48 @@
920
880
  "3": {
921
881
  "name": "punctuation.definition.arbitrary-repitition.elixir"
922
882
  }
923
- },
924
- "match": "(\\{)\\d+(,\\d+)?(\\})",
925
- "name": "string.regexp.arbitrary-repitition.elixir"
883
+ }
926
884
  },
927
885
  {
886
+ "name": "string.regexp.character-class.elixir",
928
887
  "begin": "\\[(?:\\^?\\])?",
929
- "captures": {
930
- "0": {
931
- "name": "punctuation.definition.character-class.elixir"
932
- }
933
- },
934
888
  "end": "\\]",
935
- "name": "string.regexp.character-class.elixir",
936
889
  "patterns": [
937
890
  {
938
891
  "include": "#escaped_char"
939
892
  }
940
- ]
941
- },
942
- {
943
- "begin": "\\(",
893
+ ],
944
894
  "captures": {
945
895
  "0": {
946
- "name": "punctuation.definition.group.elixir"
896
+ "name": "punctuation.definition.character-class.elixir"
947
897
  }
948
- },
949
- "end": "\\)",
898
+ }
899
+ },
900
+ {
950
901
  "name": "string.regexp.group.elixir",
902
+ "begin": "\\(",
903
+ "end": "\\)",
951
904
  "patterns": [
952
905
  {
953
906
  "include": "#regex_sub"
954
907
  }
955
- ]
908
+ ],
909
+ "captures": {
910
+ "0": {
911
+ "name": "punctuation.definition.group.elixir"
912
+ }
913
+ }
956
914
  },
957
915
  {
916
+ "name": "comment.line.number-sign.elixir",
917
+ "match": "(?\u003c=^|\\s)(#)\\s[[a-zA-Z0-9,. \\t?!-][^\\x{00}-\\x{7F}]]*$",
958
918
  "captures": {
959
919
  "1": {
960
920
  "name": "punctuation.definition.comment.elixir"
961
921
  }
962
- },
963
- "comment": "We are restrictive in what we allow to go after the comment character to avoid false positives, since the availability of comments depend on regexp flags.",
964
- "match": "(?<=^|\\s)(#)\\s[[a-zA-Z0-9,. \\t?!-][^\\x{00}-\\x{7F}]]*$",
965
- "name": "comment.line.number-sign.elixir"
922
+ }
966
923
  }
967
924
  ]
968
925
  }
969
- },
970
- "scopeName": "source.elixir",
971
- "uuid": "D00C06B9-71B2-4FEB-A0E3-37237F579456"
972
- }
926
+ }
927
+ }