From e73a4ecd0ece2a6599625e28aace649f5fa0eba3 Mon Sep 17 00:00:00 2001 From: Alhadis Date: Mon, 12 Sep 2016 19:59:08 +1000 Subject: [PATCH] Allow " ex:" to match at beginning of file Although unlikely to be valid syntax in most programming languages, such a modeline is valid syntax in Vim, and will trigger any filetype modes. --- lib/linguist/strategy/modeline.rb | 2 +- test/fixtures/Data/Modelines/ruby10 | 3 +++ test/test_modelines.rb | 1 + 3 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 test/fixtures/Data/Modelines/ruby10 diff --git a/lib/linguist/strategy/modeline.rb b/lib/linguist/strategy/modeline.rb index d9ddf9c3..61ba723a 100644 --- a/lib/linguist/strategy/modeline.rb +++ b/lib/linguist/strategy/modeline.rb @@ -10,7 +10,7 @@ module Linguist vi (?:m[<=>]?\d+|m)? # Version-specific modeline | - (?!^)\s + [\t\x20] # `ex:` requires whitespace, because "ex:" might be short for "example:" ex ) diff --git a/test/fixtures/Data/Modelines/ruby10 b/test/fixtures/Data/Modelines/ruby10 new file mode 100644 index 00000000..67dd4864 --- /dev/null +++ b/test/fixtures/Data/Modelines/ruby10 @@ -0,0 +1,3 @@ + ex: noexpandtab: ft=ruby + +# Still Ruby diff --git a/test/test_modelines.rb b/test/test_modelines.rb index b2eba82a..1437ee6a 100644 --- a/test/test_modelines.rb +++ b/test/test_modelines.rb @@ -17,6 +17,7 @@ class TestModelines < Minitest::Test assert_modeline Language["Ruby"], fixture_blob("Data/Modelines/ruby7") assert_modeline Language["Ruby"], fixture_blob("Data/Modelines/ruby8") assert_modeline Language["Ruby"], fixture_blob("Data/Modelines/ruby9") + assert_modeline Language["Ruby"], fixture_blob("Data/Modelines/ruby10") 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")