Specify additional file types for languages.
Note: A subset of this functionality is now available directly in Atom - see Customizing Language Recognition in the Flight Manual.
To map a filetype to a new language, use the file-types
option. Specify the extension
(without a dot) as a key, and the new default extension as the value.
For example, the .hbs
extension defaults to the handlebars
grammer. To change it to
default to html-htmlbars
(installed separately), open your config.cson
(via the Atom -> Config...
menu) and add the following rule:
"*": # make sure to put all 'file-types' options under the "*" key
'file-types':
'hbs': 'text.html.htmlbars'
To see all available grammers registered in your Atom instance, open the Developer Tools Console and execute the following:
console.log(Object.keys(atom.grammars.grammarsByScopeName).sort().join("\n"))
You can match with regular expressions, too. Most JavaScript regular
expressions should work; but, the system looks for a dot (.
), a caret (^
) at
the start, or a dollar ($
) to identify RegExp matchers.
For example, you can associate /.*_steps\.rb$/
with source.cucumber.steps
in
your config.cson
as follows:
'file-types':
'_steps\\.rb$': 'source.cucumber.steps'
NOTE: Extension Matchers take priority over RegExp Matchers.
The scope name for a grammar can be found in the settings for the corresponding
language package. For example, the scope name for CoffeeScript's grammar (as
provided by the Language Coffee Script package) is source.coffee
.
To get a list of all scope names registered in your Atom instance, open the Developer Tools Console and execute the following:
Object.keys(atom.grammars.grammarsByScopeName).sort().join('\n')
Here is a list of the scope names available by default in Atom v1.8.0:
- source.c
- source.cake
- source.clojure
- source.coffee
- source.coffee.jsx
- source.cpp
- source.cs
- source.css
- source.css.less
- source.css.scss
- source.csx
- source.gfm
- source.git-config
- source.go
- source.gotemplate
- source.java
- source.java-properties
- source.js
- source.js.jsx
- source.js.rails source.js.jquery
- source.js.regexp
- source.js.regexp.replacement
- source.json
- source.litcoffee
- source.makefile
- source.nant-build
- source.objc
- source.objcpp
- source.perl
- source.perl6
- source.plist
- source.python
- source.regexp.python
- source.ruby
- source.ruby.rails
- source.ruby.rails.rjs
- source.sass
- source.shell
- source.sql
- source.sql.mustache
- source.sql.ruby
- source.strings
- source.toml
- source.yaml
- text.git-commit
- text.git-rebase
- text.html.basic
- text.html.erb
- text.html.gohtml
- text.html.jsp
- text.html.mustache
- text.html.php
- text.html.ruby
- text.hyperlink
- text.junit-test-report
- text.plain
- text.plain.null-grammar
- text.python.console
- text.python.traceback
- text.shell-session
- text.todo
- text.xml
- text.xml.plist
- text.xml.xsl
You probably don't want to assign the same file type to multiple languages...