diff --git a/spec/atom/buffer-spec.coffee b/spec/atom/buffer-spec.coffee index 9f2524fa0..a7f91fd16 100644 --- a/spec/atom/buffer-spec.coffee +++ b/spec/atom/buffer-spec.coffee @@ -45,5 +45,13 @@ describe 'Buffer', -> buffer = new Buffer expect(-> buffer.save()).toThrow() + describe "getMode", -> + describe "when given a url", -> + it "sets 'mode' based on the file extension", -> + buffer = new Buffer 'something.js' + expect(buffer.getMode().name).toBe 'javascript' - + describe "when no url is given", -> + it "sets 'mode' to text mode", -> + buffer = new Buffer 'something' + expect(buffer.getMode().name).toBe 'text' diff --git a/src/atom/buffer.coffee b/src/atom/buffer.coffee index 54edc10f6..b268e1663 100644 --- a/src/atom/buffer.coffee +++ b/src/atom/buffer.coffee @@ -11,6 +11,7 @@ class Buffer fs.read(@url) else "" + @aceDocument = new Document text getText: -> @@ -19,6 +20,18 @@ class Buffer setText: (text) -> @aceDocument.setValue text + getMode: -> + return @mode if @mode + + extension = @url.split('/').pop().split('.').pop() + modeName = switch extension + when "js" then "javascript" + else "text" + + @mode = new (require("ace/mode/#{modeName}").Mode) + @mode.name = modeName + @mode + save: -> if not @url then throw new Error("Tried to save buffer with no url") fs.write @url, @getText()