Am 24.10.14 um 09:24 schrieb Allan Odgaard:
On 23 Oct 2014, at 11:42, Stefan Daschek wrote:
When and how is the “First Line Match” setting of language grammars considered?
It is used after checking for explicit bindings (from tm properties). The explicit bindings are recorded in the Global.tmProperties when the user change language for an open file.
Makes sense! So the precendence is like this?
1. Use explicit binding from Global.tmProperties. 2. If none found, use first line match. 3. If none found, use file types (extension).
If more than one bundle claims a file type by extension, is it “longest match wins“? (The RSpec bundle uses `_spec.rb` which seems to take precedence over Ruby's `rb` even for empty files.) And what happens if two bundles claim the exact same extension? (Both Ruby and Rails claim `rb`, and apparently the Ruby bundle “wins”.)
With a *.rb file open you should be able to use ⌃⌘T, switch to settings, and then enter ‘filetype’ to find your explicit binding for *.rb → Rails in Global.tmProperties (although clicking Edit doesn’t take you to the proper line yet).
Great, this has already proven itself very helpful. Thanks!
Making it work for RSpec files, assuming these still follow the file_spec.rb naming convention, you would need to change the setting to:
[ *.rb~*_spec.rb ] fileType = source.ruby.rails
Cool – didn't know that it's possible to combine wildcards like this!