diff --git a/demo/kitchen-sink/docs/handlebars.hbs b/demo/kitchen-sink/docs/handlebars.hbs
index 1cdf786e..bb096a1a 100644
--- a/demo/kitchen-sink/docs/handlebars.hbs
+++ b/demo/kitchen-sink/docs/handlebars.hbs
@@ -3,6 +3,6 @@
diff --git a/lib/ace/ext/emmet.js b/lib/ace/ext/emmet.js
index 75eefa3f..ceb155ef 100644
--- a/lib/ace/ext/emmet.js
+++ b/lib/ace/ext/emmet.js
@@ -342,29 +342,29 @@ var keymap = {
var editorProxy = new AceEmmetEditor();
exports.commands = new HashHandler();
exports.runEmmetCommand = function(editor) {
- editorProxy.setupContext(editor);
- if (editorProxy.getSyntax() == "php")
- return false;
- var actions = emmet.require("actions");
-
- if (this.action == "expand_abbreviation_with_tab") {
- if (!editor.selection.isEmpty())
- return false;
- }
-
- if (this.action == "wrap_with_abbreviation") {
- // without setTimeout prompt doesn't work on firefox
- return setTimeout(function() {
- actions.run("wrap_with_abbreviation", editorProxy);
- }, 0);
- }
-
- var pos = editor.selection.lead;
- var token = editor.session.getTokenAt(pos.row, pos.column);
- if (token && /\btag\b/.test(token.type))
- return false;
-
try {
+ editorProxy.setupContext(editor);
+ if (editorProxy.getSyntax() == "php")
+ return false;
+ var actions = emmet.require("actions");
+
+ if (this.action == "expand_abbreviation_with_tab") {
+ if (!editor.selection.isEmpty())
+ return false;
+ }
+
+ if (this.action == "wrap_with_abbreviation") {
+ // without setTimeout prompt doesn't work on firefox
+ return setTimeout(function() {
+ actions.run("wrap_with_abbreviation", editorProxy);
+ }, 0);
+ }
+
+ var pos = editor.selection.lead;
+ var token = editor.session.getTokenAt(pos.row, pos.column);
+ if (token && /\btag\b/.test(token.type))
+ return false;
+
var result = actions.run(this.action, editorProxy);
} catch(e) {
editor._signal("changeStatus", typeof e == "string" ? e : e.message);
@@ -393,7 +393,7 @@ exports.updateCommands = function(editor, enabled) {
};
exports.isSupportedMode = function(modeId) {
- return modeId && /css|less|scss|sass|stylus|html|php|twig/.test(modeId);
+ return modeId && /css|less|scss|sass|stylus|html|php|twig|ejs/.test(modeId);
};
var onChangeMode = function(e, target) {
@@ -406,9 +406,8 @@ var onChangeMode = function(e, target) {
if (enabled) {
if (typeof emmetPath == "string") {
require("ace/config").loadModule(emmetPath, function() {
-
+ emmetPath = null;
});
- emmetPath = null;
}
}
exports.updateCommands(editor, enabled);
diff --git a/lib/ace/mode/_test/tokens_cirru.json b/lib/ace/mode/_test/tokens_cirru.json
new file mode 100644
index 00000000..de4852e6
--- /dev/null
+++ b/lib/ace/mode/_test/tokens_cirru.json
@@ -0,0 +1,267 @@
+[[
+ "start",
+ ["comment.line.double-dash","-- https://github.com/Cirru/cirru-gopher/blob/master/code/scope.cr,"]
+],[
+ "start"
+],[
+ "line",
+ ["support.function","set"],
+ ["text"," "],
+ ["variable.parameter","a"],
+ ["text"," "],
+ ["storage.modifier","("],
+ ["support.function","int"],
+ ["text"," "],
+ ["constant.numeric","2"],
+ ["storage.modifier",")"]
+],[
+ "start"
+],[
+ "line",
+ ["support.function","print"],
+ ["text"," "],
+ ["storage.modifier","("],
+ ["support.function","self"],
+ ["storage.modifier",")"]
+],[
+ "start"
+],[
+ "line",
+ ["support.function","set"],
+ ["text"," "],
+ ["variable.parameter","c"],
+ ["text"," "],
+ ["storage.modifier","("],
+ ["support.function","child"],
+ ["storage.modifier",")"]
+],[
+ "start"
+],[
+ "line",
+ ["support.function","under"],
+ ["text"," "],
+ ["variable.parameter","c"]
+],[
+ "line",
+ ["markup.raw"," "],
+ ["support.function","under"],
+ ["text"," "],
+ ["variable.parameter","parent"]
+],[
+ "line",
+ ["markup.raw"," "],
+ ["support.function","print"],
+ ["text"," "],
+ ["variable.parameter","a"]
+],[
+ "start"
+],[
+ "line",
+ ["support.function","print"],
+ ["text"," "],
+ ["storage.modifier","$"],
+ ["text"," "],
+ ["support.function","get"],
+ ["text"," "],
+ ["variable.parameter","c"],
+ ["text"," "],
+ ["variable.parameter","a"]
+],[
+ "start"
+],[
+ "line",
+ ["support.function","set"],
+ ["text"," "],
+ ["variable.parameter","c"],
+ ["text"," "],
+ ["variable.parameter","x"],
+ ["text"," "],
+ ["storage.modifier","("],
+ ["support.function","int"],
+ ["text"," "],
+ ["constant.numeric","3"],
+ ["storage.modifier",")"]
+],[
+ "line",
+ ["support.function","print"],
+ ["text"," "],
+ ["storage.modifier","$"],
+ ["text"," "],
+ ["support.function","get"],
+ ["text"," "],
+ ["variable.parameter","c"],
+ ["text"," "],
+ ["variable.parameter","x"]
+],[
+ "start"
+],[
+ "line",
+ ["support.function","set"],
+ ["text"," "],
+ ["variable.parameter","just-print"],
+ ["text"," "],
+ ["storage.modifier","$"],
+ ["text"," "],
+ ["support.function","code"]
+],[
+ "line",
+ ["markup.raw"," "],
+ ["support.function","print"],
+ ["text"," "],
+ ["variable.parameter","a"]
+],[
+ "start"
+],[
+ "line",
+ ["support.function","print"],
+ ["text"," "],
+ ["variable.parameter","just-print"]
+],[
+ "start"
+],[
+ "line",
+ ["support.function","eval"],
+ ["text"," "],
+ ["storage.modifier","("],
+ ["support.function","self"],
+ ["storage.modifier",")"],
+ ["text"," "],
+ ["variable.parameter","just-print"]
+],[
+ "line",
+ ["support.function","eval"],
+ ["text"," "],
+ ["variable.parameter","just-print"]
+],[
+ "start"
+],[
+ "line",
+ ["support.function","print"],
+ ["text"," "],
+ ["storage.modifier","("],
+ ["support.function","string"],
+ ["text"," "],
+ ["string.quoted.double","\"string with space\""],
+ ["storage.modifier",")"]
+],[
+ "line",
+ ["support.function","print"],
+ ["text"," "],
+ ["storage.modifier","("],
+ ["support.function","string"],
+ ["text"," "],
+ ["string.quoted.double","\"escapes "],
+ ["constant.character.escape","\\n"],
+ ["string.quoted.double"," "],
+ ["constant.character.escape","\\\"\\\\"],
+ ["string.quoted.double","\""],
+ ["storage.modifier",")"]
+],[
+ "start"
+],[
+ "start",
+ ["support.function","brackets"],
+ ["text"," "],
+ ["storage.modifier","((((()))))"]
+],[
+ "start"
+],[
+ "line",
+ ["string.quoted.double","\"eval\""],
+ ["text"," "],
+ ["storage.modifier","$"],
+ ["text"," "],
+ ["support.function","string"],
+ ["text"," "],
+ ["string.quoted.double","\"eval\""]
+],[
+ "start"
+],[
+ "line",
+ ["support.function","print"],
+ ["text"," "],
+ ["storage.modifier","("],
+ ["support.function","add"],
+ ["text"," "],
+ ["storage.modifier","$"],
+ ["text"," "],
+ ["storage.modifier","("],
+ ["support.function","int"],
+ ["text"," "],
+ ["constant.numeric","1"],
+ ["storage.modifier",")"],
+ ["text"," "],
+ ["storage.modifier","("],
+ ["support.function","int"],
+ ["text"," "],
+ ["constant.numeric","2"],
+ ["storage.modifier","))"]
+],[
+ "start"
+],[
+ "start",
+ ["support.function","print"],
+ ["text"," "],
+ ["storage.modifier","$"],
+ ["text"," "],
+ ["support.function","unwrap"],
+ ["text"," "],
+ ["storage.modifier","$"]
+],[
+ "line",
+ ["text"," "],
+ ["support.function","map"],
+ ["text"," "],
+ ["storage.modifier","("],
+ ["support.function","a"],
+ ["text"," "],
+ ["storage.modifier","$"],
+ ["text"," "],
+ ["support.function","int"],
+ ["text"," "],
+ ["constant.numeric","1"],
+ ["storage.modifier",")"],
+ ["text"," "],
+ ["storage.modifier","("],
+ ["support.function","b"],
+ ["text"," "],
+ ["storage.modifier","$"],
+ ["text"," "],
+ ["support.function","int"],
+ ["text"," "],
+ ["constant.numeric","2"],
+ ["storage.modifier",")"]
+],[
+ "start"
+],[
+ "line",
+ ["support.function","print"],
+ ["text"," "],
+ ["variable.parameter","a"]
+],[
+ "line",
+ ["markup.raw"," "],
+ ["support.function","int"],
+ ["text"," "],
+ ["constant.numeric","1"]
+],[
+ "line",
+ ["markup.raw"," "],
+ ["storage.modifier",","],
+ ["text"," "],
+ ["variable.parameter","b"],
+ ["text"," "],
+ ["variable.parameter","c"]
+],[
+ "line",
+ ["markup.raw"," "],
+ ["support.function","int"],
+ ["text"," "],
+ ["constant.numeric","2"]
+],[
+ "line",
+ ["markup.raw"," "],
+ ["storage.modifier",","],
+ ["text"," "],
+ ["variable.parameter","d"]
+]]
\ No newline at end of file
diff --git a/lib/ace/mode/_test/tokens_elixir.json b/lib/ace/mode/_test/tokens_elixir.json
new file mode 100644
index 00000000..cbbe1fee
--- /dev/null
+++ b/lib/ace/mode/_test/tokens_elixir.json
@@ -0,0 +1,196 @@
+[[
+ "start",
+ ["keyword.control.module.elixir","defmodule"],
+ ["meta.module.elixir"," "],
+ ["entity.name.type.module.elixir","HelloModule"],
+ ["text"," "],
+ ["keyword.control.elixir","do"]
+],[
+ "comment.documentation.heredoc",
+ ["text"," "],
+ ["comment.documentation.heredoc","@moduledoc \"\"\""]
+],[
+ "comment.documentation.heredoc",
+ ["comment.documentation.heredoc"," This is supposed to be `markdown`."]
+],[
+ "comment.documentation.heredoc",
+ ["comment.documentation.heredoc"," __Yes__ this is [mark](http://down.format)"]
+],[
+ "comment.documentation.heredoc"
+],[
+ "comment.documentation.heredoc",
+ ["comment.documentation.heredoc"," # Truly"]
+],[
+ "comment.documentation.heredoc"
+],[
+ "comment.documentation.heredoc",
+ ["comment.documentation.heredoc"," ## marked"]
+],[
+ "comment.documentation.heredoc"
+],[
+ "comment.documentation.heredoc",
+ ["comment.documentation.heredoc"," * with lists"]
+],[
+ "comment.documentation.heredoc",
+ ["comment.documentation.heredoc"," * more"]
+],[
+ "comment.documentation.heredoc",
+ ["comment.documentation.heredoc"," * and more"]
+],[
+ "comment.documentation.heredoc"
+],[
+ "comment.documentation.heredoc",
+ ["comment.documentation.heredoc"," Even.with(code)"]
+],[
+ "comment.documentation.heredoc",
+ ["comment.documentation.heredoc"," blocks |> with |> samples"]
+],[
+ "comment.documentation.heredoc"
+],[
+ "comment.documentation.heredoc",
+ ["comment.documentation.heredoc"," _Docs are first class citizens in Elixir_ (Jose Valim)"]
+],[
+ "start",
+ ["comment.documentation.heredoc"," \"\"\""]
+],[
+ "start",
+ ["text"," "]
+],[
+ "start",
+ ["text"," "],
+ ["punctuation.definition.comment.elixir","#"],
+ ["comment.line.number-sign.elixir"," A \"Hello world\" function"]
+],[
+ "start",
+ ["text"," "],
+ ["keyword.control.elixir","def"],
+ ["text"," some_fun "],
+ ["keyword.control.elixir","do"]
+],[
+ "start",
+ ["text"," "],
+ ["variable.other.constant.elixir","IO"],
+ ["punctuation.separator.method.elixir","."],
+ ["text","puts "],
+ ["punctuation.definition.string.begin.elixir","\""],
+ ["string.quoted.double.elixir","Juhu Kinners!"],
+ ["punctuation.definition.string.end.elixir","\""]
+],[
+ "start",
+ ["text"," "],
+ ["keyword.control.elixir","end"]
+],[
+ "start",
+ ["text"," "],
+ ["punctuation.definition.comment.elixir","#"],
+ ["comment.line.number-sign.elixir"," A private function"]
+],[
+ "start",
+ ["text"," "],
+ ["keyword.control.elixir","defp"],
+ ["text"," priv "],
+ ["keyword.control.elixir","do"]
+],[
+ "punctuation.definition.string.begin.elixir7",
+ ["text"," is_regex "],
+ ["punctuation.definition.string.begin.elixir","~r\"\"\""]
+],[
+ "punctuation.definition.string.begin.elixir7",
+ ["string.quoted.double.heredoc.elixir"," This is a regex"]
+],[
+ "punctuation.definition.string.begin.elixir7",
+ ["string.quoted.double.heredoc.elixir"," spanning several"]
+],[
+ "punctuation.definition.string.begin.elixir7",
+ ["string.quoted.double.heredoc.elixir"," lines."]
+],[
+ "start",
+ ["punctuation.definition.string.end.elixir"," \"\"\""]
+],[
+ "start",
+ ["text"," x "],
+ ["keyword.operator.assignment.elixir","="],
+ ["text"," elem"],
+ ["punctuation.section.function.elixir","("],
+ ["punctuation.section.scope.elixir","{"],
+ ["text"," "],
+ ["punctuation.definition.constant.elixir",":"],
+ ["constant.other.symbol.elixir","a"],
+ ["punctuation.separator.object.elixir",","],
+ ["text"," "],
+ ["punctuation.definition.constant.elixir",":"],
+ ["constant.other.symbol.elixir","b"],
+ ["punctuation.separator.object.elixir",","],
+ ["text"," "],
+ ["punctuation.definition.constant.elixir",":"],
+ ["constant.other.symbol.elixir","c"],
+ ["text"," "],
+ ["punctuation.section.scope.elixir","}"],
+ ["punctuation.separator.object.elixir",","],
+ ["text"," "],
+ ["constant.numeric.elixir","0"],
+ ["punctuation.section.function.elixir",")"],
+ ["text"," "],
+ ["punctuation.definition.comment.elixir","#"],
+ ["comment.line.number-sign.elixir","=> :a"]
+],[
+ "start",
+ ["text"," "],
+ ["keyword.control.elixir","end"]
+],[
+ "start",
+ ["keyword.control.elixir","end"]
+],[
+ "start"
+],[
+ "start",
+ ["text","test_fun "],
+ ["keyword.operator.assignment.elixir","="],
+ ["text"," "],
+ ["keyword.control.elixir","fn"],
+ ["punctuation.section.function.elixir","("],
+ ["text","x"],
+ ["punctuation.section.function.elixir",")"],
+ ["text"," "],
+ ["keyword.operator.arithmetic.elixir","-"],
+ ["keyword.operator.comparison.elixir",">"]
+],[
+ "start",
+ ["text"," "],
+ ["keyword.control.elixir","cond"],
+ ["text"," "],
+ ["keyword.control.elixir","do"]
+],[
+ "start",
+ ["text"," x "],
+ ["keyword.operator.comparison.elixir",">"],
+ ["text"," "],
+ ["constant.numeric.elixir","10"],
+ ["text"," "],
+ ["keyword.operator.arithmetic.elixir","-"],
+ ["keyword.operator.comparison.elixir",">"]
+],[
+ "start",
+ ["text"," "],
+ ["punctuation.definition.constant.elixir",":"],
+ ["constant.other.symbol.elixir","greater_than_ten"]
+],[
+ "start",
+ ["text"," "],
+ ["constant.language.elixir","true"],
+ ["text"," "],
+ ["keyword.operator.arithmetic.elixir","-"],
+ ["keyword.operator.comparison.elixir",">"]
+],[
+ "start",
+ ["text"," "],
+ ["punctuation.definition.constant.elixir",":"],
+ ["constant.other.symbol.elixir","maybe_ten"]
+],[
+ "start",
+ ["text"," "],
+ ["keyword.control.elixir","end"]
+],[
+ "start",
+ ["keyword.control.elixir","end"]
+]]
\ No newline at end of file
diff --git a/lib/ace/mode/_test/tokens_handlebars.json b/lib/ace/mode/_test/tokens_handlebars.json
index ef8cb82a..1ec79139 100644
--- a/lib/ace/mode/_test/tokens_handlebars.json
+++ b/lib/ace/mode/_test/tokens_handlebars.json
@@ -59,9 +59,9 @@
["meta.tag.punctuation.tag-open.xml","<"],
["meta.tag.tag-name.xml","div"],
["meta.tag.punctuation.tag-close.xml",">"],
- ["storage.type.start","{{"],
+ ["support.function","{{{"],
["variable.parameter","body"],
- ["storage.type.end","}}"],
+ ["support.function","}}}"],
["meta.tag.punctuation.end-tag-open.xml",""],
["meta.tag.tag-name.xml","div"],
["meta.tag.punctuation.tag-close.xml",">"]
diff --git a/lib/ace/mode/behaviour/behaviour_test.js b/lib/ace/mode/behaviour/behaviour_test.js
new file mode 100644
index 00000000..33a09c83
--- /dev/null
+++ b/lib/ace/mode/behaviour/behaviour_test.js
@@ -0,0 +1,133 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Distributed under the BSD license:
+ *
+ * Copyright (c) 2010, Ajax.org B.V.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of Ajax.org B.V. nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+if (typeof process !== "undefined") {
+ require("amd-loader");
+}
+
+define(function(require, exports, module) {
+"use strict";
+
+require("../../multi_select");
+var assert = require("../../test/assertions");
+var Range = require("../../range").Range;
+var Editor = require("../../editor").Editor;
+var EditSession = require("../../edit_session").EditSession;
+var MockRenderer = require("../../test/mockrenderer").MockRenderer;
+var JavaScriptMode = require("../javascript").Mode;
+var editor;
+var exec = function(name, times, args) {
+ do {
+ editor.commands.exec(name, editor, args);
+ } while(times --> 1);
+};
+var testRanges = function(str) {
+ assert.equal(editor.selection.getAllRanges() + "", str + "");
+};
+
+module.exports = {
+
+ name: "ACE multi_select.js",
+
+ "test: cstyle": function() {
+ function testValue(line) {
+ assert.equal(editor.getValue(), Array(4).join(line + "\n"));
+ }
+ function testSelection(line, col, inc) {
+ editor.selection.rangeList.ranges.forEach(function(r) {
+ assert.range(r, line, col, line, col);
+ line += (inc || 1);
+ });
+ }
+ var doc = new EditSession([
+ "",
+ "",
+ "",
+ ""
+ ], new JavaScriptMode());
+ editor = new Editor(new MockRenderer(), doc);
+ editor.setOption("behavioursEnabled", true);
+
+ editor.navigateFileStart();
+ exec("addCursorBelow", 2);
+
+ exec("insertstring", 1, "if ");
+
+ // pairing (
+ exec("insertstring", 1, "(");
+ testValue("if ()");
+ testSelection(0, 4);
+ exec("insertstring", 1, ")");
+ testValue("if ()");
+ testSelection(0, 5);
+
+ // pairing [
+ exec("gotoleft", 1);
+ exec("insertstring", 1, "[");
+ testValue("if ([])");
+ testSelection(0, 5);
+
+ exec("insertstring", 1, "]");
+ testValue("if ([])");
+ testSelection(0, 6);
+
+ // test deletion
+ exec("gotoleft", 1);
+ exec("backspace", 1);
+ testValue("if ()");
+ testSelection(0, 4);
+
+ exec("gotolineend", 1);
+ exec("insertstring", 1, "{");
+ testValue("if (){}");
+ testSelection(0, 6);
+
+ exec("insertstring", 1, "}");
+ testValue("if (){}");
+ testSelection(0, 7);
+
+ exec("gotolinestart", 1);
+ exec("insertstring", 1, "(");
+ testValue("(if (){}");
+ exec("backspace", 1);
+
+ editor.setValue("");
+ exec("insertstring", 1, "{");
+ assert.equal(editor.getValue(), "{")
+ exec("insertstring", 1, "\n");
+ assert.equal(editor.getValue(), "{\n \n}")
+ }
+};
+
+});
+
+if (typeof module !== "undefined" && module === require.main) {
+ require("asyncjs").test.testcase(module.exports).exec();
+}
diff --git a/lib/ace/mode/behaviour/cstyle.js b/lib/ace/mode/behaviour/cstyle.js
index 2709168e..a8a18e72 100644
--- a/lib/ace/mode/behaviour/cstyle.js
+++ b/lib/ace/mode/behaviour/cstyle.js
@@ -42,11 +42,11 @@ var SAFE_INSERT_BEFORE_TOKENS =
["text", "paren.rparen", "punctuation.operator", "comment"];
var context;
-var contextCache = {}
+var contextCache = {};
var initContext = function(editor) {
var id = -1;
if (editor.multiSelect) {
- id = editor.selection.id;
+ id = editor.selection.index;
if (contextCache.rangeCount != editor.multiSelect.rangeCount)
contextCache = {rangeCount: editor.multiSelect.rangeCount};
}
diff --git a/lib/ace/mode/handlebars.js b/lib/ace/mode/handlebars.js
index 38af7e5c..3f2e7179 100644
--- a/lib/ace/mode/handlebars.js
+++ b/lib/ace/mode/handlebars.js
@@ -21,7 +21,7 @@ var Mode = function() {
oop.inherits(Mode, HtmlMode);
(function() {
-
+ this.blockComment = {start: "{!--", end: "--}"};
this.$id = "ace/mode/handlebars";
}).call(Mode.prototype);
diff --git a/lib/ace/mode/handlebars_highlight_rules.js b/lib/ace/mode/handlebars_highlight_rules.js
index c264afc1..f91a48ec 100644
--- a/lib/ace/mode/handlebars_highlight_rules.js
+++ b/lib/ace/mode/handlebars_highlight_rules.js
@@ -15,7 +15,7 @@ var HandlebarsHighlightRules = function() {
var hbs = {
regex : "(?={{)",
push : "handlebars"
- }
+ };
for (var key in this.$rules) {
this.$rules[key].unshift(hbs);
}
@@ -40,22 +40,22 @@ var HandlebarsHighlightRules = function() {
defaultToken : "comment"
}]
}, {
- token : "storage.type.start", // begin section
- regex : "{{[#\\^/&]?",
+ token : "support.function", // unescaped variable
+ regex : "{{{",
push : [{
- token : "storage.type.end",
- regex : "}}",
+ token : "support.function",
+ regex : "}}}",
next : pop2
}, {
token : "variable.parameter",
regex : "[a-zA-Z_$][a-zA-Z0-9_$]*"
}]
}, {
- token : "support.function", // unescaped variable
- regex : "{{{",
+ token : "storage.type.start", // begin section
+ regex : "{{[#\\^/&]?",
push : [{
- token : "support.function",
- regex : "}}}",
+ token : "storage.type.end",
+ regex : "}}",
next : pop2
}, {
token : "variable.parameter",
diff --git a/lib/ace/multi_select_test.js b/lib/ace/multi_select_test.js
index 45ab4965..2e71aefa 100644
--- a/lib/ace/multi_select_test.js
+++ b/lib/ace/multi_select_test.js
@@ -35,22 +35,22 @@ if (typeof process !== "undefined") {
define(function(require, exports, module) {
"use strict";
-var EditSession = require("./edit_session").EditSession;
-var Editor = require("./editor").Editor;
-var MockRenderer = require("./test/mockrenderer").MockRenderer;
-var Range = require("./range").Range;
+require("./multi_select");
var assert = require("./test/assertions");
-var MultiSelect = require("./multi_select").MultiSelect;
+var Range = require("./range").Range;
+var Editor = require("./editor").Editor;
+var EditSession = require("./edit_session").EditSession;
+var MockRenderer = require("./test/mockrenderer").MockRenderer;
var editor;
var exec = function(name, times, args) {
do {
editor.commands.exec(name, editor, args);
- } while(times --> 1)
+ } while(times --> 1);
};
var testRanges = function(str) {
assert.equal(editor.selection.getAllRanges() + "", str + "");
-}
+};
module.exports = {
@@ -63,7 +63,6 @@ module.exports = {
" wtt.w"
]);
editor = new Editor(new MockRenderer(), doc);
- MultiSelect(editor);
editor.navigateFileEnd();
exec("selectMoreBefore", 3);
@@ -90,7 +89,6 @@ module.exports = {
" wtt.we"
]);
editor = new Editor(new MockRenderer(), doc);
- MultiSelect(editor);
editor.selectMoreLines(1);
testRanges("Range: [0/0] -> [0/0],Range: [1/0] -> [1/0]");
@@ -113,9 +111,8 @@ module.exports = {
" wtt.w"
]);
editor = new Editor(new MockRenderer(), doc);
- MultiSelect(editor);
- editor.selectMoreLines(1)
+ editor.selectMoreLines(1);
testRanges("Range: [0/0] -> [0/0],Range: [1/0] -> [1/0]");
assert.ok(editor.inMultiSelectMode);
@@ -134,7 +131,6 @@ module.exports = {
" wtt.w"
]);
editor = new Editor(new MockRenderer(), doc);
- MultiSelect(editor);
var selection = editor.selection;
var range1 = new Range(0, 2, 0, 4);
@@ -158,7 +154,6 @@ module.exports = {
"test: onPaste in command with multiselect": function() {
var doc = new EditSession(["l1", "l2"]);
editor = new Editor(new MockRenderer(), doc);
- MultiSelect(editor);
editor.commands.addCommand({
name: 'insertfoo',
exec: function(ed) { ed.onPaste('foo'); },
@@ -167,7 +162,7 @@ module.exports = {
var selection = editor.selection;
var range1 = new Range(0,2,0,2);
var range2 = new Range(1,2,1,2);
- selection.fromOrientedRange(range1)
+ selection.fromOrientedRange(range1);
selection.addRange(range2);
editor.execCommand('insertfoo');
assert.equal('l1foo\nl2foo', editor.getValue());
@@ -176,14 +171,13 @@ module.exports = {
"test multiselect fromJSON/toJSON": function() {
var doc = new EditSession(["l1", "l2"]);
editor = new Editor(new MockRenderer(), doc);
- MultiSelect(editor);
var selection = editor.selection;
var before = selection.toJSON();
var range1 = new Range(0,2,0,2);
var range2 = new Range(1,2,1,2);
- selection.fromOrientedRange(range1)
+ selection.fromOrientedRange(range1);
selection.addRange(range2);
var after = selection.toJSON();
@@ -201,5 +195,5 @@ module.exports = {
});
if (typeof module !== "undefined" && module === require.main) {
- require("asyncjs").test.testcase(module.exports).exec()
+ require("asyncjs").test.testcase(module.exports).exec();
}
diff --git a/lib/ace/snippets/elixir.js b/lib/ace/snippets/elixir.js
new file mode 100644
index 00000000..359d9103
--- /dev/null
+++ b/lib/ace/snippets/elixir.js
@@ -0,0 +1,7 @@
+define(function(require, exports, module) {
+"use strict";
+
+exports.snippetText = require("../requirejs/text!./.snippets");
+exports.scope = "";
+
+});
diff --git a/lib/ace/snippets/elixir.snippets b/lib/ace/snippets/elixir.snippets
new file mode 100644
index 00000000..e69de29b
diff --git a/lib/ace/test/all_browser.js b/lib/ace/test/all_browser.js
index 3b7bf5d9..9b5742dd 100644
--- a/lib/ace/test/all_browser.js
+++ b/lib/ace/test/all_browser.js
@@ -43,6 +43,7 @@ var testNames = [
"ace/mode/folding/pythonic_test",
"ace/mode/folding/xml_test",
"ace/mode/folding/coffee_test",
+ "ace/mode/behaviour/behaviour_test",
"ace/multi_select_test",
"ace/mouse/mouse_handler_test",
"ace/occur_test",
{{title}}
-