diff --git a/lib/linguist/strategy/modeline.rb b/lib/linguist/strategy/modeline.rb index 58f75b63..f8b58ecf 100644 --- a/lib/linguist/strategy/modeline.rb +++ b/lib/linguist/strategy/modeline.rb @@ -1,7 +1,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 + 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 @@ -22,13 +22,8 @@ module Linguist # # Returns a String or nil def self.modeline(data) - match = data.match(EmacsModeline) - if match - match[4] - else - match = data.match(VimModeline) - match[1] if match - end + match = data.match(EmacsModeline) | data.match(VimModeline) + match[1] if match end end end