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,9 +1,6 @@
1
1
  {
2
- "fileTypes": [
3
- "json"
4
- ],
5
- "keyEquivalent": "^~J",
6
2
  "name": "JSON",
3
+ "scopeName": "source.json",
7
4
  "patterns": [
8
5
  {
9
6
  "include": "#value"
@@ -11,120 +8,115 @@
11
8
  ],
12
9
  "repository": {
13
10
  "array": {
11
+ "name": "meta.structure.array.json",
14
12
  "begin": "\\[",
15
- "beginCaptures": {
16
- "0": {
17
- "name": "punctuation.definition.array.begin.json"
18
- }
19
- },
20
13
  "end": "\\]",
21
- "endCaptures": {
22
- "0": {
23
- "name": "punctuation.definition.array.end.json"
24
- }
25
- },
26
- "name": "meta.structure.array.json",
27
14
  "patterns": [
28
15
  {
29
16
  "include": "#value"
30
17
  },
31
18
  {
32
- "match": ",",
33
- "name": "punctuation.separator.array.json"
19
+ "name": "punctuation.separator.array.json",
20
+ "match": ","
34
21
  },
35
22
  {
36
- "match": "[^\\s\\]]",
37
- "name": "invalid.illegal.expected-array-separator.json"
23
+ "name": "invalid.illegal.expected-array-separator.json",
24
+ "match": "[^\\s\\]]"
38
25
  }
39
- ]
40
- },
41
- "constant": {
42
- "match": "\\b(?:true|false|null)\\b",
43
- "name": "constant.language.json"
44
- },
45
- "number": {
46
- "comment": "handles integer and decimal numbers",
47
- "match": "(?x: # turn on extended mode\n\t\t\t -? # an optional minus\n\t\t\t (?:\n\t\t\t 0 # a zero\n\t\t\t | # ...or...\n\t\t\t [1-9] # a 1-9 character\n\t\t\t \\d* # followed by zero or more digits\n\t\t\t )\n\t\t\t (?:\n\t\t\t (?:\n\t\t\t \\. # a period\n\t\t\t \\d+ # followed by one or more digits\n\t\t\t )?\n\t\t\t (?:\n\t\t\t [eE] # an e character\n\t\t\t [+-]? # followed by an option +/-\n\t\t\t \\d+ # followed by one or more digits\n\t\t\t )? # make exponent optional\n\t\t\t )? # make decimal portion optional\n\t\t\t )",
48
- "name": "constant.numeric.json"
49
- },
50
- "object": {
51
- "begin": "\\{",
26
+ ],
52
27
  "beginCaptures": {
53
28
  "0": {
54
- "name": "punctuation.definition.dictionary.begin.json"
29
+ "name": "punctuation.definition.array.begin.json"
55
30
  }
56
31
  },
57
- "comment": "a JSON object",
58
- "end": "\\}",
59
32
  "endCaptures": {
60
33
  "0": {
61
- "name": "punctuation.definition.dictionary.end.json"
34
+ "name": "punctuation.definition.array.end.json"
62
35
  }
63
- },
36
+ }
37
+ },
38
+ "constant": {
39
+ "name": "constant.language.json",
40
+ "match": "\\b(?:true|false|null)\\b"
41
+ },
42
+ "number": {
43
+ "name": "constant.numeric.json",
44
+ "match": "(?x: # turn on extended mode\n\t\t\t -? # an optional minus\n\t\t\t (?:\n\t\t\t 0 # a zero\n\t\t\t | # ...or...\n\t\t\t [1-9] # a 1-9 character\n\t\t\t \\d* # followed by zero or more digits\n\t\t\t )\n\t\t\t (?:\n\t\t\t (?:\n\t\t\t \\. # a period\n\t\t\t \\d+ # followed by one or more digits\n\t\t\t )?\n\t\t\t (?:\n\t\t\t [eE] # an e character\n\t\t\t [+-]? # followed by an option +/-\n\t\t\t \\d+ # followed by one or more digits\n\t\t\t )? # make exponent optional\n\t\t\t )? # make decimal portion optional\n\t\t\t )"
45
+ },
46
+ "object": {
64
47
  "name": "meta.structure.dictionary.json",
48
+ "begin": "\\{",
49
+ "end": "\\}",
65
50
  "patterns": [
66
51
  {
67
- "comment": "the JSON object key",
68
52
  "include": "#string"
69
53
  },
70
54
  {
55
+ "name": "meta.structure.dictionary.value.json",
71
56
  "begin": ":",
57
+ "end": "(,)|(?=\\})",
58
+ "patterns": [
59
+ {
60
+ "include": "#value"
61
+ },
62
+ {
63
+ "name": "invalid.illegal.expected-dictionary-separator.json",
64
+ "match": "[^\\s,]"
65
+ }
66
+ ],
72
67
  "beginCaptures": {
73
68
  "0": {
74
69
  "name": "punctuation.separator.dictionary.key-value.json"
75
70
  }
76
71
  },
77
- "end": "(,)|(?=\\})",
78
72
  "endCaptures": {
79
73
  "1": {
80
74
  "name": "punctuation.separator.dictionary.pair.json"
81
75
  }
82
- },
83
- "name": "meta.structure.dictionary.value.json",
84
- "patterns": [
85
- {
86
- "comment": "the JSON object value",
87
- "include": "#value"
88
- },
89
- {
90
- "match": "[^\\s,]",
91
- "name": "invalid.illegal.expected-dictionary-separator.json"
92
- }
93
- ]
76
+ }
94
77
  },
95
78
  {
96
- "match": "[^\\s\\}]",
97
- "name": "invalid.illegal.expected-dictionary-separator.json"
79
+ "name": "invalid.illegal.expected-dictionary-separator.json",
80
+ "match": "[^\\s\\}]"
98
81
  }
99
- ]
100
- },
101
- "string": {
102
- "begin": "\"",
82
+ ],
103
83
  "beginCaptures": {
104
84
  "0": {
105
- "name": "punctuation.definition.string.begin.json"
85
+ "name": "punctuation.definition.dictionary.begin.json"
106
86
  }
107
87
  },
108
- "end": "\"",
109
88
  "endCaptures": {
110
89
  "0": {
111
- "name": "punctuation.definition.string.end.json"
90
+ "name": "punctuation.definition.dictionary.end.json"
112
91
  }
113
- },
92
+ }
93
+ },
94
+ "string": {
114
95
  "name": "string.quoted.double.json",
96
+ "begin": "\"",
97
+ "end": "\"",
115
98
  "patterns": [
116
99
  {
117
- "match": "(?x: # turn on extended mode\n \\\\ # a literal backslash\n (?: # ...followed by...\n [\"\\\\/bfnrt] # one of these characters\n | # ...or...\n u # a u\n [0-9a-fA-F]{4} # and four hex digits\n )\n )",
118
- "name": "constant.character.escape.json"
100
+ "name": "constant.character.escape.json",
101
+ "match": "(?x: # turn on extended mode\n \\\\ # a literal backslash\n (?: # ...followed by...\n [\"\\\\/bfnrt] # one of these characters\n | # ...or...\n u # a u\n [0-9a-fA-F]{4} # and four hex digits\n )\n )"
119
102
  },
120
103
  {
121
- "match": "\\\\.",
122
- "name": "invalid.illegal.unrecognized-string-escape.json"
104
+ "name": "invalid.illegal.unrecognized-string-escape.json",
105
+ "match": "\\\\."
123
106
  }
124
- ]
107
+ ],
108
+ "beginCaptures": {
109
+ "0": {
110
+ "name": "punctuation.definition.string.begin.json"
111
+ }
112
+ },
113
+ "endCaptures": {
114
+ "0": {
115
+ "name": "punctuation.definition.string.end.json"
116
+ }
117
+ }
125
118
  },
126
119
  "value": {
127
- "comment": "the 'value' diagram at http://json.org",
128
120
  "patterns": [
129
121
  {
130
122
  "include": "#constant"
@@ -143,7 +135,5 @@
143
135
  }
144
136
  ]
145
137
  }
146
- },
147
- "scopeName": "source.json",
148
- "uuid": "0C3868E4-F96B-4E55-B204-1DCB5A20748B"
149
- }
138
+ }
139
+ }
@@ -1,10 +1,9 @@
1
1
  {
2
- "scopeName": "source.julia.console",
3
2
  "name": "Julia Console",
4
- "comment": "Not sure what this will be used for... Maybe if we have a REPL someday",
3
+ "scopeName": "source.julia.console",
5
4
  "patterns": [
6
5
  {
7
- "match": "^(julia>|\\.{3}|In \\[\\d+\\]:) (.+)$",
6
+ "match": "^(julia\u003e|\\.{3}|In \\[\\d+\\]:) (.+)$",
8
7
  "captures": {
9
8
  "1": {
10
9
  "name": "punctuation.separator.prompt.julia.console"
@@ -19,7 +18,7 @@
19
18
  }
20
19
  },
21
20
  {
22
- "match": "^(shell>) (.+)$",
21
+ "match": "^(shell\u003e) (.+)$",
23
22
  "captures": {
24
23
  "1": {
25
24
  "name": "punctuation.separator.prompt.shell.julia.console"
@@ -34,7 +33,7 @@
34
33
  }
35
34
  },
36
35
  {
37
- "match": "^(help\\?>) (.+)$",
36
+ "match": "^(help\\?\u003e) (.+)$",
38
37
  "captures": {
39
38
  "1": {
40
39
  "name": "punctuation.separator.prompt.help.julia.console"
@@ -49,4 +48,4 @@
49
48
  }
50
49
  }
51
50
  ]
52
- }
51
+ }
@@ -1,12 +1,6 @@
1
1
  {
2
- "comment": "Reference to the Oniguruma Regex libraray:\n https://github.com/kkos/oniguruma/blob/master/doc/RE\n\nTODO:\n* Once 0.4 is released, simplify type matches (no explicit 'Union', parens, etc.)\n* take out ::Type\n* Add more regex stuff.\n* Some in comments throughout the grammar\n",
3
- "fileTypes": [
4
- "jl"
5
- ],
6
- "firstLineMatch": "^#!.*\\bjulia\\s*$",
7
- "foldingStartMarker": "^\\s*(?:if|while|for|begin|function|macro|module|baremodule|type|immutable|struct|try|let)\\b(?!.*\\bend\\b).*$",
8
- "foldingStopMarker": "^\\s*(?:end)\\b.*$",
9
2
  "name": "Julia",
3
+ "scopeName": "source.julia",
10
4
  "patterns": [
11
5
  {
12
6
  "include": "#operator"
@@ -46,67 +40,81 @@
46
40
  "array": {
47
41
  "patterns": [
48
42
  {
43
+ "name": "meta.array.julia",
49
44
  "begin": "\\[",
50
45
  "end": "\\]((\\.)?'*)",
51
- "endCaptures": {
52
- "1": {
53
- "name": "keyword.operator.transpose.julia"
54
- }
55
- },
56
- "name": "meta.array.julia",
57
46
  "patterns": [
58
47
  {
59
- "match": "\\bend\\b",
60
- "name": "constant.numeric.julia"
48
+ "name": "constant.numeric.julia",
49
+ "match": "\\bend\\b"
50
+ },
51
+ {
52
+ "name": "keyword.control.julia",
53
+ "match": "\\bfor\\b"
61
54
  },
62
55
  {
63
56
  "include": "$self"
64
57
  }
65
- ]
58
+ ],
59
+ "endCaptures": {
60
+ "1": {
61
+ "name": "keyword.operator.transpose.julia"
62
+ }
63
+ }
66
64
  }
67
65
  ]
68
66
  },
69
67
  "bracket": {
70
68
  "patterns": [
71
69
  {
72
- "match": "(?:\\(|\\)|\\[|\\]|\\{|\\}|,)(?!('|(?:\\.'))*\\.?')",
73
- "name": "meta.bracket.julia"
70
+ "name": "meta.bracket.julia",
71
+ "match": "(?:\\(|\\)|\\[|\\]|\\{|\\}|,)(?!('|(?:\\.'))*\\.?')"
74
72
  }
75
73
  ]
76
74
  },
77
75
  "comment": {
78
76
  "patterns": [
79
77
  {
78
+ "name": "comment.block.number-sign-equals.julia",
80
79
  "begin": "#=",
80
+ "end": "=#",
81
81
  "beginCaptures": {
82
82
  "0": {
83
83
  "name": "punctuation.definition.comment.begin.julia"
84
84
  }
85
85
  },
86
- "end": "=#",
87
86
  "endCaptures": {
88
87
  "0": {
89
88
  "name": "punctuation.definition.comment.end.julia"
90
89
  }
91
- },
92
- "name": "comment.block.number-sign-equals.julia"
90
+ }
93
91
  },
94
92
  {
93
+ "name": "comment.line.number-sign.julia",
95
94
  "begin": "#",
95
+ "end": "\\n",
96
96
  "beginCaptures": {
97
97
  "0": {
98
98
  "name": "punctuation.definition.comment.julia"
99
99
  }
100
- },
101
- "end": "\\n",
102
- "name": "comment.line.number-sign.julia"
100
+ }
103
101
  }
104
102
  ]
105
103
  },
106
104
  "function_call": {
107
105
  "patterns": [
108
106
  {
109
- "begin": "([[:alpha:]_][[:word:]⁺-ₜ!′]*)({(?:[^{}]|{(?:[^{}]|{[^{}]*})*})*})?\\.?\\(",
107
+ "begin": "([[:alpha:]_][[:word:]⁺-ₜ!′∇]*)({(?:[^{}]|{(?:[^{}]|{[^{}]*})*})*})?\\.?\\(",
108
+ "end": "\\)(('|(\\.'))*\\.?')?",
109
+ "patterns": [
110
+ {
111
+ "name": "keyword.control.julia",
112
+ "match": "\\bfor\\b"
113
+ },
114
+ {
115
+ "include": "$self"
116
+ }
117
+ ],
110
118
  "beginCaptures": {
111
119
  "1": {
112
120
  "name": "support.function.julia"
@@ -115,23 +123,18 @@
115
123
  "name": "support.type.julia"
116
124
  }
117
125
  },
118
- "end": "\\)(('|(\\.'))*\\.?')?",
119
126
  "endCaptures": {
120
127
  "1": {
121
128
  "name": "keyword.operator.transposed-func.julia"
122
129
  }
123
- },
124
- "patterns": [
125
- {
126
- "include": "$self"
127
- }
128
- ]
130
+ }
129
131
  }
130
132
  ]
131
133
  },
132
134
  "function_decl": {
133
135
  "patterns": [
134
136
  {
137
+ "match": "([[:alpha:]_∇][[:word:]⁺-ₜ!′∇]*)({(?:[^{}]|{(?:[^{}]|{[^{}]*})*})*})?\\((?=.*\\)(::[^\\s]+)?(\\s*\\bwhere\\b\\s*[^\\s]+)?\\s*?=(?![=\u003e]))",
135
138
  "captures": {
136
139
  "1": {
137
140
  "name": "entity.name.function.julia"
@@ -139,11 +142,10 @@
139
142
  "2": {
140
143
  "name": "support.type.julia"
141
144
  }
142
- },
143
- "match": "([[:alpha:]_][[:word:]⁺-ₜ!′]*)({(?:[^{}]|{(?:[^{}]|{[^{}]*})*})*})?\\((?=.*\\)(::[^\\s]+)?(\\s*\\bwhere\\b\\s*[^\\s]+)?\\s*?=(?![=>]))",
144
- "comment": "This is different from the one in tpoisot's package"
145
+ }
145
146
  },
146
147
  {
148
+ "match": "\\b(function|macro)(?:\\s+(?:[[:alpha:]_∇][[:word:]⁺-ₜ!′∇]*(\\.))?([[:alpha:]_∇][[:word:]⁺-ₜ!′∇]*)({(?:[^{}]|{(?:[^{}]|{[^{}]*})*})*})?|\\s*)\\(",
147
149
  "captures": {
148
150
  "1": {
149
151
  "name": "keyword.other.julia"
@@ -157,84 +159,116 @@
157
159
  "4": {
158
160
  "name": "support.type.julia"
159
161
  }
160
- },
161
- "match": "\\b(function|macro)\\s+(?:[[:alpha:]_][[:word:]⁺-ₜ!′]*(\\.))?([[:alpha:]_][[:word:]⁺-ₜ!′]*)({(?:[^{}]|{(?:[^{}]|{[^{}]*})*})*})?\\(",
162
- "comment": "similar regex to previous, but with keyword not 1-line syntax"
162
+ }
163
163
  }
164
164
  ]
165
165
  },
166
166
  "keyword": {
167
167
  "patterns": [
168
168
  {
169
- "match": "\\b(?<![:_])(?:function|@generated|type|immutable|mutable|struct|macro|quote|abstract|bitstype|typealias|module|baremodule|new|where)\\b",
170
- "name": "keyword.other.julia"
169
+ "name": "keyword.other.julia",
170
+ "match": "\\b(?\u003c![:_])(?:function|@generated|type|immutable|mutable|struct|macro|quote|abstract|bitstype|typealias|module|baremodule|new|where)\\b"
171
+ },
172
+ {
173
+ "begin": "\\b(for)\\b",
174
+ "end": "(?\u003c!,|\\s)(\\s*\\n)",
175
+ "patterns": [
176
+ {
177
+ "name": "keyword.other.julia",
178
+ "match": "\\bouter\\b"
179
+ },
180
+ {
181
+ "include": "$self"
182
+ }
183
+ ],
184
+ "beginCaptures": {
185
+ "0": {
186
+ "name": "keyword.control.julia"
187
+ }
188
+ }
171
189
  },
172
190
  {
173
- "match": "\\b(?<![:_])(?:if|else|elseif|while|for|begin|let|do|try|catch|finally|return|break|continue)\\b",
174
- "name": "keyword.control.julia"
191
+ "name": "keyword.control.julia",
192
+ "match": "\\b(?\u003c![:_])(?:if|else|elseif|while|begin|let|do|try|catch|finally|return|break|continue)\\b"
175
193
  },
176
194
  {
177
- "match": "\\b(?<![:_])end\\b",
178
- "name": "keyword.control.end.julia"
195
+ "name": "keyword.control.end.julia",
196
+ "match": "\\b(?\u003c![:_])end\\b"
179
197
  },
180
198
  {
181
- "match": "\\b(?<![:_])(?:global|local|const)\\b",
182
- "name": "storage.modifier.variable.julia"
199
+ "name": "storage.modifier.variable.julia",
200
+ "match": "\\b(?\u003c![:_])(?:global|local|const)\\b"
183
201
  },
184
202
  {
185
- "match": "\\b(?<![:_])(?:export)\\b",
186
- "name": "keyword.control.export.julia"
203
+ "name": "keyword.control.export.julia",
204
+ "match": "\\b(?\u003c![:_])(?:export)\\b"
187
205
  },
188
206
  {
189
- "match": "\\b(?<![:_])(?:import)\\b",
190
- "name": "keyword.control.import.julia"
207
+ "name": "keyword.control.import.julia",
208
+ "match": "\\b(?\u003c![:_])(?:import)\\b"
191
209
  },
192
210
  {
193
- "match": "\\b(?<![:_])(?:importall)\\b",
194
- "name": "keyword.control.importall.julia"
211
+ "name": "keyword.control.importall.julia",
212
+ "match": "\\b(?\u003c![:_])(?:importall)\\b"
195
213
  },
196
214
  {
197
- "match": "\\b(?<![:_])(?:using)\\b",
198
- "name": "keyword.control.using.julia"
215
+ "name": "keyword.control.using.julia",
216
+ "match": "\\b(?\u003c![:_])(?:using)\\b"
199
217
  },
200
218
  {
201
- "match": "(@[[:alpha:]_][[:word:]⁺-ₜ!′]*)",
202
- "name": "support.function.macro.julia"
219
+ "name": "support.function.macro.julia",
220
+ "match": "(@(\\.|[[:alpha:]_∇][[:word:]⁺-ₜ!′∇]*))"
203
221
  },
204
222
  {
205
- "match": "\\b(Argument|Assertion|Bounds|Divide|Domain|EOF|Inexact|Key|Load|Memory|Method|OutOfMemory|Overflow|Parse|StackOverflow|System|Type|UV|UndefRef|UndefVar)Error\\b",
206
- "name": "support.type.exception.julia"
223
+ "name": "support.type.exception.julia",
224
+ "match": "\\b(Argument|Assertion|Bounds|Divide|Domain|EOF|Inexact|Key|Load|Memory|Method|OutOfMemory|Overflow|Parse|StackOverflow|System|Type|UV|UndefRef|UndefVar)Error\\b"
225
+ }
226
+ ]
227
+ },
228
+ "nest_parens_and_self": {
229
+ "patterns": [
230
+ {
231
+ "begin": "\\(",
232
+ "end": "\\)",
233
+ "patterns": [
234
+ {
235
+ "include": "#nest_parens_and_self"
236
+ }
237
+ ]
238
+ },
239
+ {
240
+ "include": "$self"
207
241
  }
208
242
  ]
209
243
  },
210
244
  "number": {
211
245
  "patterns": [
212
246
  {
213
- "match": "((\\b0(x|X)[0-9a-fA-F](_?[0-9a-fA-F])*)|(\\b0o[0-7](_?[0-7])*)|(\\b0b[0-1](_?[0-1])*)|((\\b[0-9](_?[0-9])*\\.?(_?[0-9]*))|(\\.[0-9](_?[0-9])*))([eE][+-]?[0-9](_?[0-9])*)?(im)?|\\bInf(32)?\\b|\\bNaN(32)?\\b)",
214
- "name": "constant.numeric.julia"
247
+ "name": "constant.numeric.julia",
248
+ "match": "((\\b0(x|X)[0-9a-fA-F](_?[0-9a-fA-F])*)|(\\b0o[0-7](_?[0-7])*)|(\\b0b[0-1](_?[0-1])*)|((\\b[0-9](_?[0-9])*\\.?(_?[0-9]*))|(\\.[0-9](_?[0-9])*))([eE][+-]?[0-9](_?[0-9])*)?(im\\b)?|\\bInf(32)?\\b|\\bNaN(32)?\\b)"
215
249
  },
216
250
  {
217
- "match": "\\btrue\\b|\\bfalse\\b|\\bnothing\\b",
218
- "name": "constant.language.julia"
251
+ "name": "constant.language.julia",
252
+ "match": "\\btrue\\b|\\bfalse\\b|\\bnothing\\b"
219
253
  }
220
254
  ]
221
255
  },
222
256
  "operator": {
223
257
  "patterns": [
224
258
  {
225
- "match": "(?:->|<-|-->|=>)",
226
- "name": "keyword.operator.arrow.julia"
259
+ "name": "keyword.operator.arrow.julia",
260
+ "match": "(?:-\u003e|\u003c-|--\u003e|=\u003e)"
227
261
  },
228
262
  {
229
- "match": "(?::=|\\+=|-=|\\*=|//=|/=|\\.//=|\\./=|\\.\\*=|\\\\=|\\.\\\\=|\\^=|\\.\\^=|%=|\\.%=|÷=|\\.÷=|\\|=|&=|\\$=|<<=|>>=|>>>=|=(?!=))",
230
- "name": "keyword.operator.update.julia"
263
+ "name": "keyword.operator.update.julia",
264
+ "match": "(?::=|\\+=|-=|\\*=|//=|/=|\\.//=|\\./=|\\.\\*=|\\\\=|\\.\\\\=|\\^=|\\.\\^=|%=|\\.%=|÷=|\\.÷=|\\|=|\u0026=|\\$=|\u003c\u003c=|\u003e\u003e=|\u003e\u003e\u003e=|=(?!=))"
231
265
  },
232
266
  {
233
- "match": "(?:<<|>>>|>>|\\.>>>|\\.>>|\\.<<)",
234
- "name": "keyword.operator.shift.julia"
267
+ "name": "keyword.operator.shift.julia",
268
+ "match": "(?:\u003c\u003c|\u003e\u003e\u003e|\u003e\u003e|\\.\u003e\u003e\u003e|\\.\u003e\u003e|\\.\u003c\u003c)"
235
269
  },
236
270
  {
237
- "match": "(?:\\s*(::|<:)\\s*((?:(?:Union)?\\([^)]*\\)|[[:alpha:]_][[:word:]⁺-ₜ!′\\.]*(?:{(?:[^{}]|{(?:[^{}]|{[^{}]*})*})*})?)))(?:\\.\\.\\.)?",
271
+ "match": "(?:\\s*(::|\u003e:|\u003c:)\\s*((?:(?:Union)?\\([^)]*\\)|[[:alpha:]_][[:word:]⁺-ₜ!′\\.]*(?:{(?:[^{}]|{(?:[^{}]|{[^{}]*})*})*})?)))(?:\\.\\.\\.)?",
238
272
  "captures": {
239
273
  "1": {
240
274
  "name": "keyword.operator.relation.julia"
@@ -245,54 +279,55 @@
245
279
  }
246
280
  },
247
281
  {
248
- "match": "(?:===|(?<=\\s)in(?=\\s)|\\.==|!==|!=|\\.>=|\\.>|\\.<|==|\\.!=|\\.=|\\.!|<:|:>|(?<!>)>=|(?<!<)<=|\\.<=|>|<)",
249
- "name": "keyword.operator.relation.julia"
282
+ "name": "keyword.operator.relation.julia",
283
+ "match": "(?:===|(?\u003c=\\s)in(?=\\s)|\\.==|!==|!=|\\.\u003e=|\\.\u003e|\\.\u003c=|\\.\u003c|==|\\.!=|\\.=|\\.!|\u003c:|\u003e:|:\u003e|(?\u003c!\u003e)\u003e=|(?\u003c!\u003c)\u003c=|\u003e|\u003c)"
250
284
  },
251
285
  {
252
- "match": "(?:\\?:)",
253
- "name": "keyword.operator.ternary.julia"
286
+ "name": "keyword.operator.ternary.julia",
287
+ "match": "(?:\\?:)"
254
288
  },
255
289
  {
256
- "match": "(?:\\|\\||&&|(?<![[:word:]])!)",
257
- "name": "keyword.operator.boolean.julia"
290
+ "name": "keyword.operator.boolean.julia",
291
+ "match": "(?:\\|\\||\u0026\u0026|(?\u003c![[:word:]])!)"
258
292
  },
259
293
  {
260
- "match": "(?::)",
261
- "name": "keyword.operator.range.julia"
294
+ "name": "keyword.operator.range.julia",
295
+ "match": "(?\u003c=[[:word:]⁺-ₜ!′∇\\)\\]\\}])(?::)"
262
296
  },
263
297
  {
264
- "match": "(?:\\|>)",
265
- "name": "keyword.operator.applies.julia"
298
+ "name": "keyword.operator.applies.julia",
299
+ "match": "(?:\\|\u003e)"
266
300
  },
267
301
  {
268
- "match": "(?:\\||\\&|~)",
269
- "name": "keyword.operator.bitwise.julia"
302
+ "name": "keyword.operator.bitwise.julia",
303
+ "match": "(?:\\||\\\u0026|~)"
270
304
  },
271
305
  {
272
- "match": "(?:\\+\\+|--|\\+|\\.\\+|-|\\.\\-|\\*|\\.\\*|//(?!=)|\\.//(?!=)|/|\\./|%|\\.%|\\\\|\\.\\\\|\\^|\\.\\^)",
273
- "name": "keyword.operator.arithmetic.julia"
306
+ "name": "keyword.operator.arithmetic.julia",
307
+ "match": "(?:\\+\\+|--|\\+|\\.\\+|-|\\.\\-|\\*|\\.\\*|//(?!=)|\\.//(?!=)|/|\\./|%|\\.%|\\\\|\\.\\\\|\\^|\\.\\^)"
274
308
  },
275
309
  {
276
- "match": "(?:::|(?<=\\s)isa(?=\\s))",
277
- "name": "keyword.operator.isa.julia"
310
+ "name": "keyword.operator.isa.julia",
311
+ "match": "(?:::|(?\u003c=\\s)isa(?=\\s))"
278
312
  },
279
313
  {
280
- "match": "(?:\\.(?=(?:@|_|\\p{L}))|\\.\\.+)",
281
- "name": "keyword.operator.dots.julia"
314
+ "name": "keyword.operator.dots.julia",
315
+ "match": "(?:\\.(?=(?:@|_|\\p{L}))|\\.\\.+)"
282
316
  },
283
317
  {
284
- "match": "(?:\\$(?=.+))",
285
- "name": "keyword.operator.interpolation.julia"
318
+ "name": "keyword.operator.interpolation.julia",
319
+ "match": "(?:\\$(?=.+))"
286
320
  },
287
321
  {
322
+ "match": "([[:alpha:]_∇][[:word:]⁺-ₜ!′∇]*)(('|(\\.'))*\\.?')",
288
323
  "captures": {
289
324
  "2": {
290
325
  "name": "keyword.operator.transposed-variable.julia"
291
326
  }
292
- },
293
- "match": "([[:alpha:]_][[:word:]⁺-ₜ!′]*)(('|(\\.'))*\\.?')"
327
+ }
294
328
  },
295
329
  {
330
+ "match": "(\\])((?:'|(?:\\.'))*\\.?')",
296
331
  "captures": {
297
332
  "1": {
298
333
  "name": "bracket.end.julia"
@@ -300,10 +335,10 @@
300
335
  "2": {
301
336
  "name": "keyword.operator.transposed-matrix.julia"
302
337
  }
303
- },
304
- "match": "(\\])((?:'|(?:\\.'))*\\.?')"
338
+ }
305
339
  },
306
340
  {
341
+ "match": "(\\))((?:'|(?:\\.'))*\\.?')",
307
342
  "captures": {
308
343
  "1": {
309
344
  "name": "bracket.end.julia"
@@ -311,15 +346,24 @@
311
346
  "2": {
312
347
  "name": "keyword.operator.transposed-parens.julia"
313
348
  }
314
- },
315
- "match": "(\\))((?:'|(?:\\.'))*\\.?')"
349
+ }
316
350
  }
317
351
  ]
318
352
  },
319
353
  "string": {
320
354
  "patterns": [
321
355
  {
322
- "begin": "(i?cxx)(\"\"\")",
356
+ "name": "string.docstring.julia",
357
+ "begin": "(?:(@doc)\\s((?:doc)?\"\"\")|(doc\"\"\"))",
358
+ "end": "(\"\"\") ?(-\u003e)?",
359
+ "patterns": [
360
+ {
361
+ "include": "#string_escaped_char"
362
+ },
363
+ {
364
+ "include": "#string_dollar_sign_interpolate"
365
+ }
366
+ ],
323
367
  "beginCaptures": {
324
368
  "1": {
325
369
  "name": "support.function.macro.julia"
@@ -328,116 +372,142 @@
328
372
  "name": "punctuation.definition.string.begin.julia"
329
373
  }
330
374
  },
331
- "end": "\"\"\"",
332
375
  "endCaptures": {
333
- "0": {
376
+ "1": {
334
377
  "name": "punctuation.definition.string.end.julia"
378
+ },
379
+ "2": {
380
+ "name": "keyword.operator.arrow.julia"
335
381
  }
336
- },
382
+ }
383
+ },
384
+ {
337
385
  "name": "embed.cxx.julia",
338
386
  "contentName": "source.cpp",
387
+ "begin": "(i?cxx)(\"\"\")",
388
+ "end": "\"\"\"",
339
389
  "patterns": [
340
390
  {
341
- "include": "source.cpp"
391
+ "include": "source.c++"
342
392
  },
343
393
  {
344
394
  "include": "#string_dollar_sign_interpolate"
345
395
  }
346
- ]
347
- },
348
- {
349
- "begin": "((i?cxxt?)|([rpv]cpp))(\")",
396
+ ],
350
397
  "beginCaptures": {
351
398
  "1": {
352
399
  "name": "support.function.macro.julia"
353
400
  },
354
- "4": {
401
+ "2": {
355
402
  "name": "punctuation.definition.string.begin.julia"
356
403
  }
357
404
  },
358
- "end": "\"",
359
- "name": "embed.cxx.julia",
360
405
  "endCaptures": {
361
406
  "0": {
362
407
  "name": "punctuation.definition.string.end.julia"
363
408
  }
364
- },
409
+ }
410
+ },
411
+ {
412
+ "name": "embed.cxx.julia",
365
413
  "contentName": "source.cpp",
414
+ "begin": "((i?cxxt?)|([rpv]cpp))(\")",
415
+ "end": "\"",
366
416
  "patterns": [
367
417
  {
368
- "include": "source.cpp"
418
+ "include": "source.c++"
369
419
  },
370
420
  {
371
421
  "include": "#string_dollar_sign_interpolate"
372
422
  }
373
- ]
374
- },
375
- {
376
- "begin": "^\\s?([[:alpha:]_][[:word:]⁺-ₜ!′]*)?(\"\"\")\\s?$",
423
+ ],
377
424
  "beginCaptures": {
378
425
  "1": {
379
426
  "name": "support.function.macro.julia"
380
427
  },
381
- "2": {
428
+ "4": {
382
429
  "name": "punctuation.definition.string.begin.julia"
383
430
  }
384
431
  },
385
- "end": "\\s?^\\s*(\"\"\")\\s?",
386
432
  "endCaptures": {
387
- "1": {
433
+ "0": {
388
434
  "name": "punctuation.definition.string.end.julia"
389
435
  }
390
- },
436
+ }
437
+ },
438
+ {
391
439
  "name": "string.docstring.julia",
392
- "contentName": "source.gfm",
393
- "comment": "This only matches docstrings that start and end with triple quotes on\ntheir own line in the void",
440
+ "begin": "^\\s?([[:alpha:]_∇][[:word:]⁺-ₜ!′∇]*)?(\"\"\")\\s?$",
441
+ "end": "(\"\"\")",
394
442
  "patterns": [
395
- {
396
- "include": "source.gfm"
397
- },
398
443
  {
399
444
  "include": "#string_escaped_char"
400
445
  },
401
446
  {
402
447
  "include": "#string_dollar_sign_interpolate"
403
448
  }
404
- ]
449
+ ],
450
+ "beginCaptures": {
451
+ "1": {
452
+ "name": "support.function.macro.julia"
453
+ },
454
+ "2": {
455
+ "name": "punctuation.definition.string.begin.julia"
456
+ }
457
+ },
458
+ "endCaptures": {
459
+ "1": {
460
+ "name": "punctuation.definition.string.end.julia"
461
+ }
462
+ }
405
463
  },
406
464
  {
465
+ "name": "string.quoted.single.julia",
407
466
  "begin": "'",
467
+ "end": "'",
468
+ "patterns": [
469
+ {
470
+ "include": "#string_escaped_char"
471
+ }
472
+ ],
408
473
  "beginCaptures": {
409
474
  "0": {
410
475
  "name": "punctuation.definition.string.begin.julia"
411
476
  }
412
477
  },
413
- "end": "'",
414
478
  "endCaptures": {
415
479
  "0": {
416
480
  "name": "punctuation.definition.string.end.julia"
417
481
  }
418
- },
419
- "name": "string.quoted.single.julia",
482
+ }
483
+ },
484
+ {
485
+ "name": "string.quoted.triple.double.julia",
486
+ "begin": "\"\"\"",
487
+ "end": "\"\"\"",
420
488
  "patterns": [
421
489
  {
422
490
  "include": "#string_escaped_char"
491
+ },
492
+ {
493
+ "include": "#string_dollar_sign_interpolate"
423
494
  }
424
- ]
425
- },
426
- {
427
- "begin": "\"\"\"",
495
+ ],
428
496
  "beginCaptures": {
429
497
  "0": {
430
498
  "name": "punctuation.definition.string.multiline.begin.julia"
431
499
  }
432
500
  },
433
- "end": "\"\"\"",
434
501
  "endCaptures": {
435
502
  "0": {
436
503
  "name": "punctuation.definition.string.multiline.end.julia"
437
504
  }
438
- },
439
- "name": "string.quoted.triple.double.julia",
440
- "comment": "TODO: decide on a name for this scope",
505
+ }
506
+ },
507
+ {
508
+ "name": "string.quoted.double.julia",
509
+ "begin": "\"",
510
+ "end": "\"",
441
511
  "patterns": [
442
512
  {
443
513
  "include": "#string_escaped_char"
@@ -445,90 +515,65 @@
445
515
  {
446
516
  "include": "#string_dollar_sign_interpolate"
447
517
  }
448
- ]
449
- },
450
- {
451
- "name": "string.quoted.double.julia",
452
- "begin": "\"",
518
+ ],
453
519
  "beginCaptures": {
454
520
  "0": {
455
521
  "name": "punctuation.definition.string.begin.julia"
456
522
  }
457
523
  },
458
- "end": "\"",
459
524
  "endCaptures": {
460
525
  "0": {
461
526
  "name": "punctuation.definition.string.end.julia"
462
527
  }
463
- },
464
- "comment": "String with single pair of double quotes. Regex matches isolated double quote",
528
+ }
529
+ },
530
+ {
531
+ "name": "string.regexp.julia",
532
+ "begin": "r\"",
533
+ "end": "(\")([imsx]{0,4})?",
465
534
  "patterns": [
466
535
  {
467
536
  "include": "#string_escaped_char"
468
- },
469
- {
470
- "include": "#string_dollar_sign_interpolate"
471
537
  }
472
- ]
473
- },
474
- {
475
- "begin": "r\"",
538
+ ],
476
539
  "beginCaptures": {
477
540
  "0": {
478
541
  "name": "punctuation.definition.string.regexp.begin.julia"
479
542
  }
480
543
  },
481
- "end": "(\")([imsx]{0,4})?",
482
544
  "endCaptures": {
483
545
  "1": {
484
546
  "name": "punctuation.definition.string.regexp.end.julia"
485
547
  },
486
548
  "2": {
487
- "comment": "I took this scope name from python regex grammar",
488
549
  "name": "keyword.other.option-toggle.regexp.julia"
489
550
  }
490
- },
491
- "name": "string.regexp.julia",
492
- "patterns": [
493
- {
494
- "include": "#string_escaped_char"
495
- }
496
- ]
551
+ }
497
552
  },
498
553
  {
499
- "begin": "\\b[[:alpha:]_][[:word:]⁺-ₜ!′]*\"",
500
- "beginCaptures": {
501
- "0": {
502
- "name": "punctuation.definition.string.begin.julia"
503
- }
504
- },
505
- "end": "\"([[:alpha:]_][[:word:]⁺-ₜ!′]*)?",
506
- "endCaptures": {
507
- "0": {
508
- "name": "punctuation.definition.string.end.julia"
509
- }
510
- },
511
554
  "name": "string.quoted.other.julia",
555
+ "begin": "\\b[[:alpha:]_∇][[:word:]⁺-ₜ!′∇]*\"",
556
+ "end": "\"([[:alpha:]_∇][[:word:]⁺-ₜ!′∇]*)?",
512
557
  "patterns": [
513
558
  {
514
559
  "include": "#string_escaped_char"
515
560
  }
516
- ]
517
- },
518
- {
519
- "begin": "`",
561
+ ],
520
562
  "beginCaptures": {
521
563
  "0": {
522
564
  "name": "punctuation.definition.string.begin.julia"
523
565
  }
524
566
  },
525
- "end": "`",
526
567
  "endCaptures": {
527
568
  "0": {
528
569
  "name": "punctuation.definition.string.end.julia"
529
570
  }
530
- },
571
+ }
572
+ },
573
+ {
531
574
  "name": "string.interpolated.backtick.julia",
575
+ "begin": "`",
576
+ "end": "`",
532
577
  "patterns": [
533
578
  {
534
579
  "include": "#string_escaped_char"
@@ -536,62 +581,30 @@
536
581
  {
537
582
  "include": "#string_dollar_sign_interpolate"
538
583
  }
539
- ]
540
- },
541
- {
542
- "begin": "(@doc) ((?:doc)?\"\"\")",
584
+ ],
543
585
  "beginCaptures": {
544
- "1": {
545
- "name": "support.function.macro.julia"
546
- },
547
- "2": {
586
+ "0": {
548
587
  "name": "punctuation.definition.string.begin.julia"
549
588
  }
550
589
  },
551
- "end": "(\"\"\") ?(->)?",
552
590
  "endCaptures": {
553
- "1": {
591
+ "0": {
554
592
  "name": "punctuation.definition.string.end.julia"
555
- },
556
- "2": {
557
- "name": "keyword.operator.arrow.julia"
558
593
  }
559
- },
560
- "name": "string.docstring.julia",
561
- "contentName": "source.gfm",
562
- "patterns": [
563
- {
564
- "include": "#string_escaped_char"
565
- },
566
- {
567
- "include": "source.gfm"
568
- },
569
- {
570
- "include": "#string_dollar_sign_interpolate"
571
- }
572
- ]
573
- }
574
- ]
575
- },
576
- "string_escaped_char": {
577
- "patterns": [
578
- {
579
- "match": "\\\\(\\\\|[0-3]\\d{,2}|[4-7]\\d?|x[a-fA-F0-9]{,2}|u[a-fA-F0-9]{,4}|U[a-fA-F0-9]{,8}|.)",
580
- "name": "constant.character.escape.julia"
594
+ }
581
595
  }
582
596
  ]
583
597
  },
584
598
  "string_dollar_sign_interpolate": {
585
599
  "patterns": [
586
600
  {
587
- "match": "\\$[[:alpha:]_][[:word:]⁺-ₜ!′]*",
588
- "name": "variable.interpolation.julia"
601
+ "name": "variable.interpolation.julia",
602
+ "match": "\\$[[:alpha:]_∇][[:word:]⁺-ₜ!′∇]*"
589
603
  },
590
604
  {
605
+ "name": "variable.interpolation.julia",
591
606
  "begin": "\\$\\(",
592
607
  "end": "\\)",
593
- "name": "variable.interpolation.julia",
594
- "comment": "`punctuation.section.embedded`, `constant.escape`,\n& `meta.embedded.line` were considered but appear to have even spottier\nsupport among popular syntaxes.",
595
608
  "patterns": [
596
609
  {
597
610
  "include": "#nest_parens_and_self"
@@ -603,34 +616,27 @@
603
616
  }
604
617
  ]
605
618
  },
606
- "nest_parens_and_self": {
619
+ "string_escaped_char": {
607
620
  "patterns": [
608
621
  {
609
- "begin": "\\(",
610
- "end": "\\)",
611
- "patterns": [
612
- {
613
- "include": "#nest_parens_and_self"
614
- }
615
- ]
616
- },
617
- {
618
- "include": "$self"
622
+ "name": "constant.character.escape.julia",
623
+ "match": "\\\\(\\\\|[0-3]\\d{,2}|[4-7]\\d?|x[a-fA-F0-9]{,2}|u[a-fA-F0-9]{,4}|U[a-fA-F0-9]{,8}|.)"
619
624
  }
620
625
  ]
621
626
  },
622
627
  "symbol": {
623
628
  "patterns": [
624
629
  {
625
- "match": "(?<![a-zA-Z0-9:<]:)(?<=:)[[:alpha:]_][[:word:]⁺-ₜ!′]*",
626
630
  "name": "constant.other.symbol.julia",
627
- "comment": "This is string.quoted.symbol.julia in tpoisot's package"
631
+ "match": "(?\u003c![[:word:]⁺-ₜ!′∇\\)\\]\\}]):(?:[[:alpha:]_∇][[:word:]⁺-ₜ!′∇]*)"
628
632
  }
629
633
  ]
630
634
  },
631
635
  "type_decl": {
632
636
  "patterns": [
633
637
  {
638
+ "name": "meta.type.julia",
639
+ "match": "(?\u003e!:_)(?:type|immutable|struct)\\s+([[:alpha:]_∇][[:word:]⁺-ₜ!′∇]*)(\\s*(\u003c:)\\s*[[:alpha:]_∇][[:word:]⁺-ₜ!′∇]*(?:{.*})?)?",
634
640
  "captures": {
635
641
  "1": {
636
642
  "name": "entity.name.type.julia"
@@ -641,12 +647,9 @@
641
647
  "3": {
642
648
  "name": "punctuation.separator.inheritance.julia"
643
649
  }
644
- },
645
- "match": "(?>!:_)(?:type|immutable|struct)\\s+([[:alpha:]_][[:word:]⁺-ₜ!′]*)(\\s*(<:)\\s*[[:alpha:]_][[:word:]⁺-ₜ!′]*(?:{.*})?)?",
646
- "name": "meta.type.julia"
650
+ }
647
651
  }
648
652
  ]
649
653
  }
650
- },
651
- "scopeName": "source.julia"
652
- }
654
+ }
655
+ }