diff --git a/lib/linguist/blob_helper.rb b/lib/linguist/blob_helper.rb index 8050d37b..ba19144e 100644 --- a/lib/linguist/blob_helper.rb +++ b/lib/linguist/blob_helper.rb @@ -457,6 +457,9 @@ module Linguist # * Leading function keyword # * "%" comments # + # M heuristics: + # * ";" comments + # # Returns a Language. def guess_m_language # Objective-C keywords @@ -471,6 +474,10 @@ module Linguist elsif lines.grep(/^%/).any? Language['Matlab'] + # M comment + elsif lines.grep(/^[ \t]*;/).any? + Language['M'] + # Fallback to Objective-C, don't want any Matlab false positives else Language['Objective-C'] diff --git a/lib/linguist/languages.yml b/lib/linguist/languages.yml index c74f6a94..28285e00 100644 --- a/lib/linguist/languages.yml +++ b/lib/linguist/languages.yml @@ -627,6 +627,14 @@ Lua: - .lua - .nse +M: + type: programming + lexer: Text only + aliases: + - mumps + extensions: + - .m + Makefile: extensions: - .mak diff --git a/test/fixtures/m_simple.m b/test/fixtures/m_simple.m new file mode 100644 index 00000000..73592acc --- /dev/null +++ b/test/fixtures/m_simple.m @@ -0,0 +1,4 @@ +fox + ; The quick brown fox jumps over the lazy dog + write "The quick brown fox jumps over the lazy dog",! + quit diff --git a/test/test_blob.rb b/test/test_blob.rb index f62ad060..9d0a49bc 100644 --- a/test/test_blob.rb +++ b/test/test_blob.rb @@ -307,6 +307,7 @@ class TestBlob < Test::Unit::TestCase assert_equal Language['Objective-C'], blob("hello.m").language assert_equal Language['Matlab'], blob("matlab_function.m").language assert_equal Language['Matlab'], blob("matlab_script.m").language + assert_equal Language['M'], blob("m_simple.m").language # .r disambiguation assert_equal Language['R'], blob("hello-r.R").language