diff --git a/spec/fixtures/packages/package-with-a-cson-grammar.tmbundle/Snippets/test.cson b/spec/fixtures/packages/package-with-a-cson-grammar.tmbundle/Snippets/test.cson new file mode 100644 index 000000000..a82d8447a --- /dev/null +++ b/spec/fixtures/packages/package-with-a-cson-grammar.tmbundle/Snippets/test.cson @@ -0,0 +1,4 @@ +'name': 'Really' +'scope': 'source.alot' +'tabTrigger': 'really' +'content': 'I really like $1 alot$0' diff --git a/src/packages/snippets/lib/load-snippets-handler.coffee b/src/packages/snippets/lib/load-snippets-handler.coffee index ba4f16c13..8cb26b687 100644 --- a/src/packages/snippets/lib/load-snippets-handler.coffee +++ b/src/packages/snippets/lib/load-snippets-handler.coffee @@ -20,8 +20,10 @@ module.exports = continue if fs.base(snippetsPath).indexOf('.') is 0 try - if object = fs.readPlist(snippetsPath) - snippets.push(object) if object + if fs.extension(snippetsPath) is '.cson' and object = fs.readObject(snippetsPath) + snippets.push(object) + else if object = fs.readPlist(snippetsPath) + snippets.push(object) else logWarning() catch e diff --git a/src/packages/snippets/spec/snippets-spec.coffee b/src/packages/snippets/spec/snippets-spec.coffee index ac3a2c441..b00f2fdcb 100644 --- a/src/packages/snippets/spec/snippets-spec.coffee +++ b/src/packages/snippets/spec/snippets-spec.coffee @@ -5,6 +5,7 @@ Buffer = require 'buffer' Editor = require 'editor' _ = require 'underscore' fs = require 'fs' +Package = require 'package' describe "Snippets extension", -> [buffer, editor, editSession] = [] @@ -295,6 +296,22 @@ describe "Snippets extension", -> expect(Worker.prototype.terminate).toHaveBeenCalled() expect(Worker.prototype.terminate.calls.length).toBe 1 + it "loads CSON snippets from TextMate packages", -> + jasmine.unspy(LoadSnippetsTask.prototype, 'loadTextMateSnippets') + snippets.loaded = false + task = new LoadSnippetsTask(snippets) + task.packages = [Package.build(fixturesProject.resolve('packages/package-with-a-cson-grammar.tmbundle'))] + task.start() + + waitsFor "CSON snippets to load", 5000, -> snippets.loaded + + runs -> + snippet = syntax.getProperty(['.source.alot'], 'snippets.really') + expect(snippet).toBeTruthy() + expect(snippet.prefix).toBe 'really' + expect(snippet.name).toBe 'Really' + expect(snippet.body).toBe "I really like alot" + describe "snippet body parser", -> it "breaks a snippet body into lines, with each line containing tab stops at the appropriate position", -> bodyTree = snippets.getBodyParser().parse """