mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-10-29 17:50:22 +00:00
TLDR: This greatly increases the flexibility of vim modeline detection
to manually set the language of a file.
In vim there are two forms of modelines:
[text]{white}{vi:|vim:|ex:}[white]{options}
examples: 'vim: syntax=perl', 'ex: filetype=ruby'
-and-
[text]{white}{vi:|vim:|Vim:|ex:}[white]se[t] {options}:[text]
examples: 'vim set syntax=perl:', 'Vim: se ft=ruby:'
As you can see, there are many combinations. These changes should allow
most combinations to be used. The two most important additions are the
use of the keyword 'syntax', as well as the addition of the first form
(you now no longer need to use the keyword 'set' with a colon at the end).
The use of first form with 'syntax' is very, very common across GitHub:
https://github.com/search?l=ruby&q=vim%3A+syntax%3D&ref=searchresults&type=Code&utf8=%E2%9C%93
56 lines
3.6 KiB
Ruby
56 lines
3.6 KiB
Ruby
require_relative "./helper"
|
|
|
|
class TestModelines < Minitest::Test
|
|
include Linguist
|
|
|
|
def assert_modeline(language, blob)
|
|
assert_equal language, Linguist::Strategy::Modeline.call(blob).first
|
|
end
|
|
|
|
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["Ruby"], fixture_blob("Data/Modelines/ruby4")
|
|
assert_modeline Language["Ruby"], fixture_blob("Data/Modelines/ruby5")
|
|
assert_modeline Language["Ruby"], fixture_blob("Data/Modelines/ruby6")
|
|
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["C++"], fixture_blob("Data/Modelines/seeplusplus")
|
|
assert_modeline Language["C++"], fixture_blob("Data/Modelines/seeplusplusEmacs1")
|
|
assert_modeline Language["C++"], fixture_blob("Data/Modelines/seeplusplusEmacs2")
|
|
assert_modeline Language["C++"], fixture_blob("Data/Modelines/seeplusplusEmacs3")
|
|
assert_modeline Language["C++"], fixture_blob("Data/Modelines/seeplusplusEmacs4")
|
|
assert_modeline Language["C++"], fixture_blob("Data/Modelines/seeplusplusEmacs5")
|
|
assert_modeline Language["C++"], fixture_blob("Data/Modelines/seeplusplusEmacs6")
|
|
assert_modeline Language["C++"], fixture_blob("Data/Modelines/seeplusplusEmacs7")
|
|
assert_modeline Language["C++"], fixture_blob("Data/Modelines/seeplusplusEmacs8")
|
|
assert_modeline Language["C++"], fixture_blob("Data/Modelines/seeplusplusEmacs9")
|
|
assert_modeline Language["Text"], fixture_blob("Data/Modelines/fundamentalEmacs.c")
|
|
assert_modeline Language["Prolog"], fixture_blob("Data/Modelines/not_perl.pl")
|
|
assert_modeline Language["Smalltalk"], fixture_blob("Data/Modelines/example_smalltalk.md")
|
|
assert_modeline Language["PHP"], fixture_blob("Data/Modelines/iamphp.inc")
|
|
end
|
|
|
|
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
|
|
assert_equal Language["C++"], fixture_blob("Data/Modelines/seeplusplusEmacs3").language
|
|
assert_equal Language["C++"], fixture_blob("Data/Modelines/seeplusplusEmacs4").language
|
|
assert_equal Language["C++"], fixture_blob("Data/Modelines/seeplusplusEmacs5").language
|
|
assert_equal Language["C++"], fixture_blob("Data/Modelines/seeplusplusEmacs6").language
|
|
assert_equal Language["C++"], fixture_blob("Data/Modelines/seeplusplusEmacs7").language
|
|
assert_equal Language["C++"], fixture_blob("Data/Modelines/seeplusplusEmacs8").language
|
|
assert_equal Language["C++"], fixture_blob("Data/Modelines/seeplusplusEmacs9").language
|
|
assert_equal Language["Text"], fixture_blob("Data/Modelines/fundamentalEmacs.c").language
|
|
assert_equal Language["Prolog"], fixture_blob("Data/Modelines/not_perl.pl").language
|
|
assert_equal Language["Smalltalk"], fixture_blob("Data/Modelines/example_smalltalk.md").language
|
|
assert_equal Language["PHP"], fixture_blob("Data/Modelines/iamphp.inc").language
|
|
end
|
|
end
|