diff --git a/lib/linguist/strategy/modeline.rb b/lib/linguist/strategy/modeline.rb index 44155fc3..f995d940 100644 --- a/lib/linguist/strategy/modeline.rb +++ b/lib/linguist/strategy/modeline.rb @@ -2,7 +2,7 @@ module Linguist module Strategy class Modeline EmacsModeline = /-\*-\s*(?:(?!mode)[\w-]+\s*:\s*(?:[\w+-]+)\s*;?\s*)*(?:mode\s*:)?\s*([\w+-]+)\s*(?:;\s*(?!mode)[\w-]+\s*:\s*[\w+-]+\s*)*;?\s*-\*-/i - VimModeline = /vim:\s*set\s*(?:ft|filetype)=(\w+):/i + VimModeline = /vim:\s*set.*\s(?:ft|filetype)=(\w+)\s?.*:/i # Public: Detects language based on Vim and Emacs modelines # diff --git a/test/fixtures/Data/Modelines/ruby2 b/test/fixtures/Data/Modelines/ruby2 new file mode 100644 index 00000000..75177db1 --- /dev/null +++ b/test/fixtures/Data/Modelines/ruby2 @@ -0,0 +1,3 @@ +/* vim: set ts=8 sw=4 filetype=ruby tw=0: */ + +# Please help how do I into setting vim modlines diff --git a/test/fixtures/Data/Modelines/ruby3 b/test/fixtures/Data/Modelines/ruby3 new file mode 100644 index 00000000..003f71fe --- /dev/null +++ b/test/fixtures/Data/Modelines/ruby3 @@ -0,0 +1,3 @@ +/* vim: set ft=ruby ts=8 sw=4 tw=0: */ + +# I am not good at humor diff --git a/test/test_modelines.rb b/test/test_modelines.rb index a2be5d3b..fd259782 100644 --- a/test/test_modelines.rb +++ b/test/test_modelines.rb @@ -9,6 +9,8 @@ class TestModelines < Minitest::Test def test_modeline_strategy assert_modeline Language["Ruby"], fixture_blob("Data/Modelines/ruby") + assert_modeline Language["Ruby"], fixture_blob("Data/Modelines/ruby2") + assert_modeline Language["Ruby"], fixture_blob("Data/Modelines/ruby3") assert_modeline Language["C++"], fixture_blob("Data/Modelines/seeplusplus") assert_modeline Language["C++"], fixture_blob("Data/Modelines/seeplusplusEmacs1") assert_modeline Language["C++"], fixture_blob("Data/Modelines/seeplusplusEmacs2") @@ -27,6 +29,8 @@ class TestModelines < Minitest::Test def test_modeline_languages assert_equal Language["Ruby"], fixture_blob("Data/Modelines/ruby").language + assert_equal Language["Ruby"], fixture_blob("Data/Modelines/ruby2").language + assert_equal Language["Ruby"], fixture_blob("Data/Modelines/ruby3").language assert_equal Language["C++"], fixture_blob("Data/Modelines/seeplusplus").language assert_equal Language["C++"], fixture_blob("Data/Modelines/seeplusplusEmacs1").language assert_equal Language["C++"], fixture_blob("Data/Modelines/seeplusplusEmacs2").language