diff --git a/src/app/language-mode.coffee b/src/app/language-mode.coffee index 5b821ff95..7556a76aa 100644 --- a/src/app/language-mode.coffee +++ b/src/app/language-mode.coffee @@ -15,12 +15,26 @@ class LanguageMode constructor: (@buffer, @tabText) -> @id = @constructor.idCounter++ - @aceMode = @buffer.getMode() + @aceMode = @requireAceMode() @screenLines = @buildScreenLinesForRows('start', 0, @buffer.getLastRow()) @buffer.on "change.languageMode#{@id}", (e) => @handleBufferChange(e) @aceLineCommentAdaptor = new AceLineCommentAdaptor(@buffer) @aceFoldAdaptor = new AceFoldAdaptor(this) + requireAceMode: -> + extension = if @buffer.getPath() then @buffer.getPath().split('/').pop().split('.').pop() else null + modeName = switch extension + when 'js' then 'javascript' + when 'coffee' then 'coffee' + when 'rb', 'ru' then 'ruby' + when 'c', 'h', 'cpp' then 'c_cpp' + when 'html', 'htm' then 'html' + when 'css' then 'css' + when 'java' then 'java' + when 'xml' then 'xml' + else 'text' + new (require("ace/mode/#{modeName}").Mode) + toggleLineCommentsInRange: (range) -> range = Range.fromObject(range) @aceMode.toggleCommentLines(@stateForRow(range.start.row), @aceLineCommentAdaptor, range.start.row, range.end.row)