diff --git a/lib/linguist/languages.yml b/lib/linguist/languages.yml index b8230b6b..26a01d16 100644 --- a/lib/linguist/languages.yml +++ b/lib/linguist/languages.yml @@ -45,6 +45,7 @@ APL: extensions: - .apl - .dyalog + tm_scope: NONE ASP: type: programming @@ -146,6 +147,7 @@ Arc: color: "#ca2afe" extensions: - .arc + tm_scope: NONE Arduino: type: programming @@ -162,12 +164,14 @@ AsciiDoc: - .asciidoc - .adoc - .asc + tm_scope: NONE AspectJ: type: programming color: "#1957b0" extensions: - .aj + tm_scope: NONE Assembly: type: programming @@ -185,6 +189,7 @@ Augeas: type: programming extensions: - .aug + tm_scope: NONE AutoHotkey: type: programming @@ -194,6 +199,7 @@ AutoHotkey: extensions: - .ahk - .ahkl + tm_scope: NONE AutoIt: type: programming @@ -286,6 +292,7 @@ Brightscript: type: programming extensions: - .brs + tm_scope: NONE Bro: type: programming @@ -359,6 +366,7 @@ CLIPS: type: programming extensions: - .clp + tm_scope: NONE CMake: extensions: @@ -421,6 +429,7 @@ Clean: extensions: - .icl - .dcl + tm_scope: NONE Clojure: type: programming @@ -537,6 +546,7 @@ Creole: wrap: true extensions: - .creole + tm_scope: NONE Crystal: type: programming @@ -604,6 +614,7 @@ Darcs Patch: extensions: - .darcspatch - .dpatch + tm_scope: NONE Dart: type: programming @@ -631,6 +642,7 @@ Dogescript: color: "#cca760" extensions: - .djs + tm_scope: NONE Dylan: type: programming @@ -646,6 +658,7 @@ E: color: "#ccce35" extensions: - .E + tm_scope: NONE ECL: type: programming @@ -653,6 +666,7 @@ ECL: extensions: - .ecl - .eclxml + tm_scope: NONE Eagle: type: markup @@ -736,6 +750,7 @@ FLUX: extensions: - .fx - .flux + tm_scope: NONE FORTRAN: type: programming @@ -809,11 +824,13 @@ G-code: - .g - .gco - .gcode + tm_scope: NONE GAMS: type: programming extensions: - .gms + tm_scope: NONE GAP: type: programming @@ -822,6 +839,7 @@ GAP: - .gap - .gd - .gi + tm_scope: NONE GAS: type: programming @@ -835,6 +853,7 @@ GDScript: type: programming extensions: - .gd + tm_scope: NONE GLSL: group: C @@ -919,6 +938,7 @@ Golo: color: "#f6a51f" extensions: - .golo + tm_scope: NONE Gosu: type: programming @@ -934,6 +954,7 @@ Grace: type: programming extensions: - .grace + tm_scope: NONE Grammatical Framework: type: programming @@ -950,6 +971,7 @@ Graph Modeling Language: type: data extensions: - .gml + tm_scope: NONE Graphviz (DOT): type: data @@ -1039,6 +1061,7 @@ HTTP: type: data extensions: - .http + tm_scope: NONE Hack: type: programming @@ -1046,6 +1069,7 @@ Hack: extensions: - .hh - .php + tm_scope: NONE Haml: group: HTML @@ -1068,6 +1092,7 @@ Harbour: color: "#0e60e3" extensions: - .hb + tm_scope: NONE Haskell: type: programming @@ -1093,6 +1118,7 @@ Hy: - .hy aliases: - hylang + tm_scope: NONE IDL: type: programming @@ -1108,6 +1134,7 @@ IGOR Pro: aliases: - igor - igorpro + tm_scope: NONE INI: type: data @@ -1128,6 +1155,7 @@ IRC log: extensions: - .irclog - .weechatlog + tm_scope: NONE Idris: type: programming @@ -1149,6 +1177,7 @@ Inform 7: Inno Setup: extensions: - .iss + tm_scope: NONE Io: type: programming @@ -1167,11 +1196,13 @@ Isabelle: color: "#fdcd00" extensions: - .thy + tm_scope: NONE J: type: programming extensions: - .ijs + tm_scope: NONE JSON: type: data @@ -1279,6 +1310,7 @@ KRL: color: "#f5c800" extensions: - .krl + tm_scope: NONE Kit: type: markup @@ -1312,6 +1344,7 @@ LOLCODE: extensions: - .lol color: "#cc9900" + tm_scope: NONE LSL: type: programming @@ -1326,6 +1359,7 @@ LabVIEW: type: programming extensions: - .lvproj + tm_scope: NONE Lasso: type: programming @@ -1364,12 +1398,14 @@ Liquid: type: markup extensions: - .liquid + tm_scope: NONE Literate Agda: type: programming group: Agda extensions: - .lagda + tm_scope: NONE Literate CoffeeScript: type: programming @@ -1546,6 +1582,7 @@ MediaWiki: wrap: true extensions: - .mediawiki + tm_scope: NONE Mercury: type: programming @@ -1560,6 +1597,7 @@ MiniD: # Legacy searchable: false extensions: - .minid # Dummy extension + tm_scope: NONE Mirah: type: programming @@ -1581,6 +1619,7 @@ Moocode: type: programming extensions: - .moo + tm_scope: NONE MoonScript: type: programming @@ -1592,6 +1631,7 @@ MoonScript: Myghty: extensions: - .myt + tm_scope: NONE NSIS: extensions: @@ -1637,6 +1677,7 @@ Nit: color: "#0d8921" extensions: - .nit + tm_scope: NONE Nix: type: programming @@ -1644,6 +1685,7 @@ Nix: - .nix aliases: - nixos + tm_scope: NONE Nu: type: programming @@ -1662,6 +1704,7 @@ NumPy: - .numpy - .numpyw - .numsc + tm_scope: NONE OCaml: type: programming @@ -1722,6 +1765,7 @@ Omgrofl: extensions: - .omgrofl color: "#cabbff" + tm_scope: NONE Opa: type: programming @@ -1733,6 +1777,7 @@ Opal: color: "#f7ede0" extensions: - .opal + tm_scope: NONE OpenCL: type: programming @@ -1757,12 +1802,14 @@ OpenSCAD: type: programming extensions: - .scad + tm_scope: NONE Org: type: prose wrap: true extensions: - .org + tm_scope: NONE Ox: type: programming @@ -1770,12 +1817,14 @@ Ox: - .ox - .oxh - .oxo + tm_scope: NONE Oxygene: type: programming color: "#5a63a3" extensions: - .oxygene + tm_scope: NONE PAWN: type: programming @@ -1811,18 +1860,21 @@ Pan: color: '#cc0000' extensions: - .pan + tm_scope: NONE Papyrus: type: programming color: "#6600cc" extensions: - .psc + tm_scope: NONE Parrot: type: programming color: "#f3ca0a" extensions: - .parrot # Dummy extension + tm_scope: NONE Parrot Assembly: group: Parrot @@ -1831,6 +1883,7 @@ Parrot Assembly: - pasm extensions: - .pasm + tm_scope: NONE Parrot Internal Representation: group: Parrot @@ -1882,12 +1935,14 @@ Perl6: - .p6m - .pl6 - .pm6 + tm_scope: NONE PigLatin: type: programming color: "#fcd7de" extensions: - .pig + tm_scope: NONE Pike: type: programming @@ -1902,12 +1957,14 @@ Pod: wrap: true extensions: - .pod + tm_scope: NONE PogoScript: type: programming color: "#d80074" extensions: - .pogo + tm_scope: NONE PostScript: type: markup @@ -1948,6 +2005,7 @@ Propeller Spin: color: "#2b446d" extensions: - .spin + tm_scope: NONE Protocol Buffer: type: markup @@ -1971,6 +2029,7 @@ Pure Data: color: "#91de79" extensions: - .pd + tm_scope: NONE PureScript: type: programming @@ -2077,6 +2136,7 @@ RMarkdown: extensions: - .rmd - .Rmd + tm_scope: NONE Racket: type: programming @@ -2096,6 +2156,7 @@ Ragel in Ruby Host: aliases: - ragel-rb - ragel-ruby + tm_scope: NONE Raw token data: search_term: raw @@ -2103,6 +2164,7 @@ Raw token data: - raw extensions: - .raw + tm_scope: NONE Rebol: type: programming @@ -2122,10 +2184,12 @@ Red: - .reds aliases: - red/system + tm_scope: NONE Redcode: extensions: - .cw + tm_scope: NONE RobotFramework: type: programming @@ -2199,6 +2263,7 @@ SAS: color: "#1E90FF" extensions: - .sas + tm_scope: NONE SCSS: type: markup @@ -2292,6 +2357,7 @@ Self: color: "#0579aa" extensions: - .self + tm_scope: NONE Shell: type: programming @@ -2330,6 +2396,7 @@ Shen: color: "#120F14" extensions: - .shen + tm_scope: NONE Slash: type: programming @@ -2400,6 +2467,7 @@ Stylus: group: CSS extensions: - .styl + tm_scope: NONE SuperCollider: type: programming @@ -2407,6 +2475,7 @@ SuperCollider: extensions: - .scd - .sc + tm_scope: NONE Swift: type: programming @@ -2432,6 +2501,7 @@ TXL: type: programming extensions: - .txl + tm_scope: NONE Tcl: type: programming @@ -2488,6 +2558,7 @@ Textile: wrap: true extensions: - .textile + tm_scope: NONE Thrift: type: programming @@ -2501,6 +2572,7 @@ Turing: extensions: - .t - .tu + tm_scope: NONE Twig: type: markup @@ -2761,6 +2833,7 @@ Zimpl: - .zimpl - .zmpl - .zpl + tm_scope: NONE eC: type: programming @@ -2768,6 +2841,7 @@ eC: extensions: - .ec - .eh + tm_scope: NONE edn: type: data @@ -2782,6 +2856,7 @@ fish: group: Shell extensions: - .fish + tm_scope: NONE mupad: extensions: @@ -2822,3 +2897,4 @@ xBase: color: "#3a4040" extensions: - .prg + tm_scope: NONE diff --git a/test/test_language.rb b/test/test_language.rb index a23715d2..8dd4f97b 100644 --- a/test/test_language.rb +++ b/test/test_language.rb @@ -1,5 +1,6 @@ require 'linguist/language' require 'test/unit' +require 'yaml' class TestLanguage < Test::Unit::TestCase include Linguist @@ -359,4 +360,15 @@ class TestLanguage < Test::Unit::TestCase def test_by_type assert !Language.by_type(:prose).nil? end + + def test_all_languages_have_grammars + scopes = YAML.load(File.read(File.expand_path("../../grammars.yml", __FILE__))).values.flatten + missing = Language.all.reject { |language| language.tm_scope == "NONE" || scopes.include?(language.tm_scope) } + message = "The following languages' scopes are not listed in grammars.yml. Please add grammars for all new languages.\n" + message << "If no grammar exists for a language, mark the language with `tm_scope: NONE` in lib/linguist/languages.yml.\n" + + width = missing.map { |language| language.name.length }.max + message << missing.map { |language| sprintf("%-#{width}s %s", language.name, language.tm_scope) }.sort.join("\n") + assert missing.empty?, message + end end