Merge remote-tracking branch 'remotes/origin/mode_issues'
This commit is contained in:
commit
c4e937939a
13 changed files with 654 additions and 57 deletions
|
|
@ -3,6 +3,6 @@
|
|||
<div id="comments">
|
||||
{{#each comments}}
|
||||
<h2><a href="/posts/{{../permalink}}#{{id}}">{{title}}</a></h2>
|
||||
<div>{{body}}</div>
|
||||
<div>{{{body}}}</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
267
lib/ace/mode/_test/tokens_cirru.json
Normal file
267
lib/ace/mode/_test/tokens_cirru.json
Normal file
|
|
@ -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"]
|
||||
]]
|
||||
196
lib/ace/mode/_test/tokens_elixir.json
Normal file
196
lib/ace/mode/_test/tokens_elixir.json
Normal file
|
|
@ -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"]
|
||||
]]
|
||||
|
|
@ -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",">"]
|
||||
|
|
|
|||
133
lib/ace/mode/behaviour/behaviour_test.js
Normal file
133
lib/ace/mode/behaviour/behaviour_test.js
Normal file
|
|
@ -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();
|
||||
}
|
||||
|
|
@ -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};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ var Mode = function() {
|
|||
oop.inherits(Mode, HtmlMode);
|
||||
|
||||
(function() {
|
||||
|
||||
this.blockComment = {start: "{!--", end: "--}"};
|
||||
this.$id = "ace/mode/handlebars";
|
||||
}).call(Mode.prototype);
|
||||
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
|
|
|
|||
7
lib/ace/snippets/elixir.js
Normal file
7
lib/ace/snippets/elixir.js
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
define(function(require, exports, module) {
|
||||
"use strict";
|
||||
|
||||
exports.snippetText = require("../requirejs/text!./.snippets");
|
||||
exports.scope = "";
|
||||
|
||||
});
|
||||
0
lib/ace/snippets/elixir.snippets
Normal file
0
lib/ace/snippets/elixir.snippets
Normal file
|
|
@ -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",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue