Files
atom/src/app/grammar-view.coffee
2013-02-25 15:13:48 -08:00

61 lines
1.3 KiB
CoffeeScript

SelectList = require 'select-list'
{$$} = require 'space-pen'
module.exports =
class GrammarView extends SelectList
@viewClass: -> "#{super} grammar-view from-top overlay mini"
filterKey: 'name'
initialize: (@editor) ->
@currentGrammar = @editor.getGrammar()
@path = @editor.getPath()
@autoDetect = name: 'Auto Detect'
@command 'editor:select-grammar', =>
@cancel()
false
super
@populate()
@attach()
itemForElement: (grammar) ->
if grammar is @currentGrammar
grammarClass = 'active-item'
else
grammarClass = 'inactive-item'
$$ ->
@li grammar.name, class: grammarClass
populate: ->
grammars = new Array(syntax.grammars...)
grammars.sort (grammarA, grammarB) ->
if grammarA.scopeName is 'text.plain'
-1
else if grammarB.scopeName is 'text.plain'
1
else if grammarA.name < grammarB.name
-1
else if grammarA.name > grammarB.name
1
else
0
grammars.unshift(@autoDetect)
@setArray(grammars)
confirmed: (grammar) ->
@cancel()
if grammar is @autoDetect
project.removeGrammarOverrideForPath(@path)
else
project.addGrammarOverrideForPath(@path, grammar)
@editor.reloadGrammar()
attach: ->
super
rootView.append(this)
@miniEditor.focus()