diff --git a/lib/linguist/extensions.yml b/lib/linguist/extensions.yml index 54bbaf43..b77867b2 100644 --- a/lib/linguist/extensions.yml +++ b/lib/linguist/extensions.yml @@ -410,6 +410,7 @@ Self: - .self Shell: :lexer: bash + :default_lexer: true :ext: - .sh - .zsh diff --git a/lib/linguist/language.rb b/lib/linguist/language.rb index 20db7232..e3e02056 100644 --- a/lib/linguist/language.rb +++ b/lib/linguist/language.rb @@ -11,10 +11,12 @@ module Linguist @name_index[language.name.downcase] = language - if language.default_lexer? || !@lexer_index.key?(language.lexer) + if attributes[:default_lexer] || language.default_lexer? @lexer_index[language.lexer.downcase] = language end + @lexer_index[language.lexer.downcase] ||= language + language.extensions.each do |extension| @extension_index[extension] = language @extension_index[extension.sub(/^./, '')] = language @@ -87,6 +89,7 @@ module Linguist Language.create( :name => name, :lexer => options[:lexer], + :default_lexer => options[:default_lexer], :extensions => options[:ext], :popular => popular.include?(name) ) diff --git a/test/test_language.rb b/test/test_language.rb index 2fd1016e..86413cc4 100644 --- a/test/test_language.rb +++ b/test/test_language.rb @@ -19,12 +19,16 @@ class TestLanguage < Test::Unit::TestCase end def test_find_by_lexer + assert_equal Language['C'], Language.find_by_lexer('c') + assert_equal Language['C++'], Language.find_by_lexer('cpp') + assert_equal Language['Java'], Language.find_by_lexer('java') + assert_equal Language['JavaScript'], Language.find_by_lexer('javascript') + assert_equal Language['OCaml'], Language.find_by_lexer('ocaml') assert_equal Language['Perl'], Language.find_by_lexer('perl') assert_equal Language['Python'], Language.find_by_lexer('python') assert_equal Language['Ruby'], Language.find_by_lexer('ruby') - assert_equal Language['C++'], Language.find_by_lexer('cpp') - assert_equal Language['JavaScript'], Language.find_by_lexer('javascript') assert_equal Language['Scheme'], Language.find_by_lexer('scheme') + assert_equal Language['Shell'], Language.find_by_lexer('bash') assert_equal Language['Text'], Language.find_by_lexer('kt') end