diff --git a/lib/linguist/heuristics.rb b/lib/linguist/heuristics.rb index 3ed7904d..b887c201 100644 --- a/lib/linguist/heuristics.rb +++ b/lib/linguist/heuristics.rb @@ -107,10 +107,14 @@ module Linguist end end - disambiguate "IDL", "Prolog" do |data| + disambiguate "IDL", "Prolog", "INI", "QMake" do |data| if data.include?(":-") Language["Prolog"] - else + elsif data.include?("last_client=") + Language["INI"] + elsif data.include?("HEADERS") && data.include?("SOURCES") + Language["QMake"] + elsif /^\s*function[ \w,]+$/.match(data) Language["IDL"] end end diff --git a/lib/linguist/languages.yml b/lib/linguist/languages.yml index 71d101eb..9ee8262c 100644 --- a/lib/linguist/languages.yml +++ b/lib/linguist/languages.yml @@ -1335,6 +1335,7 @@ INI: - .ini - .cfg - .prefs + - .pro - .properties tm_scope: source.ini aliases: diff --git a/samples/INI/MouseKeyboard.pro b/samples/INI/MouseKeyboard.pro new file mode 100644 index 00000000..0bc4ff8f --- /dev/null +++ b/samples/INI/MouseKeyboard.pro @@ -0,0 +1,71 @@ +update=Sun 15 Feb 2015 01:10:10 PM EST +last_client=eeschema +[pcbnew] +version=1 +PageLayoutDescrFile= +LastNetListRead= +UseCmpFile=1 +PadDrill=0.6 +PadDrillOvalY=0.6 +PadSizeH=1.5 +PadSizeV=1.5 +PcbTextSizeV=1.5 +PcbTextSizeH=1.5 +PcbTextThickness=0.3 +ModuleTextSizeV=1 +ModuleTextSizeH=1 +ModuleTextSizeThickness=0.15 +SolderMaskClearance=0 +SolderMaskMinWidth=0 +DrawSegmentWidth=0.2 +BoardOutlineThickness=0.09999999999999999 +ModuleOutlineThickness=0.15 +[pcbnew/libraries] +LibDir= +[general] +version=1 +[eeschema] +version=1 +PageLayoutDescrFile= +SubpartIdSeparator=0 +SubpartFirstId=65 +LibDir=/home/hschmale/KiCad/LibMods-3rdParty +NetFmtName= +RptD_X=0 +RptD_Y=100 +RptLab=1 +LabSize=60 +[eeschema/libraries] +LibName1=power +LibName2=device +LibName3=transistors +LibName4=conn +LibName5=linear +LibName6=regul +LibName7=74xx +LibName8=cmos4000 +LibName9=adc-dac +LibName10=memory +LibName11=xilinx +LibName12=special +LibName13=microcontrollers +LibName14=dsp +LibName15=microchip +LibName16=analog_switches +LibName17=motorola +LibName18=texas +LibName19=intel +LibName20=audio +LibName21=interface +LibName22=digital-audio +LibName23=philips +LibName24=display +LibName25=cypress +LibName26=siliconi +LibName27=opto +LibName28=atmel +LibName29=contrib +LibName30=valves +LibName31=arduino_shieldsNCL +LibName32=con-usb-2 +LibName33=2axispotwselect diff --git a/test/test_heuristics.rb b/test/test_heuristics.rb index cadb35f6..dcdf3328 100644 --- a/test/test_heuristics.rb +++ b/test/test_heuristics.rb @@ -60,11 +60,13 @@ class TestHeuristcs < Minitest::Test }) end - # Candidate languages = ["IDL", "Prolog"] - def test_pro_prolog_idl_by_heuristics + # Candidate languages = ["IDL", "Prolog", "QMake", "INI"] + def test_pro_by_heuristics assert_heuristics({ - "Prolog" => "Prolog/logic-problem.pro", - "IDL" => "IDL/mg_acosh.pro" + "Prolog" => all_fixtures("Prolog", "*.pro"), + "IDL" => all_fixtures("IDL", "*.pro"), + "INI" => all_fixtures("INI", "*.pro"), + "QMake" => all_fixtures("QMake", "*.pro") }) end