github-linguist 7.6.0 → 7.10.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (147) hide show
  1. checksums.yaml +5 -5
  2. data/bin/github-linguist +17 -4
  3. data/grammars/annotation.liquidhaskell.haskell.json +58 -11
  4. data/grammars/etc.json +472 -4
  5. data/grammars/hidden.manref.json +29 -0
  6. data/grammars/hidden.regexp.injection-shell.json +28 -0
  7. data/grammars/hint.haskell.json +58 -11
  8. data/grammars/hint.message.haskell.json +58 -11
  9. data/grammars/hint.type.haskell.json +58 -11
  10. data/grammars/injections.etc.json +601 -1
  11. data/grammars/markdown.plantuml.codeblock.json +26 -0
  12. data/grammars/source.4dm.json +1156 -0
  13. data/grammars/source.abap.json +7 -7
  14. data/grammars/source.abl.json +685 -83
  15. data/grammars/source.abnf.json +23 -1
  16. data/grammars/source.agda.json +33 -203
  17. data/grammars/source.ahk.json +9 -5
  18. data/grammars/source.angelscript.json +1 -1
  19. data/grammars/source.ballerina.json +55 -19
  20. data/grammars/source.c++.json +4 -4
  21. data/grammars/source.c.platform.json +584 -33
  22. data/grammars/source.chapel.json +7 -4
  23. data/grammars/source.csound.json +1 -1
  24. data/grammars/source.css.json +3 -3
  25. data/grammars/source.css.scss.json +164 -15
  26. data/grammars/source.curlrc.json +869 -65
  27. data/grammars/source.d.json +2 -2
  28. data/grammars/source.dart.json +58 -32
  29. data/grammars/source.dircolors.json +137 -0
  30. data/grammars/source.direct-x.json +135 -0
  31. data/grammars/source.ebnf.json +67 -39
  32. data/grammars/source.editorconfig.json +23 -5
  33. data/grammars/source.elixir.json +51 -0
  34. data/grammars/source.elm.json +1 -1
  35. data/grammars/source.emacs.lisp.json +10 -0
  36. data/grammars/source.faust.json +119 -0
  37. data/grammars/source.futhark.json +146 -0
  38. data/grammars/source.gcode.json +166 -8
  39. data/grammars/source.gedcom.json +196 -0
  40. data/grammars/source.generic-db.json +41 -0
  41. data/grammars/source.gfm.blade.json +15 -0
  42. data/grammars/source.gfm.json +1697 -1439
  43. data/grammars/source.gitconfig.json +1 -1
  44. data/grammars/source.hack.json +200 -98
  45. data/grammars/source.haskell.json +58 -11
  46. data/grammars/source.hlsl.json +9 -5
  47. data/grammars/source.hosts.json +40 -0
  48. data/grammars/source.hsig.json +58 -11
  49. data/grammars/source.httpspec.json +1 -1
  50. data/grammars/source.hx.json +9 -5
  51. data/grammars/source.hxml.json +2 -2
  52. data/grammars/source.idris.json +1 -1
  53. data/grammars/source.igor.json +46 -2
  54. data/grammars/source.ini.npmrc.json +311 -0
  55. data/grammars/source.inno.json +133 -0
  56. data/grammars/source.inputrc.json +500 -0
  57. data/grammars/source.isabelle.root.json +1 -1
  58. data/grammars/source.jison.json +3 -0
  59. data/grammars/source.jisonlex.json +3 -0
  60. data/grammars/source.js.json +4 -4
  61. data/grammars/source.julia.json +70 -24
  62. data/grammars/source.kotlin.json +17 -51
  63. data/grammars/source.lcov.json +398 -0
  64. data/grammars/source.lean.json +20 -4
  65. data/grammars/source.lean.markdown.json +2598 -0
  66. data/grammars/source.lex.json +4 -4
  67. data/grammars/source.m2.json +125 -0
  68. data/grammars/source.m4.json +141 -99
  69. data/grammars/source.man-conf.json +47 -35
  70. data/grammars/source.matlab.json +437 -184
  71. data/grammars/source.mcfunction-snapshot.json +21388 -561
  72. data/grammars/source.mcfunction.json +55 -5
  73. data/grammars/source.meson.json +1 -1
  74. data/grammars/source.mlir.json +37 -317
  75. data/grammars/source.modula-3.json +10 -0
  76. data/grammars/source.msl.json +755 -0
  77. data/grammars/source.nasl.json +155 -0
  78. data/grammars/source.neon.json +381 -0
  79. data/grammars/source.nextflow.json +2 -2
  80. data/grammars/source.objc.platform.json +493 -35
  81. data/grammars/source.odin-ehr.json +806 -0
  82. data/grammars/source.odin.json +402 -0
  83. data/grammars/source.openbsd-pkg.contents.json +128 -0
  84. data/grammars/source.opts.json +12 -2
  85. data/grammars/source.perl6fe.json +1 -1
  86. data/grammars/source.postscript.json +358 -103
  87. data/grammars/source.prisma.json +435 -0
  88. data/grammars/source.purescript.json +29 -2
  89. data/grammars/source.python.json +52 -0
  90. data/grammars/source.q.json +150 -63
  91. data/grammars/source.qasm.json +66 -0
  92. data/grammars/source.ql.json +1408 -0
  93. data/grammars/source.r.json +4 -4
  94. data/grammars/source.reason.json +28 -16
  95. data/grammars/source.rego.json +124 -0
  96. data/grammars/source.sass.json +158 -3
  97. data/grammars/source.scala.json +53 -18
  98. data/grammars/source.sieve.json +383 -0
  99. data/grammars/source.solidity.json +1 -1
  100. data/grammars/source.ssh-config.json +1 -14
  101. data/grammars/source.swift.json +162 -2
  102. data/grammars/source.sy.json +2088 -183
  103. data/grammars/source.tags.json +266 -0
  104. data/grammars/source.terraform.json +576 -132
  105. data/grammars/source.tnsaudit.json +256 -0
  106. data/grammars/source.ts.json +246 -70
  107. data/grammars/source.tsx.json +247 -71
  108. data/grammars/source.v.json +587 -761
  109. data/grammars/source.vim-snippet.json +645 -0
  110. data/grammars/source.viml.json +6 -6
  111. data/grammars/source.webassembly.json +10 -0
  112. data/grammars/source.webidl.json +8 -0
  113. data/grammars/source.wgetrc.json +1640 -0
  114. data/grammars/source.wsd.json +781 -0
  115. data/grammars/source.x86.json +7 -3
  116. data/grammars/source.zig.json +231 -360
  117. data/grammars/text.dfy.dafny.json +188 -0
  118. data/grammars/text.html.php.blade.json +535 -528
  119. data/grammars/text.html.riot.json +788 -0
  120. data/grammars/text.muse.json +1471 -0
  121. data/grammars/text.openbsd-pkg.desc.json +78 -0
  122. data/grammars/text.roff.json +49 -1
  123. data/grammars/text.sfd.json +21 -0
  124. data/grammars/text.tex.latex.haskell.json +58 -11
  125. data/grammars/text.vim-help.json +383 -0
  126. data/grammars/text.xml.svg.json +8 -2
  127. data/grammars/version +1 -1
  128. data/lib/linguist/VERSION +1 -1
  129. data/lib/linguist/blob_helper.rb +4 -2
  130. data/lib/linguist/file_blob.rb +1 -1
  131. data/lib/linguist/generated.rb +96 -28
  132. data/lib/linguist/heuristics.yml +64 -4
  133. data/lib/linguist/languages.json +1 -1
  134. data/lib/linguist/languages.yml +408 -49
  135. data/lib/linguist/lazy_blob.rb +10 -10
  136. data/lib/linguist/linguist.bundle +0 -0
  137. data/lib/linguist/samples.json +48129 -31562
  138. data/lib/linguist/shebang.rb +5 -3
  139. data/lib/linguist/vendor.yml +71 -60
  140. metadata +48 -17
  141. data/grammars/source.LS.json +0 -85
  142. data/grammars/source.MCPOST.json +0 -54
  143. data/grammars/source.MOD.json +0 -55
  144. data/grammars/source.apt.json +0 -18
  145. data/grammars/source.jlex.json +0 -322
  146. data/grammars/source.yaml-ext.json +0 -324
  147. data/grammars/text.html.abl.json +0 -70
@@ -50,7 +50,7 @@
50
50
  },
51
51
  "attrValueCSS": {
52
52
  "begin": "(?i)(?\u003c=style)\\G\\s*(=)",
53
- "end": "(?=\\s*(?:[%?/]?\u003e))|([^\\s\"'\u003e]+)|(?\u003c=[\"'])",
53
+ "end": "(?=\\s*(?:[%?/]?\u003e))|(?\u003c=[\"'])([^\\s\u003e]*)|(?:\\G|^)\\s*([^\\s\"'\u003e]+)",
54
54
  "patterns": [
55
55
  {
56
56
  "match": "(?:\\G|^)\\s+(?!/?\u003e)"
@@ -129,6 +129,9 @@
129
129
  },
130
130
  "endCaptures": {
131
131
  "1": {
132
+ "name": "invalid.illegal.syntax.xml.svg"
133
+ },
134
+ "2": {
132
135
  "name": "string.unquoted.xml.svg",
133
136
  "patterns": [
134
137
  {
@@ -140,7 +143,7 @@
140
143
  },
141
144
  "attrValuePlain": {
142
145
  "begin": "\\s*(=)",
143
- "end": "(?=\\s*(?:[%?/]?\u003e))|([^\\s\"'\u003e]+)|(?\u003c=[\"'])",
146
+ "end": "(?=\\s*(?:[%?/]?\u003e))|(?\u003c=[\"'])([^\\s\u003e]*)|(?:\\G|^)\\s*([^\\s\"'\u003e]+)",
144
147
  "patterns": [
145
148
  {
146
149
  "match": "(?:\\G|^)\\s+(?!/?\u003e)"
@@ -193,6 +196,9 @@
193
196
  },
194
197
  "endCaptures": {
195
198
  "1": {
199
+ "name": "invalid.illegal.syntax.xml.svg"
200
+ },
201
+ "2": {
196
202
  "name": "string.unquoted.xml.svg"
197
203
  }
198
204
  }
@@ -1 +1 @@
1
- 7.6.0
1
+ 7.10.0
@@ -1 +1 @@
1
- 7.6.0
1
+ 7.10.0
@@ -270,8 +270,10 @@ module Linguist
270
270
  # also--importantly--without having to duplicate many (potentially
271
271
  # large) strings.
272
272
  begin
273
-
274
- data.split(encoded_newlines_re, -1)
273
+ # `data` is split after having its last `\n` removed by
274
+ # chomp (if any). This prevents the creation of an empty
275
+ # element after the final `\n` character on POSIX files.
276
+ data.chomp.split(encoded_newlines_re, -1)
275
277
  rescue Encoding::ConverterNotFoundError
276
278
  # The data is not splittable in the detected encoding. Assume it's
277
279
  # one big line.
@@ -35,7 +35,7 @@ module Linguist
35
35
  #
36
36
  # Returns a String.
37
37
  def data
38
- @data ||= File.read(@fullpath)
38
+ @data ||= File.read(@fullpath, :encoding => "ASCII-8BIT")
39
39
  end
40
40
 
41
41
  # Public: Get byte size
@@ -62,7 +62,9 @@ module Linguist
62
62
  node_modules? ||
63
63
  go_vendor? ||
64
64
  go_lock? ||
65
+ esy_lock? ||
65
66
  npm_shrinkwrap_or_package_lock? ||
67
+ generated_yarn_plugnplay? ||
66
68
  godeps? ||
67
69
  generated_by_zephir? ||
68
70
  minified_files? ||
@@ -91,7 +93,11 @@ module Linguist
91
93
  generated_grpc_cpp? ||
92
94
  generated_dart? ||
93
95
  generated_perl_ppport_header? ||
94
- generated_gamemakerstudio?
96
+ generated_gamemakerstudio? ||
97
+ generated_gimp? ||
98
+ generated_visualstudio6? ||
99
+ generated_haxe? ||
100
+ generated_jooq?
95
101
  end
96
102
 
97
103
  # Internal: Is the blob an Xcode file?
@@ -118,7 +124,14 @@ module Linguist
118
124
  !!name.match(/(^|\/)Carthage\/Build\//)
119
125
  end
120
126
 
121
- # Internal: Is the blob minified files?
127
+ # Internal: Does extname indicate a filetype which is commonly minified?
128
+ #
129
+ # Returns true or false.
130
+ def maybe_minified?
131
+ ['.js', '.css'].include? extname.downcase
132
+ end
133
+
134
+ # Internal: Is the blob a minified file?
122
135
  #
123
136
  # Consider a file minified if the average line length is
124
137
  # greater then 110c.
@@ -127,32 +140,29 @@ module Linguist
127
140
  #
128
141
  # Returns true or false.
129
142
  def minified_files?
130
- return unless ['.js', '.css'].include? extname
131
- if lines.any?
143
+ if maybe_minified? and lines.any?
132
144
  (lines.inject(0) { |n, l| n += l.length } / lines.length) > 110
133
145
  else
134
146
  false
135
147
  end
136
148
  end
137
149
 
138
- # Internal: Does the blob contain a source map reference?
150
+ # Internal: Does the blob contain a source-map reference?
139
151
  #
140
- # We assume that if one of the last 2 lines starts with a source map
152
+ # We assume that if one of the last 2 lines starts with a source-map
141
153
  # reference, then the current file was generated from other files.
142
154
  #
143
155
  # We use the last 2 lines because the last line might be empty.
144
156
  #
145
- # We only handle JavaScript, no CSS support yet.
146
- #
147
157
  # Returns true or false.
148
158
  def has_source_map?
149
- return false unless extname.downcase == '.js'
150
- lines.last(2).any? { |line| line.start_with?('//# sourceMappingURL') }
159
+ return false unless maybe_minified?
160
+ lines.last(2).any? { |l| l.match(/^\/[*\/][\#@] source(?:Mapping)?URL|sourceURL=/) }
151
161
  end
152
162
 
153
- # Internal: Is the blob a generated source map?
163
+ # Internal: Is the blob a generated source-map?
154
164
  #
155
- # Source Maps usually have .css.map or .js.map extensions. In case they
165
+ # Source-maps usually have .css.map or .js.map extensions. In case they
156
166
  # are not following the name convention, detect them based on the content.
157
167
  #
158
168
  # Returns true or false.
@@ -293,10 +303,10 @@ module Linguist
293
303
  return false unless extname == '.go'
294
304
  return false unless lines.count > 1
295
305
 
296
- return lines[0].include?("Code generated by")
306
+ return lines.first(40).any? { |l| l.include? "Code generated by" }
297
307
  end
298
308
 
299
- PROTOBUF_EXTENSIONS = ['.py', '.java', '.h', '.cc', '.cpp', '.m', '.rb']
309
+ PROTOBUF_EXTENSIONS = ['.py', '.java', '.h', '.cc', '.cpp', '.m', '.rb', '.php']
300
310
 
301
311
  # Internal: Is the blob a C++, Java or Python source file generated by the
302
312
  # Protocol Buffer compiler?
@@ -306,7 +316,7 @@ module Linguist
306
316
  return false unless PROTOBUF_EXTENSIONS.include?(extname)
307
317
  return false unless lines.count > 1
308
318
 
309
- return lines[0].include?("Generated by the protocol buffer compiler. DO NOT EDIT!")
319
+ return lines.first(3).any? { |l| l.include?("Generated by the protocol buffer compiler. DO NOT EDIT!") }
310
320
  end
311
321
 
312
322
  # Internal: Is the blob a Javascript source file generated by the
@@ -363,11 +373,25 @@ module Linguist
363
373
  !!name.match(/(Gopkg|glide)\.lock/)
364
374
  end
365
375
 
376
+ # Internal: Is the blob a generated esy lock file?
377
+ #
378
+ # Returns true or false.
379
+ def esy_lock?
380
+ !!name.match(/(^|\/)(\w+\.)?esy.lock$/)
381
+ end
382
+
366
383
  # Internal: Is the blob a generated npm shrinkwrap or package lock file?
367
384
  #
368
385
  # Returns true or false.
369
386
  def npm_shrinkwrap_or_package_lock?
370
- name.match(/npm-shrinkwrap\.json/) || name.match(/package-lock\.json/)
387
+ !!name.match(/npm-shrinkwrap\.json/) || !!name.match(/package-lock\.json/)
388
+ end
389
+
390
+ # Internal: Is the blob a generated Yarn Plug'n'Play?
391
+ #
392
+ # Returns true or false.
393
+ def generated_yarn_plugnplay?
394
+ !!name.match(/(^|\/)\.pnp\.(c|m)?js$/)
371
395
  end
372
396
 
373
397
  # Internal: Is the blob part of Godeps/,
@@ -426,7 +450,7 @@ module Linguist
426
450
  #
427
451
  # Returns true or false.
428
452
  def pipenv_lock?
429
- name.match(/Pipfile\.lock/)
453
+ !!name.match(/Pipfile\.lock/)
430
454
  end
431
455
 
432
456
  # Internal: Is it a KiCAD or GFortran module file?
@@ -591,6 +615,38 @@ module Linguist
591
615
  lines[0] =~ /^\d\.\d\.\d.+\|\{/
592
616
  end
593
617
 
618
+ # Internal: Is this a generated GIMP C image file?
619
+ #
620
+ # GIMP saves C sources with one of two comment forms:
621
+ # * `/* GIMP RGB C-Source image dump (<filename>.c) */` (C source export)
622
+ # * `/* GIMP header image file format (RGB): <filename>.h */` (Header export)
623
+ #
624
+ # Return true or false
625
+ def generated_gimp?
626
+ return false unless ['.c', '.h'].include? extname
627
+ return false unless lines.count > 0
628
+ return lines[0].match(/\/\* GIMP [a-zA-Z0-9\- ]+ C\-Source image dump \(.+?\.c\) \*\//) ||
629
+ lines[0].match(/\/\* GIMP header image file format \([a-zA-Z0-9\- ]+\)\: .+?\.h \*\//)
630
+ end
631
+
632
+ # Internal: Is this a generated Microsoft Visual Studio 6.0 build file?
633
+ #
634
+ # Return true or false
635
+ def generated_visualstudio6?
636
+ return false unless extname.downcase == '.dsp'
637
+ lines.first(3).any? { |l| l.include? '# Microsoft Developer Studio Generated Build File' }
638
+ end
639
+
640
+ HAXE_EXTENSIONS = ['.js', '.py', '.lua', '.cpp', '.h', '.java', '.cs', '.php']
641
+
642
+ # Internal: Is this a generated Haxe-generated source file?
643
+ #
644
+ # Return true or false
645
+ def generated_haxe?
646
+ return false unless HAXE_EXTENSIONS.include?(extname)
647
+ return lines.first(3).any? { |l| l.include?("Generated by Haxe") }
648
+ end
649
+
594
650
  # Internal: Is this a generated HTML file?
595
651
  #
596
652
  # HTML documents generated by authoring tools often include a
@@ -621,23 +677,35 @@ module Linguist
621
677
  return false if matches.empty?
622
678
  return matches.map {|x| extract_html_meta(x) }.any? do |attr|
623
679
  attr["name"].to_s.downcase == 'generator' &&
624
- attr["content"].match(/^
625
- ( org \s+ mode
626
- | j?latex2html
627
- | groff
628
- | makeinfo
629
- | texi2html
630
- ) \b
631
- /ix)
680
+ [attr["content"], attr["value"]].any? do |cv|
681
+ !cv.nil? &&
682
+ cv.match(/^
683
+ ( org \s+ mode
684
+ | j?latex2html
685
+ | groff
686
+ | makeinfo
687
+ | texi2html
688
+ | ronn
689
+ ) \b
690
+ /ix)
691
+ end
632
692
  end
633
693
  end
634
694
 
695
+ # Internal: Is this a generated jOOQ file?
696
+ #
697
+ # Return true or false
698
+ def generated_jooq?
699
+ return false unless extname.downcase == '.java'
700
+ lines.first(2).any? { |l| l.include? 'This file is generated by jOOQ.' }
701
+ end
702
+
635
703
  # Internal: Extract a Hash of name/content pairs from an HTML <meta> tag
636
704
  def extract_html_meta(match)
637
705
  (match.last.sub(/\/\Z/, "").strip.scan(/
638
- (?<=^|\s) # Check for preceding whitespace
639
- (name|content) # Attribute names we're interested in
640
- \s* = \s* # Key-value separator
706
+ (?<=^|\s) # Check for preceding whitespace
707
+ (name|content|value) # Attribute names we're interested in
708
+ \s* = \s* # Key-value separator
641
709
 
642
710
  # Attribute value
643
711
  ( "[^"]+" # name="value"
@@ -58,6 +58,10 @@ disambiguations:
58
58
  pattern: '^[=-]+(\s|\n)|{{[A-Za-z]'
59
59
  - language: AGS Script
60
60
  pattern: '^(\/\/.+|((import|export)\s+)?(function|int|float|char)\s+((room|repeatedly|on|game)_)?([A-Za-z]+[A-Za-z_0-9]+)\s*[;\(])'
61
+ - extensions: ['.asm']
62
+ rules:
63
+ - language: Motorola 68K Assembly
64
+ named_pattern: m68k
61
65
  - extensions: ['.asy']
62
66
  rules:
63
67
  - language: LTspice Symbol
@@ -113,6 +117,12 @@ disambiguations:
113
117
  # : dependency
114
118
  # path/file.ext1 : some/path/../file.ext2
115
119
  pattern: '([\/\\].*:\s+.*\s\\$|: \\$|^[ %]:|^[\w\s\/\\.]+\w+\.\w+\s*:\s+[\w\s\/\\.]+\w+\.\w+)'
120
+ - extensions: ['.dsp']
121
+ rules:
122
+ - language: Microsoft Developer Studio Project
123
+ pattern: '# Microsoft Developer Studio Generated Build File'
124
+ - language: Faust
125
+ pattern: '\bprocess\s*[(=]|\b(library|import)\s*\(\s*"|\bdeclare\s+(name|version|author|copyright|license)\s+"'
116
126
  - extensions: ['.ecl']
117
127
  rules:
118
128
  - language: ECLiPSe
@@ -173,6 +183,8 @@ disambiguations:
173
183
  - language: Game Maker Language
174
184
  - extensions: ['.gs']
175
185
  rules:
186
+ - language: GLSL
187
+ pattern: '^#version\s+[0-9]+\b'
176
188
  - language: Gosu
177
189
  pattern: '^uses java\.'
178
190
  - extensions: ['.h']
@@ -185,6 +197,12 @@ disambiguations:
185
197
  rules:
186
198
  - language: Hack
187
199
  pattern: '<\?hh'
200
+ - extensions: ['.i']
201
+ rules:
202
+ - language: Motorola 68K Assembly
203
+ named_pattern: m68k
204
+ - language: SWIG
205
+ pattern: '^[ \t]*%[a-z_]+\b|^%[{}]$'
188
206
  - extensions: ['.ice']
189
207
  rules:
190
208
  - language: JSON
@@ -192,10 +210,19 @@ disambiguations:
192
210
  - language: Slice
193
211
  - extensions: ['.inc']
194
212
  rules:
213
+ - language: Motorola 68K Assembly
214
+ named_pattern: m68k
195
215
  - language: PHP
196
216
  pattern: '^<\?(?:php)?'
197
217
  - language: SourcePawn
198
218
  pattern: '^public\s+(?:SharedPlugin(?:\s+|:)__pl_\w+\s*=(?:\s*{)?|(?:void\s+)?__pl_\w+_SetNTVOptional\(\)(?:\s*{)?)'
219
+ - language: NASL
220
+ pattern:
221
+ - '^\s*include\s*\(\s*(?:"|'')[\\/\w\-\.:\s]+\.(?:nasl|inc)\s*(?:"|'')\s*\)\s*;'
222
+ - '^\s*(?:global|local)_var\s+(?:\w+(?:\s*=\s*[\w\-"'']+)?\s*)(?:,\s*\w+(?:\s*=\s*[\w\-"'']+)?\s*)*+\s*;'
223
+ - '^\s*namespace\s+\w+\s*{'
224
+ - '^\s*object\s+\w+\s*(?:extends\s+\w+(?:::\w+)?)?\s*{'
225
+ - '^\s*(?:public\s+|private\s+|\s*)function\s+\w+\s*\([\w\s,]*\)\s*{'
199
226
  - language: POV-Ray SDL
200
227
  pattern: '^\s*#(declare|local|macro|while)\s'
201
228
  - extensions: ['.l']
@@ -237,6 +264,10 @@ disambiguations:
237
264
  pattern: '^\s*%'
238
265
  - language: Limbo
239
266
  pattern: '^\w+\s*:\s*module\s*{'
267
+ - extensions: ['.mask']
268
+ rules:
269
+ - language: Unity3d Asset
270
+ pattern: 'tag:unity3d.com'
240
271
  - extensions: ['.md']
241
272
  rules:
242
273
  - language: Markdown
@@ -285,6 +316,19 @@ disambiguations:
285
316
  - language: NL
286
317
  pattern: '^(b|g)[0-9]+ '
287
318
  - language: NewLisp
319
+ - extensions: ['.odin']
320
+ rules:
321
+ - language: Object Data Instance Notation
322
+ pattern: '(?:^|<)\s*[A-Za-z0-9_]+\s*=\s*<'
323
+ - language: Odin
324
+ pattern: 'package\s+\w+|\b(?:im|ex)port\s*"[\w:./]+"|\w+\s*::\s*(?:proc|struct)\s*\(|^\s*//\s'
325
+ - extensions: ['.p']
326
+ rules:
327
+ - language: Gnuplot
328
+ pattern:
329
+ - '^s?plot\b'
330
+ - '^set\s+(term|terminal|out|output|[xy]tics|[xy]label|[xy]range|style)\b'
331
+ - language: OpenEdge ABL
288
332
  - extensions: ['.php']
289
333
  rules:
290
334
  - language: Hack
@@ -297,7 +341,7 @@ disambiguations:
297
341
  pattern: '^[^#]*:-'
298
342
  - language: Perl
299
343
  named_pattern: perl5
300
- - language: Perl 6
344
+ - language: Raku
301
345
  named_pattern: perl6
302
346
  - extensions: ['.plist']
303
347
  rules:
@@ -308,7 +352,7 @@ disambiguations:
308
352
  rules:
309
353
  - language: Perl
310
354
  named_pattern: perl5
311
- - language: Perl 6
355
+ - language: Raku
312
356
  named_pattern: perl6
313
357
  - language: X PixMap
314
358
  pattern: '^\s*\/\* XPM \*\/'
@@ -325,6 +369,8 @@ disambiguations:
325
369
  pattern: '^\s+\w+\s+=>\s'
326
370
  - extensions: ['.pro']
327
371
  rules:
372
+ - language: Proguard
373
+ pattern: '^-(include\b.*\.pro$|keep\b|keepclassmembers\b|keepattributes\b)'
328
374
  - language: Prolog
329
375
  pattern: '^[^\[#]+:-'
330
376
  - language: INI
@@ -384,6 +430,10 @@ disambiguations:
384
430
  pattern: '^(use |fn |mod |pub |macro_rules|impl|#!?\[)'
385
431
  - language: RenderScript
386
432
  pattern: '#include|#pragma\s+(rs|version)|__attribute__'
433
+ - extensions: ['.s']
434
+ rules:
435
+ - language: Motorola 68K Assembly
436
+ named_pattern: m68k
387
437
  - extensions: ['.sc']
388
438
  rules:
389
439
  - language: SuperCollider
@@ -417,7 +467,7 @@ disambiguations:
417
467
  rules:
418
468
  - language: Perl
419
469
  named_pattern: perl5
420
- - language: Perl 6
470
+ - language: Raku
421
471
  named_pattern: perl6
422
472
  - language: Turing
423
473
  pattern: '^\s*%[ \t]+|^\s*var\s+\w+(\s*:\s*\w+)?\s*:=\s*\w+'
@@ -456,7 +506,7 @@ disambiguations:
456
506
  rules:
457
507
  - language: Vim script
458
508
  pattern: '^UseVimball'
459
- - language: Visual Basic
509
+ - language: VBA
460
510
  - extensions: ['.w']
461
511
  rules:
462
512
  - language: OpenEdge ABL
@@ -465,6 +515,8 @@ disambiguations:
465
515
  pattern: '^@(<|\w+\.)'
466
516
  - extensions: ['.x']
467
517
  rules:
518
+ - language: DirectX 3D File
519
+ pattern: '^xof 030(2|3)(?:txt|bin|tzip|bzip)\b'
468
520
  - language: RPC
469
521
  pattern: '\b(program|version)\s+\w+\s*{|\bunion\s+\w+\s+switch\s*\('
470
522
  - language: Logos
@@ -487,6 +539,14 @@ named_patterns:
487
539
  - 'std::\w+'
488
540
  fortran: '^(?i:[c*][^abd-z]| (subroutine|program|end|data)\s|\s*!)'
489
541
  key_equals_value: '^[^#!;][^=]*='
542
+ m68k:
543
+ - '(?im)\bmoveq(?:\.l)?\s+#(?:\$-?[0-9a-f]{1,3}|%[0-1]{1,8}|-?[0-9]{1,3}),\s*d[0-7]\b'
544
+ - '(?im)^\s*move(?:\.[bwl])?\s+(?:sr|usp),\s*[^\s]+'
545
+ - '(?im)^\s*move\.[bwl]\s+.*\b[ad]\d'
546
+ - '(?im)^\s*movem\.[bwl]\b'
547
+ - '(?im)^\s*move[mp](?:\.[wl])?\b'
548
+ - '(?im)^\s*btst\b'
549
+ - '(?im)^\s*dbra\b'
490
550
  objectivec: '^\s*(@(interface|class|protocol|property|end|synchronised|selector|implementation)\b|#import\s+.+\.h[">])'
491
551
  perl5: '\buse\s+(?:strict\b|v?5\.)'
492
552
  perl6: '^\s*(?:use\s+v6\b|\bmodule\b|\b(?:my\s+)?class\b)'