From 11f158cbb31e911e41a405e01042a9ab594a93c7 Mon Sep 17 00:00:00 2001 From: Joshua Peek Date: Fri, 7 Aug 2015 11:12:30 -0700 Subject: [PATCH 1/9] Highlight Brewfile as Ruby --- lib/linguist/languages.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/linguist/languages.yml b/lib/linguist/languages.yml index e05e13a1..d4d4f477 100644 --- a/lib/linguist/languages.yml +++ b/lib/linguist/languages.yml @@ -2934,6 +2934,7 @@ Ruby: - .pryrc - Appraisals - Berksfile + - Brewfile - Buildfile - Deliverfile - Fastfile From 7a811e39e045faf08fc880f02bc3eee523385e26 Mon Sep 17 00:00:00 2001 From: Joshua Peek Date: Fri, 7 Aug 2015 14:01:08 -0700 Subject: [PATCH 2/9] Add sample Brewfile --- samples/Ruby/filenames/Brewfile | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 samples/Ruby/filenames/Brewfile diff --git a/samples/Ruby/filenames/Brewfile b/samples/Ruby/filenames/Brewfile new file mode 100644 index 00000000..d8448e68 --- /dev/null +++ b/samples/Ruby/filenames/Brewfile @@ -0,0 +1,9 @@ +tap 'caskroom/cask' +tap 'telemachus/brew', 'https://telemachus@bitbucket.org/telemachus/brew.git' +brew 'emacs', args: ['with-cocoa', 'with-gnutls'] +brew 'redis', restart_service: true +brew 'mongodb' +brew 'sphinx' +brew 'imagemagick' +brew 'mysql' +cask 'google-chrome' From 54a2a47bc06af4bc45270e7be6a76eeb8bf8130d Mon Sep 17 00:00:00 2001 From: Paul Chaignon Date: Sun, 9 Aug 2015 14:11:01 +0200 Subject: [PATCH 3/9] YAML-tmLanguage extension for YAML --- lib/linguist/languages.yml | 1 + samples/YAML/Ansible.YAML-tmLanguage | 38 ++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 samples/YAML/Ansible.YAML-tmLanguage diff --git a/lib/linguist/languages.yml b/lib/linguist/languages.yml index 952aa6b2..db92065d 100644 --- a/lib/linguist/languages.yml +++ b/lib/linguist/languages.yml @@ -3719,6 +3719,7 @@ YAML: - .reek - .rviz - .yaml + - .yaml-tmlanguage ace_mode: yaml Yacc: diff --git a/samples/YAML/Ansible.YAML-tmLanguage b/samples/YAML/Ansible.YAML-tmLanguage new file mode 100644 index 00000000..307696b3 --- /dev/null +++ b/samples/YAML/Ansible.YAML-tmLanguage @@ -0,0 +1,38 @@ +# [PackageDev] target_format: plist, ext: tmLanguage +--- +name: Ansible +scopeName: source.ansible +fileTypes: [] +uuid: 787ae642-b4ae-48b1-94e9-f935bec43a8f + +patterns: +- name: comment.line.number-sign.ansible + match: (?:^ *|\G *)((#).*) + captures: + '1': {name: comment.line.number-sign.ansible} + '2': {name: punctuation.definition.comment.line.ansible} + +- name: storage.type.ansible + match: (\{\{ *[^\{\}]+ *\}\})|(\$\{[^\{\}]+\}) + +- name: keyword.other.ansible + match: \- (name\:|include\:) (.*)|(^(- |\s*)\w+\:) + captures: + '2': {name: string.quoted.double.ansible} + +- name: variable.complex.ansible + contentName: string.other.ansible + begin: (\w+)(=)\"? + beginCaptures: + '1': {name: entity.other.attribute-name.ansible} + '2': {name: text} + end: \"?\s + patterns: + - include: $self + - name: constant.other.ansible + match: . + +- name: string.quoted.double.ansible + match: ^(\[[0-9a-zA-Z_-]+(((\:)children)*)\]) + captures: + '2': {name: variable.parameter.ansible} From 88b14ed455b98ef08eedd107b5d6a757d1c70523 Mon Sep 17 00:00:00 2001 From: Paul Chaignon Date: Sun, 9 Aug 2015 14:13:48 +0200 Subject: [PATCH 4/9] .syntax extension for YAML --- lib/linguist/languages.yml | 1 + samples/YAML/source.r-console.syntax | 16 ++++++++++++++++ 2 files changed, 17 insertions(+) create mode 100644 samples/YAML/source.r-console.syntax diff --git a/lib/linguist/languages.yml b/lib/linguist/languages.yml index db92065d..812b6f04 100644 --- a/lib/linguist/languages.yml +++ b/lib/linguist/languages.yml @@ -3718,6 +3718,7 @@ YAML: - .yml - .reek - .rviz + - .syntax - .yaml - .yaml-tmlanguage ace_mode: yaml diff --git a/samples/YAML/source.r-console.syntax b/samples/YAML/source.r-console.syntax new file mode 100644 index 00000000..5c3eec39 --- /dev/null +++ b/samples/YAML/source.r-console.syntax @@ -0,0 +1,16 @@ +--- +name: R Console +fileTypes: [] + +scopeName: source.r-console +uuid: F629C7F3-823B-4A4C-8EEE-9971490C5710 +patterns: +- name: source.r.embedded.r-console + begin: "^> " + beginCaptures: + "0": + name: punctuation.section.embedded.r-console + end: \n|\z + patterns: + - include: source.r +keyEquivalent: ^~R From 4650368bc224804de85a451e0a3b0db3c432f829 Mon Sep 17 00:00:00 2001 From: Ammar Askar Date: Mon, 10 Aug 2015 00:38:24 -0500 Subject: [PATCH 5/9] Make regex for vim modeline more lenient This change allows the filetype/language to be retrieved from more complex vim modelines. The current regex strictly allows a set line which contains only the filetype/ft parameter and nothing else --- lib/linguist/strategy/modeline.rb | 2 +- test/fixtures/Data/Modelines/ruby2 | 3 +++ test/fixtures/Data/Modelines/ruby3 | 3 +++ test/test_modelines.rb | 4 ++++ 4 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 test/fixtures/Data/Modelines/ruby2 create mode 100644 test/fixtures/Data/Modelines/ruby3 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 From 18ffdbaa65342c6d935a2a885539db29d0ef0bfb Mon Sep 17 00:00:00 2001 From: Arfon Smith Date: Mon, 10 Aug 2015 15:07:27 +0100 Subject: [PATCH 6/9] Grammar updates --- vendor/grammars/Elm.tmLanguage | 2 +- vendor/grammars/InnoSetup | 2 +- vendor/grammars/factor | 2 +- vendor/grammars/haxe-sublime-bundle | 2 +- vendor/grammars/language-javascript | 2 +- vendor/grammars/llvm.tmbundle | 2 +- vendor/grammars/php.tmbundle | 2 +- vendor/grammars/sublime-better-typescript | 2 +- vendor/grammars/vue-syntax-highlight | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/vendor/grammars/Elm.tmLanguage b/vendor/grammars/Elm.tmLanguage index 8137f5a4..e9fda7c7 160000 --- a/vendor/grammars/Elm.tmLanguage +++ b/vendor/grammars/Elm.tmLanguage @@ -1 +1 @@ -Subproject commit 8137f5a48c76c4303394d7da6f3a19bf61056cc6 +Subproject commit e9fda7c70f1bb8da8275b108420d8c492114b342 diff --git a/vendor/grammars/InnoSetup b/vendor/grammars/InnoSetup index e7ca1ee0..3906a8d2 160000 --- a/vendor/grammars/InnoSetup +++ b/vendor/grammars/InnoSetup @@ -1 +1 @@ -Subproject commit e7ca1ee0dd99a022dd0bd679f9bdad7cd610432e +Subproject commit 3906a8d2fbc2fd197373113536d8deb28d05ee4c diff --git a/vendor/grammars/factor b/vendor/grammars/factor index abb8bd74..49621511 160000 --- a/vendor/grammars/factor +++ b/vendor/grammars/factor @@ -1 +1 @@ -Subproject commit abb8bd74b97d7ed84ca0cd7bf03f8280f27682af +Subproject commit 496215111189a942cd5310635d71d00d1dc1d2c9 diff --git a/vendor/grammars/haxe-sublime-bundle b/vendor/grammars/haxe-sublime-bundle index c1ef469b..102acf66 160000 --- a/vendor/grammars/haxe-sublime-bundle +++ b/vendor/grammars/haxe-sublime-bundle @@ -1 +1 @@ -Subproject commit c1ef469bf3b1166180f64343f47d6cee73ddd4fa +Subproject commit 102acf66b921526401ce76f0a74c7f94edaca678 diff --git a/vendor/grammars/language-javascript b/vendor/grammars/language-javascript index 2766ff30..1aaf2ff8 160000 --- a/vendor/grammars/language-javascript +++ b/vendor/grammars/language-javascript @@ -1 +1 @@ -Subproject commit 2766ff3052615016e53298ee715e221cd740b5a3 +Subproject commit 1aaf2ff8eff25073dad9e81dde48ed05537f2a97 diff --git a/vendor/grammars/llvm.tmbundle b/vendor/grammars/llvm.tmbundle index 9e3705a6..203c955a 160000 --- a/vendor/grammars/llvm.tmbundle +++ b/vendor/grammars/llvm.tmbundle @@ -1 +1 @@ -Subproject commit 9e3705a6e2bd51ae01d3963dd08bc42fc05d647f +Subproject commit 203c955af9c8c48c2bb3808a9ebb547ce3cead1c diff --git a/vendor/grammars/php.tmbundle b/vendor/grammars/php.tmbundle index 1cba1ac4..baad8758 160000 --- a/vendor/grammars/php.tmbundle +++ b/vendor/grammars/php.tmbundle @@ -1 +1 @@ -Subproject commit 1cba1ac4a9ffa301b1d92b735c298fcb60cc3e3a +Subproject commit baad875878c402b7b404a63616531644e538bf0c diff --git a/vendor/grammars/sublime-better-typescript b/vendor/grammars/sublime-better-typescript index 8c0bd800..8266c06a 160000 --- a/vendor/grammars/sublime-better-typescript +++ b/vendor/grammars/sublime-better-typescript @@ -1 +1 @@ -Subproject commit 8c0bd800d91a1c032f81d17055150482262085b5 +Subproject commit 8266c06aabe5e473766bd9bb62dfeb106fe296a2 diff --git a/vendor/grammars/vue-syntax-highlight b/vendor/grammars/vue-syntax-highlight index b98484e7..7d35a53e 160000 --- a/vendor/grammars/vue-syntax-highlight +++ b/vendor/grammars/vue-syntax-highlight @@ -1 +1 @@ -Subproject commit b98484e787c8658c91832674dbd36c3c23277234 +Subproject commit 7d35a53e7e4380f01340ca5f508e9a8f8bc69ef0 From 851c93a1f7024dbede688829cafcf981f0a87213 Mon Sep 17 00:00:00 2001 From: Arfon Smith Date: Mon, 10 Aug 2015 22:07:28 +0100 Subject: [PATCH 7/9] Don't blow up if empty string/nil passed to alias methods --- lib/linguist/language.rb | 2 ++ test/test_language.rb | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/lib/linguist/language.rb b/lib/linguist/language.rb index 05c5f802..bc65a053 100644 --- a/lib/linguist/language.rb +++ b/lib/linguist/language.rb @@ -150,6 +150,7 @@ module Linguist # # Returns the Language or nil if none was found. def self.find_by_name(name) + return nil if name.to_s.empty? name && (@name_index[name.downcase] || @name_index[name.split(',').first.downcase]) end @@ -164,6 +165,7 @@ module Linguist # # Returns the Language or nil if none was found. def self.find_by_alias(name) + return nil if name.to_s.empty? name && (@alias_index[name.downcase] || @alias_index[name.split(',').first.downcase]) end diff --git a/test/test_language.rb b/test/test_language.rb index 3d1fd66c..176abac4 100644 --- a/test/test_language.rb +++ b/test/test_language.rb @@ -275,6 +275,11 @@ class TestLanguage < Minitest::Test assert_equal Language['Rust'], Language.find_by_alias('rust,no_run') end + def test_doesnt_blow_up_with_blank_lookup + assert_equal nil, Language.find_by_alias('') + assert_equal nil, Language.find_by_name(nil) + end + def test_name assert_equal 'Perl', Language['Perl'].name assert_equal 'Python', Language['Python'].name From 997c0fca10801af01f5de613ba1c2dbda82ef6fb Mon Sep 17 00:00:00 2001 From: Arfon Smith Date: Tue, 11 Aug 2015 06:48:54 +0100 Subject: [PATCH 8/9] Catching one more edge case --- lib/linguist/language.rb | 1 + test/test_language.rb | 1 + 2 files changed, 2 insertions(+) diff --git a/lib/linguist/language.rb b/lib/linguist/language.rb index bc65a053..07585bb0 100644 --- a/lib/linguist/language.rb +++ b/lib/linguist/language.rb @@ -242,6 +242,7 @@ module Linguist # # Returns the Language or nil if none was found. def self.[](name) + return nil if name.to_s.empty? name && (@index[name.downcase] || @index[name.split(',').first.downcase]) end diff --git a/test/test_language.rb b/test/test_language.rb index 176abac4..5da3b8c7 100644 --- a/test/test_language.rb +++ b/test/test_language.rb @@ -278,6 +278,7 @@ class TestLanguage < Minitest::Test def test_doesnt_blow_up_with_blank_lookup assert_equal nil, Language.find_by_alias('') assert_equal nil, Language.find_by_name(nil) + assert_equal nil, Language[""] end def test_name From d9509a1750cc87ce5a3b1e72028294bf5dbfa784 Mon Sep 17 00:00:00 2001 From: Arfon Smith Date: Tue, 11 Aug 2015 07:01:05 +0100 Subject: [PATCH 9/9] Bumping version to v4.5.13 --- lib/linguist/version.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/linguist/version.rb b/lib/linguist/version.rb index 0265e2b0..f46a86f2 100644 --- a/lib/linguist/version.rb +++ b/lib/linguist/version.rb @@ -1,3 +1,3 @@ module Linguist - VERSION = "4.5.11" + VERSION = "4.5.13" end