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,28 +1,14 @@
1
1
  {
2
- "fileTypes": [
3
- "steps.rb"
4
- ],
5
- "foldingStartMarker": "^\\s*\\b(Given|When|Then|def)",
6
- "foldingStopMarker": "^\\s*(end)$",
7
- "keyEquivalent": "^~C",
8
2
  "name": "Cucumber Steps",
3
+ "scopeName": "source.ruby.rspec.cucumber.steps",
9
4
  "patterns": [
10
5
  {
11
- "match": "\\b(GivenScenario|Given|When|Then)\\b",
12
- "name": "keyword.other.step.cucumber"
6
+ "name": "keyword.other.step.cucumber",
7
+ "match": "\\b(GivenScenario|Given|When|Then)\\b"
13
8
  },
14
9
  {
15
- "begin": "\\b(?<=GivenScenario|Given|When|Then) (\")",
16
- "captures": {
17
- "1": {
18
- "name": "string.quoted.double.ruby"
19
- },
20
- "2": {
21
- "name": "punctuation.definition.string.ruby"
22
- }
23
- },
24
- "comment": "string after a Cucumber keyword",
25
10
  "contentName": "string.quoted.step.cucumber.classic.ruby",
11
+ "begin": "\\b(?\u003c=GivenScenario|Given|When|Then) (\")",
26
12
  "end": "((\\1))",
27
13
  "patterns": [
28
14
  {
@@ -31,20 +17,19 @@
31
17
  {
32
18
  "include": "#regex_sub"
33
19
  }
34
- ]
35
- },
36
- {
37
- "begin": "\\b(?<=GivenScenario|Given|When|Then) (')",
20
+ ],
38
21
  "captures": {
39
22
  "1": {
40
- "name": "string.quoted.single.ruby"
23
+ "name": "string.quoted.double.ruby"
41
24
  },
42
25
  "2": {
43
26
  "name": "punctuation.definition.string.ruby"
44
27
  }
45
- },
46
- "comment": "string after a Cucumber keyword",
28
+ }
29
+ },
30
+ {
47
31
  "contentName": "string.quoted.step.cucumber.classic.ruby",
32
+ "begin": "\\b(?\u003c=GivenScenario|Given|When|Then) (')",
48
33
  "end": "((\\1))",
49
34
  "patterns": [
50
35
  {
@@ -53,67 +38,72 @@
53
38
  {
54
39
  "include": "#interpolated_ruby"
55
40
  }
56
- ]
57
- },
58
- {
59
- "begin": "\\b(?<=GivenScenario|Given|When|Then) (/)",
41
+ ],
60
42
  "captures": {
61
43
  "1": {
62
- "name": "string.regexp.classic.ruby"
44
+ "name": "string.quoted.single.ruby"
63
45
  },
64
46
  "2": {
65
47
  "name": "punctuation.definition.string.ruby"
66
48
  }
67
- },
68
- "comment": "regular expression after a Cucumber keyword",
49
+ }
50
+ },
51
+ {
69
52
  "contentName": "string.regexp.step.cucumber.classic.ruby",
53
+ "begin": "\\b(?\u003c=GivenScenario|Given|When|Then) (/)",
70
54
  "end": "((/[eimnosux]*))",
71
55
  "patterns": [
72
56
  {
73
57
  "include": "#regex_sub"
74
58
  }
75
- ]
76
- },
77
- {
78
- "begin": "\\b(?<=GivenScenario|Given|When|Then) (%r{)",
59
+ ],
79
60
  "captures": {
80
61
  "1": {
81
- "name": "string.regexp.mod-r.ruby"
62
+ "name": "string.regexp.classic.ruby"
82
63
  },
83
64
  "2": {
84
65
  "name": "punctuation.definition.string.ruby"
85
66
  }
86
- },
87
- "comment": "regular expression after a Cucumber keyword",
67
+ }
68
+ },
69
+ {
88
70
  "contentName": "string.regexp.step.cucumber.mod-r.ruby",
71
+ "begin": "\\b(?\u003c=GivenScenario|Given|When|Then) (%r{)",
89
72
  "end": "((}[eimnosux]*))",
90
73
  "patterns": [
91
74
  {
92
75
  "include": "#regex_sub"
93
76
  }
94
- ]
77
+ ],
78
+ "captures": {
79
+ "1": {
80
+ "name": "string.regexp.mod-r.ruby"
81
+ },
82
+ "2": {
83
+ "name": "punctuation.definition.string.ruby"
84
+ }
85
+ }
95
86
  },
96
87
  {
97
- "begin": "(?><<-CUCUMBER\\b)",
88
+ "name": "string.unquoted.embedded.cucumber.feature",
89
+ "contentName": "text.cucumber.embedded.ruby",
90
+ "begin": "(?\u003e\u003c\u003c-CUCUMBER\\b)",
91
+ "end": "\\s*CUCUMBER$",
92
+ "patterns": [
93
+ {
94
+ "include": "text.gherkin.feature"
95
+ }
96
+ ],
98
97
  "beginCaptures": {
99
98
  "0": {
100
99
  "name": "punctuation.definition.string.begin.ruby"
101
100
  }
102
101
  },
103
- "comment": "embedded Cucumber feature",
104
- "contentName": "text.cucumber.embedded.ruby",
105
- "end": "\\s*CUCUMBER$",
106
102
  "endCaptures": {
107
103
  "0": {
108
104
  "name": "punctuation.definition.string.end.ruby"
109
105
  }
110
- },
111
- "name": "string.unquoted.embedded.cucumber.feature",
112
- "patterns": [
113
- {
114
- "include": "text.gherkin.feature"
115
- }
116
- ]
106
+ }
117
107
  },
118
108
  {
119
109
  "include": "source.ruby"
@@ -121,12 +111,14 @@
121
111
  ],
122
112
  "repository": {
123
113
  "escaped_char": {
124
- "match": "\\\\(?:[0-7]{1,3}|x[\\da-fA-F]{1,2}|.)",
125
- "name": "constant.character.escape.ruby"
114
+ "name": "constant.character.escape.ruby",
115
+ "match": "\\\\(?:[0-7]{1,3}|x[\\da-fA-F]{1,2}|.)"
126
116
  },
127
117
  "interpolated_ruby": {
128
118
  "patterns": [
129
119
  {
120
+ "name": "source.ruby.embedded.source",
121
+ "match": "#\\{(\\})",
130
122
  "captures": {
131
123
  "0": {
132
124
  "name": "punctuation.section.embedded.ruby"
@@ -134,19 +126,12 @@
134
126
  "1": {
135
127
  "name": "source.ruby.embedded.source.empty"
136
128
  }
137
- },
138
- "match": "#\\{(\\})",
139
- "name": "source.ruby.embedded.source"
129
+ }
140
130
  },
141
131
  {
132
+ "name": "source.ruby.embedded.source",
142
133
  "begin": "#\\{",
143
- "captures": {
144
- "0": {
145
- "name": "punctuation.section.embedded.ruby"
146
- }
147
- },
148
134
  "end": "\\}",
149
- "name": "source.ruby.embedded.source",
150
135
  "patterns": [
151
136
  {
152
137
  "include": "#nest_curly_and_self"
@@ -154,34 +139,39 @@
154
139
  {
155
140
  "include": "source.ruby"
156
141
  }
157
- ]
142
+ ],
143
+ "captures": {
144
+ "0": {
145
+ "name": "punctuation.section.embedded.ruby"
146
+ }
147
+ }
158
148
  },
159
149
  {
150
+ "name": "variable.other.readwrite.instance.ruby",
151
+ "match": "(#@)[a-zA-Z_]\\w*",
160
152
  "captures": {
161
153
  "1": {
162
154
  "name": "punctuation.definition.variable.ruby"
163
155
  }
164
- },
165
- "match": "(#@)[a-zA-Z_]\\w*",
166
- "name": "variable.other.readwrite.instance.ruby"
156
+ }
167
157
  },
168
158
  {
159
+ "name": "variable.other.readwrite.class.ruby",
160
+ "match": "(#@@)[a-zA-Z_]\\w*",
169
161
  "captures": {
170
162
  "1": {
171
163
  "name": "punctuation.definition.variable.ruby"
172
164
  }
173
- },
174
- "match": "(#@@)[a-zA-Z_]\\w*",
175
- "name": "variable.other.readwrite.class.ruby"
165
+ }
176
166
  },
177
167
  {
168
+ "name": "variable.other.readwrite.global.ruby",
169
+ "match": "(#\\$)[a-zA-Z_]\\w*",
178
170
  "captures": {
179
171
  "1": {
180
172
  "name": "punctuation.definition.variable.ruby"
181
173
  }
182
- },
183
- "match": "(#\\$)[a-zA-Z_]\\w*",
184
- "name": "variable.other.readwrite.global.ruby"
174
+ }
185
175
  }
186
176
  ]
187
177
  },
@@ -189,17 +179,17 @@
189
179
  "patterns": [
190
180
  {
191
181
  "begin": "\\{",
192
- "captures": {
193
- "0": {
194
- "name": "punctuation.section.scope.ruby"
195
- }
196
- },
197
182
  "end": "\\}",
198
183
  "patterns": [
199
184
  {
200
185
  "include": "#nest_curly_and_self"
201
186
  }
202
- ]
187
+ ],
188
+ "captures": {
189
+ "0": {
190
+ "name": "punctuation.section.scope.ruby"
191
+ }
192
+ }
203
193
  },
204
194
  {
205
195
  "include": "source.ruby"
@@ -215,6 +205,8 @@
215
205
  "include": "#escaped_char"
216
206
  },
217
207
  {
208
+ "name": "string.regexp.arbitrary-repitition.ruby",
209
+ "match": "(\\{)\\d+(,\\d+)?(\\})",
218
210
  "captures": {
219
211
  "1": {
220
212
  "name": "punctuation.definition.arbitrary-repitition.ruby"
@@ -222,53 +214,48 @@
222
214
  "3": {
223
215
  "name": "punctuation.definition.arbitrary-repitition.ruby"
224
216
  }
225
- },
226
- "match": "(\\{)\\d+(,\\d+)?(\\})",
227
- "name": "string.regexp.arbitrary-repitition.ruby"
217
+ }
228
218
  },
229
219
  {
220
+ "name": "string.regexp.character-class.ruby",
230
221
  "begin": "\\[(?:\\^?\\])?",
231
- "captures": {
232
- "0": {
233
- "name": "punctuation.definition.character-class.ruby"
234
- }
235
- },
236
222
  "end": "\\]",
237
- "name": "string.regexp.character-class.ruby",
238
223
  "patterns": [
239
224
  {
240
225
  "include": "#escaped_char"
241
226
  }
242
- ]
243
- },
244
- {
245
- "begin": "\\(",
227
+ ],
246
228
  "captures": {
247
229
  "0": {
248
- "name": "punctuation.definition.group.ruby"
230
+ "name": "punctuation.definition.character-class.ruby"
249
231
  }
250
- },
251
- "end": "\\)",
232
+ }
233
+ },
234
+ {
252
235
  "name": "string.regexp.group.ruby",
236
+ "begin": "\\(",
237
+ "end": "\\)",
253
238
  "patterns": [
254
239
  {
255
240
  "include": "#regex_sub"
256
241
  }
257
- ]
242
+ ],
243
+ "captures": {
244
+ "0": {
245
+ "name": "punctuation.definition.group.ruby"
246
+ }
247
+ }
258
248
  },
259
249
  {
250
+ "name": "comment.line.number-sign.ruby",
251
+ "match": "(?\u003c=^|\\s)(#)\\s[[a-zA-Z0-9,. \\t?!-][^\\x{00}-\\x{7F}]]*$",
260
252
  "captures": {
261
253
  "1": {
262
254
  "name": "punctuation.definition.comment.ruby"
263
255
  }
264
- },
265
- "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.",
266
- "match": "(?<=^|\\s)(#)\\s[[a-zA-Z0-9,. \\t?!-][^\\x{00}-\\x{7F}]]*$",
267
- "name": "comment.line.number-sign.ruby"
256
+ }
268
257
  }
269
258
  ]
270
259
  }
271
- },
272
- "scopeName": "source.ruby.rspec.cucumber.steps",
273
- "uuid": "B269B8F3-3A6D-4169-9E70-DD89A679416A"
274
- }
260
+ }
261
+ }
@@ -1,220 +1,10 @@
1
1
  {
2
2
  "name": "Rust",
3
3
  "scopeName": "source.rust",
4
- "fileTypes": [
5
- "rs"
6
- ],
7
- "repository": {
8
- "block_doc_comment": {
9
- "comment": "Block documentation comment",
10
- "name": "comment.block.documentation.rust",
11
- "begin": "/\\*[\\*!](?![\\*/])",
12
- "end": "\\*/",
13
- "patterns": [
14
- {
15
- "include": "#block_doc_comment"
16
- },
17
- {
18
- "include": "#block_comment"
19
- }
20
- ]
21
- },
22
- "block_comment": {
23
- "comment": "Block comment",
24
- "name": "comment.block.rust",
25
- "begin": "/\\*",
26
- "end": "\\*/",
27
- "patterns": [
28
- {
29
- "include": "#block_doc_comment"
30
- },
31
- {
32
- "include": "#block_comment"
33
- }
34
- ]
35
- },
36
- "line_doc_comment": {
37
- "comment": "Single-line documentation comment",
38
- "name": "comment.line.documentation.rust",
39
- "begin": "//[!/](?=[^/])",
40
- "end": "$"
41
- },
42
- "line_comment": {
43
- "comment": "Single-line comment",
44
- "name": "comment.line.double-slash.rust",
45
- "begin": "//",
46
- "end": "$"
47
- },
48
- "escaped_character": {
49
- "name": "constant.character.escape.rust",
50
- "match": "\\\\(x[0-9A-Fa-f]{2}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)"
51
- },
52
- "string_literal": {
53
- "comment": "Double-quote string literal",
54
- "name": "string.quoted.double.rust",
55
- "begin": "b?\"",
56
- "end": "\"",
57
- "patterns": [
58
- {
59
- "include": "#escaped_character"
60
- }
61
- ]
62
- },
63
- "raw_string_literal": {
64
- "comment": "Raw double-quote string literal",
65
- "name": "string.quoted.double.raw.rust",
66
- "begin": "b?r(#*)\"",
67
- "end": "\"\\1"
68
- },
69
- "sigils": {
70
- "comment": "Sigil",
71
- "name": "keyword.operator.sigil.rust",
72
- "match": "[&*](?=[a-zA-Z0-9_\\(\\[\\|\\\"]+)"
73
- },
74
- "self": {
75
- "comment": "Self variable",
76
- "name": "variable.language.rust",
77
- "match": "\\bself\\b"
78
- },
79
- "mut": {
80
- "comment": "Mutable storage modifier",
81
- "name": "storage.modifier.mut.rust",
82
- "match": "\\bmut\\b"
83
- },
84
- "box": {
85
- "comment": "Box storage modifier",
86
- "name": "storage.modifier.box.rust",
87
- "match": "\\bbox\\b"
88
- },
89
- "const": {
90
- "comment": "Const storage modifier",
91
- "name": "storage.modifier.const.rust",
92
- "match": "\\bconst\\b"
93
- },
94
- "pub": {
95
- "comment": "Visibility modifier",
96
- "name": "storage.modifier.visibility.rust",
97
- "match": "\\bpub\\b"
98
- },
99
- "unsafe": {
100
- "comment": "Unsafe code keyword",
101
- "name": "keyword.other.unsafe.rust",
102
- "match": "\\bunsafe\\b"
103
- },
104
- "where": {
105
- "comment": "Generic where clause",
106
- "name": "keyword.other.where.rust",
107
- "match": "\\bwhere\\b"
108
- },
109
- "lifetime": {
110
- "comment": "Named lifetime",
111
- "name": "storage.modifier.lifetime.rust",
112
- "match": "'([a-zA-Z_][a-zA-Z0-9_]*)\\b",
113
- "captures": {
114
- "1": {
115
- "name": "entity.name.lifetime.rust"
116
- }
117
- }
118
- },
119
- "ref_lifetime": {
120
- "comment": "Reference with named lifetime",
121
- "match": "&('([a-zA-Z_][a-zA-Z0-9_]*))\\b",
122
- "captures": {
123
- "1": {
124
- "name": "storage.modifier.lifetime.rust"
125
- },
126
- "2": {
127
- "name": "entity.name.lifetime.rust"
128
- }
129
- }
130
- },
131
- "core_types": {
132
- "comment": "Built-in/core type",
133
- "name": "storage.type.core.rust",
134
- "match": "\\b(bool|char|usize|isize|u8|u16|u32|u64|u128|i8|i16|i32|i64|i128|f32|f64|str|Self|Option|Result)\\b"
135
- },
136
- "core_vars": {
137
- "comment": "Core type variant",
138
- "name": "support.constant.core.rust",
139
- "match": "\\b(Some|None|Ok|Err)\\b"
140
- },
141
- "core_marker": {
142
- "comment": "Core trait (marker)",
143
- "name": "support.type.marker.rust",
144
- "match": "\\b(Copy|Send|Sized|Sync)\\b"
145
- },
146
- "core_traits": {
147
- "comment": "Core trait",
148
- "name": "support.type.core.rust",
149
- "match": "\\b(Drop|Fn|FnMut|FnOnce|Clone|PartialEq|PartialOrd|Eq|Ord|AsRef|AsMut|Into|From|Default|Iterator|Extend|IntoIterator|DoubleEndedIterator|ExactSizeIterator)\\b"
150
- },
151
- "std_types": {
152
- "comment": "Standard library type",
153
- "name": "storage.class.std.rust",
154
- "match": "\\b(Box|String|Vec|Path|PathBuf)\\b"
155
- },
156
- "std_traits": {
157
- "comment": "Standard library trait",
158
- "name": "support.type.std.rust",
159
- "match": "\\b(ToOwned|ToString)\\b"
160
- },
161
- "type": {
162
- "comment": "A type",
163
- "name": "entity.name.type.rust",
164
- "match": "\\b([A-Za-z][_A-Za-z0-9]*|_[_A-Za-z0-9]+)\\b"
165
- },
166
- "type_params": {
167
- "comment": "Type parameters",
168
- "name": "meta.type_params.rust",
169
- "begin": "<(?![=<])",
170
- "end": "(?<![-])>",
171
- "patterns": [
172
- {
173
- "include": "#block_comment"
174
- },
175
- {
176
- "include": "#line_comment"
177
- },
178
- {
179
- "include": "#sigils"
180
- },
181
- {
182
- "include": "#mut"
183
- },
184
- {
185
- "include": "#lifetime"
186
- },
187
- {
188
- "include": "#core_types"
189
- },
190
- {
191
- "include": "#core_marker"
192
- },
193
- {
194
- "include": "#core_traits"
195
- },
196
- {
197
- "include": "#std_types"
198
- },
199
- {
200
- "include": "#std_traits"
201
- },
202
- {
203
- "include": "#type_params"
204
- }
205
- ]
206
- }
207
- },
208
4
  "patterns": [
209
5
  {
210
- "comment": "Implementation",
211
6
  "begin": "\\b(impl)\\b",
212
7
  "end": "\\{",
213
- "beginCaptures": {
214
- "1": {
215
- "name": "storage.type.rust"
216
- }
217
- },
218
8
  "patterns": [
219
9
  {
220
10
  "include": "#block_comment"
@@ -259,7 +49,12 @@
259
49
  {
260
50
  "include": "#type"
261
51
  }
262
- ]
52
+ ],
53
+ "beginCaptures": {
54
+ "1": {
55
+ "name": "storage.type.rust"
56
+ }
57
+ }
263
58
  },
264
59
  {
265
60
  "include": "#block_doc_comment"
@@ -274,7 +69,6 @@
274
69
  "include": "#line_comment"
275
70
  },
276
71
  {
277
- "comment": "Attribute",
278
72
  "name": "meta.attribute.rust",
279
73
  "begin": "#\\!?\\[",
280
74
  "end": "\\]",
@@ -297,7 +91,6 @@
297
91
  ]
298
92
  },
299
93
  {
300
- "comment": "Single-quote string literal (character)",
301
94
  "name": "string.quoted.single.rust",
302
95
  "match": "b?'([^'\\\\]|\\\\(x[0-9A-Fa-f]{2}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.))'"
303
96
  },
@@ -308,62 +101,50 @@
308
101
  "include": "#raw_string_literal"
309
102
  },
310
103
  {
311
- "comment": "Floating point literal (fraction)",
312
104
  "name": "constant.numeric.float.rust",
313
105
  "match": "\\b[0-9][0-9_]*\\.[0-9][0-9_]*([eE][+-]?[0-9_]+)?(f32|f64)?\\b"
314
106
  },
315
107
  {
316
- "comment": "Floating point literal (exponent)",
317
108
  "name": "constant.numeric.float.rust",
318
109
  "match": "\\b[0-9][0-9_]*(\\.[0-9][0-9_]*)?[eE][+-]?[0-9_]+(f32|f64)?\\b"
319
110
  },
320
111
  {
321
- "comment": "Floating point literal (typed)",
322
112
  "name": "constant.numeric.float.rust",
323
113
  "match": "\\b[0-9][0-9_]*(\\.[0-9][0-9_]*)?([eE][+-]?[0-9_]+)?(f32|f64)\\b"
324
114
  },
325
115
  {
326
- "comment": "Integer literal (decimal)",
327
116
  "name": "constant.numeric.integer.decimal.rust",
328
117
  "match": "\\b[0-9][0-9_]*([ui](8|16|32|64|128|s|size))?\\b"
329
118
  },
330
119
  {
331
- "comment": "Integer literal (hexadecimal)",
332
120
  "name": "constant.numeric.integer.hexadecimal.rust",
333
121
  "match": "\\b0x[a-fA-F0-9_]+([ui](8|16|32|64|128|s|size))?\\b"
334
122
  },
335
123
  {
336
- "comment": "Integer literal (octal)",
337
124
  "name": "constant.numeric.integer.octal.rust",
338
125
  "match": "\\b0o[0-7_]+([ui](8|16|32|64|128|s|size))?\\b"
339
126
  },
340
127
  {
341
- "comment": "Integer literal (binary)",
342
128
  "name": "constant.numeric.integer.binary.rust",
343
129
  "match": "\\b0b[01_]+([ui](8|16|32|64|128|s|size))?\\b"
344
130
  },
345
131
  {
346
- "comment": "Static storage modifier",
347
132
  "name": "storage.modifier.static.rust",
348
133
  "match": "\\bstatic\\b"
349
134
  },
350
135
  {
351
- "comment": "Boolean constant",
352
136
  "name": "constant.language.boolean.rust",
353
137
  "match": "\\b(true|false)\\b"
354
138
  },
355
139
  {
356
- "comment": "Control keyword",
357
140
  "name": "keyword.control.rust",
358
141
  "match": "\\b(break|continue|else|if|in|for|loop|match|return|while)\\b"
359
142
  },
360
143
  {
361
- "comment": "Keyword",
362
144
  "name": "keyword.other.rust",
363
145
  "match": "\\b(crate|extern|mod|let|ref|use|super|move)\\b"
364
146
  },
365
147
  {
366
- "comment": "Reserved keyword",
367
148
  "name": "invalid.deprecated.rust",
368
149
  "match": "\\b(abstract|alignof|become|do|final|macro|offsetof|override|priv|proc|pure|sizeof|typeof|virtual|yield)\\b"
369
150
  },
@@ -395,29 +176,24 @@
395
176
  "include": "#pub"
396
177
  },
397
178
  {
398
- "comment": "Miscellaneous operator",
399
179
  "name": "keyword.operator.misc.rust",
400
- "match": "(=>|::|\\bas\\b)"
180
+ "match": "(=\u003e|::|\\bas\\b)"
401
181
  },
402
182
  {
403
- "comment": "Comparison operator",
404
183
  "name": "keyword.operator.comparison.rust",
405
- "match": "(&&|\\|\\||==|!=)"
184
+ "match": "(\u0026\u0026|\\|\\||==|!=)"
406
185
  },
407
186
  {
408
- "comment": "Assignment operator",
409
187
  "name": "keyword.operator.assignment.rust",
410
- "match": "(\\+=|-=|/=|\\*=|%=|\\^=|&=|\\|=|<<=|>>=|=)"
188
+ "match": "(\\+=|-=|/=|\\*=|%=|\\^=|\u0026=|\\|=|\u003c\u003c=|\u003e\u003e=|=)"
411
189
  },
412
190
  {
413
- "comment": "Arithmetic operator",
414
191
  "name": "keyword.operator.arithmetic.rust",
415
- "match": "(!|\\+|-|/|\\*|%|\\^|&|\\||<<|>>)"
192
+ "match": "(!|\\+|-|/|\\*|%|\\^|\u0026|\\||\u003c\u003c|\u003e\u003e)"
416
193
  },
417
194
  {
418
- "comment": "Comparison operator (second group because of regex precedence)",
419
195
  "name": "keyword.operator.comparison.rust",
420
- "match": "(<=|>=|<|>)"
196
+ "match": "(\u003c=|\u003e=|\u003c|\u003e)"
421
197
  },
422
198
  {
423
199
  "include": "#core_types"
@@ -438,27 +214,22 @@
438
214
  "include": "#std_traits"
439
215
  },
440
216
  {
441
- "comment": "Built-in macro",
442
217
  "name": "support.function.builtin.rust",
443
- "match": "\\b(macro_rules|format_args|env|option_env|concat_idents|concat|log_syntax|line|column|file|stringify|include|include_str|include_bytes|module_path|asm|cfg|trace_macros)!"
218
+ "match": "\\b(macro_rules|compile_error|format_args|env|option_env|concat_idents|concat|line|column|file|stringify|include|include_str|include_bytes|module_path|cfg)!"
444
219
  },
445
220
  {
446
- "comment": "Core macro",
447
221
  "name": "support.function.core.rust",
448
- "match": "\\b(panic|assert|assert_eq|debug_assert|debug_assert_eq|try|write|writeln|unreachable|unimplemented)!"
222
+ "match": "\\b(panic|assert|assert_eq|assert_ne|debug_assert|debug_assert_eq|debug_assert_ne|try|write|writeln|unreachable|unimplemented)!"
449
223
  },
450
224
  {
451
- "comment": "Standard library macro",
452
225
  "name": "support.function.std.rust",
453
- "match": "\\b(format|print|println|select|vec)!"
226
+ "match": "\\b(format|print|println|eprint|eprintln|select|vec)!"
454
227
  },
455
228
  {
456
- "comment": "Logging macro",
457
229
  "name": "support.function.log.rust",
458
230
  "match": "\\b(log|error|warn|info|debug|trace|log_enabled)!"
459
231
  },
460
232
  {
461
- "comment": "Invokation of a macro",
462
233
  "match": "\\b([a-zA-Z_][a-zA-Z0-9_]*\\!)\\s*[({\\[]",
463
234
  "captures": {
464
235
  "1": {
@@ -467,7 +238,6 @@
467
238
  }
468
239
  },
469
240
  {
470
- "comment": "Function call",
471
241
  "match": "\\b([A-Za-z][A-Za-z0-9_]*|_[A-Za-z0-9_]+)\\s*\\(",
472
242
  "captures": {
473
243
  "1": {
@@ -476,9 +246,13 @@
476
246
  }
477
247
  },
478
248
  {
479
- "comment": "Function call with type parameters",
480
- "begin": "\\b([A-Za-z][A-Za-z0-9_]*|_[A-Za-z0-9_]+)\\s*(::)(?=\\s*<.*>\\s*\\()",
249
+ "begin": "\\b([A-Za-z][A-Za-z0-9_]*|_[A-Za-z0-9_]+)\\s*(::)(?=\\s*\u003c.*\u003e\\s*\\()",
481
250
  "end": "\\(",
251
+ "patterns": [
252
+ {
253
+ "include": "#type_params"
254
+ }
255
+ ],
482
256
  "captures": {
483
257
  "1": {
484
258
  "name": "entity.name.function.rust"
@@ -486,25 +260,11 @@
486
260
  "2": {
487
261
  "name": "keyword.operator.misc.rust"
488
262
  }
489
- },
490
- "patterns": [
491
- {
492
- "include": "#type_params"
493
- }
494
- ]
263
+ }
495
264
  },
496
265
  {
497
- "comment": "Function definition",
498
266
  "begin": "\\b(fn)\\s+([A-Za-z][A-Za-z0-9_]*|_[A-Za-z0-9_]+)",
499
267
  "end": "[\\{;]",
500
- "beginCaptures": {
501
- "1": {
502
- "name": "keyword.other.fn.rust"
503
- },
504
- "2": {
505
- "name": "entity.name.function.rust"
506
- }
507
- },
508
268
  "patterns": [
509
269
  {
510
270
  "include": "#block_comment"
@@ -552,24 +312,22 @@
552
312
  "include": "#unsafe"
553
313
  },
554
314
  {
555
- "comment": "Function arguments",
556
- "match": "\bfn\b",
557
- "name": "keyword.other.fn.rust"
315
+ "name": "keyword.other.fn.rust",
316
+ "match": "\u0008fn\u0008"
558
317
  }
559
- ]
560
- },
561
- {
562
- "comment": "Type declaration",
563
- "begin": "\\b(enum|struct|trait|union)\\s+([a-zA-Z_][a-zA-Z0-9_]*)",
564
- "end": "[\\{\\(;]",
318
+ ],
565
319
  "beginCaptures": {
566
320
  "1": {
567
- "name": "storage.type.rust"
321
+ "name": "keyword.other.fn.rust"
568
322
  },
569
323
  "2": {
570
- "name": "entity.name.type.rust"
324
+ "name": "entity.name.function.rust"
571
325
  }
572
- },
326
+ }
327
+ },
328
+ {
329
+ "begin": "\\b(enum|struct|trait|union)\\s+([a-zA-Z_][a-zA-Z0-9_]*)",
330
+ "end": "[\\{\\(;]",
573
331
  "patterns": [
574
332
  {
575
333
  "include": "#block_comment"
@@ -595,12 +353,57 @@
595
353
  {
596
354
  "include": "#where"
597
355
  }
598
- ]
356
+ ],
357
+ "beginCaptures": {
358
+ "1": {
359
+ "name": "storage.type.rust"
360
+ },
361
+ "2": {
362
+ "name": "entity.name.type.rust"
363
+ }
364
+ }
599
365
  },
600
366
  {
601
- "comment": "Type alias",
602
367
  "begin": "\\b(type)\\s+([a-zA-Z_][a-zA-Z0-9_]*)",
603
368
  "end": ";",
369
+ "patterns": [
370
+ {
371
+ "include": "#block_comment"
372
+ },
373
+ {
374
+ "include": "#line_comment"
375
+ },
376
+ {
377
+ "include": "#sigils"
378
+ },
379
+ {
380
+ "include": "#mut"
381
+ },
382
+ {
383
+ "include": "#lifetime"
384
+ },
385
+ {
386
+ "include": "#ref_lifetime"
387
+ },
388
+ {
389
+ "include": "#core_types"
390
+ },
391
+ {
392
+ "include": "#core_marker"
393
+ },
394
+ {
395
+ "include": "#core_traits"
396
+ },
397
+ {
398
+ "include": "#std_types"
399
+ },
400
+ {
401
+ "include": "#std_traits"
402
+ },
403
+ {
404
+ "include": "#type_params"
405
+ }
406
+ ],
604
407
  "beginCaptures": {
605
408
  "1": {
606
409
  "name": "storage.type.rust"
@@ -608,7 +411,141 @@
608
411
  "2": {
609
412
  "name": "entity.name.type.rust"
610
413
  }
611
- },
414
+ }
415
+ }
416
+ ],
417
+ "repository": {
418
+ "block_comment": {
419
+ "name": "comment.block.rust",
420
+ "begin": "/\\*",
421
+ "end": "\\*/",
422
+ "patterns": [
423
+ {
424
+ "include": "#block_doc_comment"
425
+ },
426
+ {
427
+ "include": "#block_comment"
428
+ }
429
+ ]
430
+ },
431
+ "block_doc_comment": {
432
+ "name": "comment.block.documentation.rust",
433
+ "begin": "/\\*[\\*!](?![\\*/])",
434
+ "end": "\\*/",
435
+ "patterns": [
436
+ {
437
+ "include": "#block_doc_comment"
438
+ },
439
+ {
440
+ "include": "#block_comment"
441
+ }
442
+ ]
443
+ },
444
+ "box": {
445
+ "name": "storage.modifier.box.rust",
446
+ "match": "\\bbox\\b"
447
+ },
448
+ "const": {
449
+ "name": "storage.modifier.const.rust",
450
+ "match": "\\bconst\\b"
451
+ },
452
+ "core_marker": {
453
+ "name": "support.type.marker.rust",
454
+ "match": "\\b(Copy|Send|Sized|Sync)\\b"
455
+ },
456
+ "core_traits": {
457
+ "name": "support.type.core.rust",
458
+ "match": "\\b(Drop|Fn|FnMut|FnOnce|Clone|PartialEq|PartialOrd|Eq|Ord|AsRef|AsMut|Into|From|Default|Iterator|Extend|IntoIterator|DoubleEndedIterator|ExactSizeIterator)\\b"
459
+ },
460
+ "core_types": {
461
+ "name": "storage.type.core.rust",
462
+ "match": "\\b(bool|char|usize|isize|u8|u16|u32|u64|u128|i8|i16|i32|i64|i128|f32|f64|str|Self|Option|Result)\\b"
463
+ },
464
+ "core_vars": {
465
+ "name": "support.constant.core.rust",
466
+ "match": "\\b(Some|None|Ok|Err)\\b"
467
+ },
468
+ "escaped_character": {
469
+ "name": "constant.character.escape.rust",
470
+ "match": "\\\\(x[0-9A-Fa-f]{2}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)"
471
+ },
472
+ "lifetime": {
473
+ "name": "storage.modifier.lifetime.rust",
474
+ "match": "'([a-zA-Z_][a-zA-Z0-9_]*)\\b",
475
+ "captures": {
476
+ "1": {
477
+ "name": "entity.name.lifetime.rust"
478
+ }
479
+ }
480
+ },
481
+ "line_comment": {
482
+ "name": "comment.line.double-slash.rust",
483
+ "begin": "//",
484
+ "end": "$"
485
+ },
486
+ "line_doc_comment": {
487
+ "name": "comment.line.documentation.rust",
488
+ "begin": "//[!/](?=[^/])",
489
+ "end": "$"
490
+ },
491
+ "mut": {
492
+ "name": "storage.modifier.mut.rust",
493
+ "match": "\\bmut\\b"
494
+ },
495
+ "pub": {
496
+ "name": "storage.modifier.visibility.rust",
497
+ "match": "\\bpub\\b"
498
+ },
499
+ "raw_string_literal": {
500
+ "name": "string.quoted.double.raw.rust",
501
+ "begin": "b?r(#*)\"",
502
+ "end": "\"\\1"
503
+ },
504
+ "ref_lifetime": {
505
+ "match": "\u0026('([a-zA-Z_][a-zA-Z0-9_]*))\\b",
506
+ "captures": {
507
+ "1": {
508
+ "name": "storage.modifier.lifetime.rust"
509
+ },
510
+ "2": {
511
+ "name": "entity.name.lifetime.rust"
512
+ }
513
+ }
514
+ },
515
+ "self": {
516
+ "name": "variable.language.rust",
517
+ "match": "\\bself\\b"
518
+ },
519
+ "sigils": {
520
+ "name": "keyword.operator.sigil.rust",
521
+ "match": "[\u0026*](?=[a-zA-Z0-9_\\(\\[\\|\\\"]+)"
522
+ },
523
+ "std_traits": {
524
+ "name": "support.type.std.rust",
525
+ "match": "\\b(ToOwned|ToString)\\b"
526
+ },
527
+ "std_types": {
528
+ "name": "storage.class.std.rust",
529
+ "match": "\\b(Box|String|Vec|Path|PathBuf)\\b"
530
+ },
531
+ "string_literal": {
532
+ "name": "string.quoted.double.rust",
533
+ "begin": "b?\"",
534
+ "end": "\"",
535
+ "patterns": [
536
+ {
537
+ "include": "#escaped_character"
538
+ }
539
+ ]
540
+ },
541
+ "type": {
542
+ "name": "entity.name.type.rust",
543
+ "match": "\\b([A-Za-z][_A-Za-z0-9]*|_[_A-Za-z0-9]+)\\b"
544
+ },
545
+ "type_params": {
546
+ "name": "meta.type_params.rust",
547
+ "begin": "\u003c(?![=\u003c])",
548
+ "end": "(?\u003c![-])\u003e",
612
549
  "patterns": [
613
550
  {
614
551
  "include": "#block_comment"
@@ -625,9 +562,6 @@
625
562
  {
626
563
  "include": "#lifetime"
627
564
  },
628
- {
629
- "include": "#ref_lifetime"
630
- },
631
565
  {
632
566
  "include": "#core_types"
633
567
  },
@@ -647,6 +581,14 @@
647
581
  "include": "#type_params"
648
582
  }
649
583
  ]
584
+ },
585
+ "unsafe": {
586
+ "name": "keyword.other.unsafe.rust",
587
+ "match": "\\bunsafe\\b"
588
+ },
589
+ "where": {
590
+ "name": "keyword.other.where.rust",
591
+ "match": "\\bwhere\\b"
650
592
  }
651
- ]
652
- }
593
+ }
594
+ }