diff --git a/lib/ace/snippets.js b/lib/ace/snippets.js index c64a31af..21395cd2 100644 --- a/lib/ace/snippets.js +++ b/lib/ace/snippets.js @@ -484,6 +484,7 @@ var SnippetManager = function() { snippets.forEach(removeSnippet); }; this.parseSnippetFile = function(str) { + str = str.replace(/\r/, ""); var list = [], snippet = {}; var re = /^#.*|^({[\s\S]*})\s*$|^(\S+) (.*)$|^((?:\n*\t.*)+)/gm; var m; @@ -500,11 +501,11 @@ var SnippetManager = function() { } else { var key = m[2], val = m[3]; if (key == "regex") { - var re = /\/((?:[^\/\\]|\\.)*)|$/g; - snippet.guard = re.exec(val)[1]; - snippet.trigger = re.exec(val)[1]; - snippet.endTrigger = re.exec(val)[1]; - snippet.endGuard = re.exec(val)[1]; + var guardRe = /\/((?:[^\/\\]|\\.)*)|$/g; + snippet.guard = guardRe.exec(val)[1]; + snippet.trigger = guardRe.exec(val)[1]; + snippet.endTrigger = guardRe.exec(val)[1]; + snippet.endGuard = guardRe.exec(val)[1]; } else if (key == "snippet") { snippet.tabTrigger = val.match(/^\S*/)[0]; if (!snippet.name) diff --git a/lib/ace/snippets_test.js b/lib/ace/snippets_test.js index 341ec48e..52aab4f0 100644 --- a/lib/ace/snippets_test.js +++ b/lib/ace/snippets_test.js @@ -35,13 +35,13 @@ if (typeof process !== "undefined") { define(function(require, exports, module) { "use strict"; -var SnippetManager = require("./snippets").SnippetManager; +var snippetManager = require("./snippets").snippetManager; var assert = require("./test/assertions"); module.exports = { "test: textmate style format strings" : function() { - var fmt = SnippetManager.tmStrFormat; - SnippetManager.tmStrFormat("hello", { + var fmt = snippetManager.tmStrFormat; + snippetManager.tmStrFormat("hello", { guard: "(..)(.)(.)", flag:"g", fmt: "a\\UO\\l$1\\E$2" @@ -63,7 +63,7 @@ module.exports = { - var parsed = SnippetManager.parseSnippetFile( + var parsed = snippetManager.parseSnippetFile( "name a\nregex /(?:(=)|(:))?\s*)/\\(?f/\\)/\n\t{$0}" + "\n\t\n\n#function\nsnippet f function\n\tfunction" ); @@ -72,13 +72,13 @@ module.exports = { }, "test: parse snippet": function() { var content = "-\\$$2a${1:x${$2:y$3\\}\\n\\}$TM_SELECTION}"; - var tokens = SnippetManager.tokenizeTmSnippet(content); + var tokens = snippetManager.tokenizeTmSnippet(content); assert.equal(tokens.length, 15); assert.equal(tokens[4], tokens[14]); assert.equal(tokens[2].tabstopId, 2); var content = "\\}${var/as\\/d/\\ul\\//g:s}" - var tokens = SnippetManager.tokenizeTmSnippet(content); + var tokens = snippetManager.tokenizeTmSnippet(content); assert.equal(tokens.length, 4); assert.equal(tokens[1], tokens[3]); assert.equal(tokens[2], "s");