mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-10-29 17:50:22 +00:00
Merge pull request #2233 from tesch1/tesch1-emacs-patch-1
fix emacs modeline parsing
This commit is contained in:
@@ -3134,6 +3134,8 @@ Tea:
|
||||
Text:
|
||||
type: prose
|
||||
wrap: true
|
||||
aliases:
|
||||
- fundamental
|
||||
extensions:
|
||||
- .txt
|
||||
- .fr
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
module Linguist
|
||||
module Strategy
|
||||
class Modeline
|
||||
EmacsModeline = /-\*-\s*mode:\s*(\w+);?\s*-\*-/i
|
||||
EmacsModeline = /-\*-\s*(?:(?!mode)[\w-]+\s*:\s*(?:[\w+-]+)\s*;?\s*)*(?:mode\s*:)?\s*([\w+-]+)\s*(?:;\s*(?!mode)[\w-]+\s*:\s*[\w+-]+\s*)*;?\s*-\*-/i
|
||||
VimModeline = /\/\*\s*vim:\s*set\s*(?:ft|filetype)=(\w+):\s*\*\//i
|
||||
|
||||
# Public: Detects language based on Vim and Emacs modelines
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* -*- Mode: linguist-disable-strategy-modeline-IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
* You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* -*- Mode: linguist-disable-strategy-modeline-IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
* You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
6
test/fixtures/Data/Modelines/fundamentalEmacs.c
vendored
Normal file
6
test/fixtures/Data/Modelines/fundamentalEmacs.c
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
// -*- fundamental -*-
|
||||
|
||||
int main(int argc, char * argc[])
|
||||
{
|
||||
this should not be syntax highlighted, even though it looks like c.
|
||||
}
|
||||
2
test/fixtures/Data/Modelines/seeplusplusEmacs1
vendored
Normal file
2
test/fixtures/Data/Modelines/seeplusplusEmacs1
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
// -*-c++-*-
|
||||
template <typename X> class { X i; };
|
||||
2
test/fixtures/Data/Modelines/seeplusplusEmacs2
vendored
Normal file
2
test/fixtures/Data/Modelines/seeplusplusEmacs2
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
// -*- c++ -*-
|
||||
template <typename X> class { X i; };
|
||||
2
test/fixtures/Data/Modelines/seeplusplusEmacs3
vendored
Normal file
2
test/fixtures/Data/Modelines/seeplusplusEmacs3
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
// -*- mode:C++ -*-
|
||||
template <typename X> class { X i; };
|
||||
2
test/fixtures/Data/Modelines/seeplusplusEmacs4
vendored
Normal file
2
test/fixtures/Data/Modelines/seeplusplusEmacs4
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
// -*- font:bar;mode:c++ -*-
|
||||
template <typename X> class { X i; };
|
||||
2
test/fixtures/Data/Modelines/seeplusplusEmacs5
vendored
Normal file
2
test/fixtures/Data/Modelines/seeplusplusEmacs5
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
// -*-foo:bar;mode:c++;bar:foo-*-
|
||||
template <typename X> class { X i; };
|
||||
2
test/fixtures/Data/Modelines/seeplusplusEmacs6
vendored
Normal file
2
test/fixtures/Data/Modelines/seeplusplusEmacs6
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
// -*- foo : bar ; mode : c++ ; bar : foo -*-
|
||||
template <typename X> class { X i; };
|
||||
2
test/fixtures/Data/Modelines/seeplusplusEmacs7
vendored
Normal file
2
test/fixtures/Data/Modelines/seeplusplusEmacs7
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
// -*- mode : c++ ; bar : foo -*-
|
||||
template <typename X> class { X i; };
|
||||
2
test/fixtures/Data/Modelines/seeplusplusEmacs8
vendored
Normal file
2
test/fixtures/Data/Modelines/seeplusplusEmacs8
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
// -*- font:x;foo : bar ; mode : C++ ; bar : foo ; foooooo:baaaaar;fo:ba-*-
|
||||
template <typename X> class { X i; };
|
||||
2
test/fixtures/Data/Modelines/seeplusplusEmacs9
vendored
Normal file
2
test/fixtures/Data/Modelines/seeplusplusEmacs9
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
// -*-foo:bar;mode:c++;bar:foo;tyrell:corp-*-
|
||||
template <typename X> class { X i; };
|
||||
@@ -10,6 +10,16 @@ class TestModelines < Minitest::Test
|
||||
def test_modeline_strategy
|
||||
assert_modeline Language["Ruby"], fixture_blob("Data/Modelines/ruby")
|
||||
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")
|
||||
@@ -18,6 +28,16 @@ class TestModelines < Minitest::Test
|
||||
def test_modeline_languages
|
||||
assert_equal Language["Ruby"], fixture_blob("Data/Modelines/ruby").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
|
||||
|
||||
Reference in New Issue
Block a user