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">
|
<div id="comments">
|
||||||
{{#each comments}}
|
{{#each comments}}
|
||||||
<h2><a href="/posts/{{../permalink}}#{{id}}">{{title}}</a></h2>
|
<h2><a href="/posts/{{../permalink}}#{{id}}">{{title}}</a></h2>
|
||||||
<div>{{body}}</div>
|
<div>{{{body}}}</div>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -342,29 +342,29 @@ var keymap = {
|
||||||
var editorProxy = new AceEmmetEditor();
|
var editorProxy = new AceEmmetEditor();
|
||||||
exports.commands = new HashHandler();
|
exports.commands = new HashHandler();
|
||||||
exports.runEmmetCommand = function(editor) {
|
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 {
|
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);
|
var result = actions.run(this.action, editorProxy);
|
||||||
} catch(e) {
|
} catch(e) {
|
||||||
editor._signal("changeStatus", typeof e == "string" ? e : e.message);
|
editor._signal("changeStatus", typeof e == "string" ? e : e.message);
|
||||||
|
|
@ -393,7 +393,7 @@ exports.updateCommands = function(editor, enabled) {
|
||||||
};
|
};
|
||||||
|
|
||||||
exports.isSupportedMode = function(modeId) {
|
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) {
|
var onChangeMode = function(e, target) {
|
||||||
|
|
@ -406,9 +406,8 @@ var onChangeMode = function(e, target) {
|
||||||
if (enabled) {
|
if (enabled) {
|
||||||
if (typeof emmetPath == "string") {
|
if (typeof emmetPath == "string") {
|
||||||
require("ace/config").loadModule(emmetPath, function() {
|
require("ace/config").loadModule(emmetPath, function() {
|
||||||
|
emmetPath = null;
|
||||||
});
|
});
|
||||||
emmetPath = null;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
exports.updateCommands(editor, enabled);
|
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.punctuation.tag-open.xml","<"],
|
||||||
["meta.tag.tag-name.xml","div"],
|
["meta.tag.tag-name.xml","div"],
|
||||||
["meta.tag.punctuation.tag-close.xml",">"],
|
["meta.tag.punctuation.tag-close.xml",">"],
|
||||||
["storage.type.start","{{"],
|
["support.function","{{{"],
|
||||||
["variable.parameter","body"],
|
["variable.parameter","body"],
|
||||||
["storage.type.end","}}"],
|
["support.function","}}}"],
|
||||||
["meta.tag.punctuation.end-tag-open.xml","</"],
|
["meta.tag.punctuation.end-tag-open.xml","</"],
|
||||||
["meta.tag.tag-name.xml","div"],
|
["meta.tag.tag-name.xml","div"],
|
||||||
["meta.tag.punctuation.tag-close.xml",">"]
|
["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"];
|
["text", "paren.rparen", "punctuation.operator", "comment"];
|
||||||
|
|
||||||
var context;
|
var context;
|
||||||
var contextCache = {}
|
var contextCache = {};
|
||||||
var initContext = function(editor) {
|
var initContext = function(editor) {
|
||||||
var id = -1;
|
var id = -1;
|
||||||
if (editor.multiSelect) {
|
if (editor.multiSelect) {
|
||||||
id = editor.selection.id;
|
id = editor.selection.index;
|
||||||
if (contextCache.rangeCount != editor.multiSelect.rangeCount)
|
if (contextCache.rangeCount != editor.multiSelect.rangeCount)
|
||||||
contextCache = {rangeCount: editor.multiSelect.rangeCount};
|
contextCache = {rangeCount: editor.multiSelect.rangeCount};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@ var Mode = function() {
|
||||||
oop.inherits(Mode, HtmlMode);
|
oop.inherits(Mode, HtmlMode);
|
||||||
|
|
||||||
(function() {
|
(function() {
|
||||||
|
this.blockComment = {start: "{!--", end: "--}"};
|
||||||
this.$id = "ace/mode/handlebars";
|
this.$id = "ace/mode/handlebars";
|
||||||
}).call(Mode.prototype);
|
}).call(Mode.prototype);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@ var HandlebarsHighlightRules = function() {
|
||||||
var hbs = {
|
var hbs = {
|
||||||
regex : "(?={{)",
|
regex : "(?={{)",
|
||||||
push : "handlebars"
|
push : "handlebars"
|
||||||
}
|
};
|
||||||
for (var key in this.$rules) {
|
for (var key in this.$rules) {
|
||||||
this.$rules[key].unshift(hbs);
|
this.$rules[key].unshift(hbs);
|
||||||
}
|
}
|
||||||
|
|
@ -40,22 +40,22 @@ var HandlebarsHighlightRules = function() {
|
||||||
defaultToken : "comment"
|
defaultToken : "comment"
|
||||||
}]
|
}]
|
||||||
}, {
|
}, {
|
||||||
token : "storage.type.start", // begin section
|
token : "support.function", // unescaped variable
|
||||||
regex : "{{[#\\^/&]?",
|
regex : "{{{",
|
||||||
push : [{
|
push : [{
|
||||||
token : "storage.type.end",
|
token : "support.function",
|
||||||
regex : "}}",
|
regex : "}}}",
|
||||||
next : pop2
|
next : pop2
|
||||||
}, {
|
}, {
|
||||||
token : "variable.parameter",
|
token : "variable.parameter",
|
||||||
regex : "[a-zA-Z_$][a-zA-Z0-9_$]*"
|
regex : "[a-zA-Z_$][a-zA-Z0-9_$]*"
|
||||||
}]
|
}]
|
||||||
}, {
|
}, {
|
||||||
token : "support.function", // unescaped variable
|
token : "storage.type.start", // begin section
|
||||||
regex : "{{{",
|
regex : "{{[#\\^/&]?",
|
||||||
push : [{
|
push : [{
|
||||||
token : "support.function",
|
token : "storage.type.end",
|
||||||
regex : "}}}",
|
regex : "}}",
|
||||||
next : pop2
|
next : pop2
|
||||||
}, {
|
}, {
|
||||||
token : "variable.parameter",
|
token : "variable.parameter",
|
||||||
|
|
|
||||||
|
|
@ -35,22 +35,22 @@ if (typeof process !== "undefined") {
|
||||||
define(function(require, exports, module) {
|
define(function(require, exports, module) {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
var EditSession = require("./edit_session").EditSession;
|
require("./multi_select");
|
||||||
var Editor = require("./editor").Editor;
|
|
||||||
var MockRenderer = require("./test/mockrenderer").MockRenderer;
|
|
||||||
var Range = require("./range").Range;
|
|
||||||
var assert = require("./test/assertions");
|
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 editor;
|
||||||
var exec = function(name, times, args) {
|
var exec = function(name, times, args) {
|
||||||
do {
|
do {
|
||||||
editor.commands.exec(name, editor, args);
|
editor.commands.exec(name, editor, args);
|
||||||
} while(times --> 1)
|
} while(times --> 1);
|
||||||
};
|
};
|
||||||
var testRanges = function(str) {
|
var testRanges = function(str) {
|
||||||
assert.equal(editor.selection.getAllRanges() + "", str + "");
|
assert.equal(editor.selection.getAllRanges() + "", str + "");
|
||||||
}
|
};
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
|
|
||||||
|
|
@ -63,7 +63,6 @@ module.exports = {
|
||||||
" wtt.w"
|
" wtt.w"
|
||||||
]);
|
]);
|
||||||
editor = new Editor(new MockRenderer(), doc);
|
editor = new Editor(new MockRenderer(), doc);
|
||||||
MultiSelect(editor);
|
|
||||||
|
|
||||||
editor.navigateFileEnd();
|
editor.navigateFileEnd();
|
||||||
exec("selectMoreBefore", 3);
|
exec("selectMoreBefore", 3);
|
||||||
|
|
@ -90,7 +89,6 @@ module.exports = {
|
||||||
" wtt.we"
|
" wtt.we"
|
||||||
]);
|
]);
|
||||||
editor = new Editor(new MockRenderer(), doc);
|
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]");
|
testRanges("Range: [0/0] -> [0/0],Range: [1/0] -> [1/0]");
|
||||||
|
|
@ -113,9 +111,8 @@ module.exports = {
|
||||||
" wtt.w"
|
" wtt.w"
|
||||||
]);
|
]);
|
||||||
editor = new Editor(new MockRenderer(), doc);
|
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]");
|
testRanges("Range: [0/0] -> [0/0],Range: [1/0] -> [1/0]");
|
||||||
assert.ok(editor.inMultiSelectMode);
|
assert.ok(editor.inMultiSelectMode);
|
||||||
|
|
||||||
|
|
@ -134,7 +131,6 @@ module.exports = {
|
||||||
" wtt.w"
|
" wtt.w"
|
||||||
]);
|
]);
|
||||||
editor = new Editor(new MockRenderer(), doc);
|
editor = new Editor(new MockRenderer(), doc);
|
||||||
MultiSelect(editor);
|
|
||||||
var selection = editor.selection;
|
var selection = editor.selection;
|
||||||
|
|
||||||
var range1 = new Range(0, 2, 0, 4);
|
var range1 = new Range(0, 2, 0, 4);
|
||||||
|
|
@ -158,7 +154,6 @@ module.exports = {
|
||||||
"test: onPaste in command with multiselect": function() {
|
"test: onPaste in command with multiselect": function() {
|
||||||
var doc = new EditSession(["l1", "l2"]);
|
var doc = new EditSession(["l1", "l2"]);
|
||||||
editor = new Editor(new MockRenderer(), doc);
|
editor = new Editor(new MockRenderer(), doc);
|
||||||
MultiSelect(editor);
|
|
||||||
editor.commands.addCommand({
|
editor.commands.addCommand({
|
||||||
name: 'insertfoo',
|
name: 'insertfoo',
|
||||||
exec: function(ed) { ed.onPaste('foo'); },
|
exec: function(ed) { ed.onPaste('foo'); },
|
||||||
|
|
@ -167,7 +162,7 @@ module.exports = {
|
||||||
var selection = editor.selection;
|
var selection = editor.selection;
|
||||||
var range1 = new Range(0,2,0,2);
|
var range1 = new Range(0,2,0,2);
|
||||||
var range2 = new Range(1,2,1,2);
|
var range2 = new Range(1,2,1,2);
|
||||||
selection.fromOrientedRange(range1)
|
selection.fromOrientedRange(range1);
|
||||||
selection.addRange(range2);
|
selection.addRange(range2);
|
||||||
editor.execCommand('insertfoo');
|
editor.execCommand('insertfoo');
|
||||||
assert.equal('l1foo\nl2foo', editor.getValue());
|
assert.equal('l1foo\nl2foo', editor.getValue());
|
||||||
|
|
@ -176,14 +171,13 @@ module.exports = {
|
||||||
"test multiselect fromJSON/toJSON": function() {
|
"test multiselect fromJSON/toJSON": function() {
|
||||||
var doc = new EditSession(["l1", "l2"]);
|
var doc = new EditSession(["l1", "l2"]);
|
||||||
editor = new Editor(new MockRenderer(), doc);
|
editor = new Editor(new MockRenderer(), doc);
|
||||||
MultiSelect(editor);
|
|
||||||
var selection = editor.selection;
|
var selection = editor.selection;
|
||||||
|
|
||||||
var before = selection.toJSON();
|
var before = selection.toJSON();
|
||||||
|
|
||||||
var range1 = new Range(0,2,0,2);
|
var range1 = new Range(0,2,0,2);
|
||||||
var range2 = new Range(1,2,1,2);
|
var range2 = new Range(1,2,1,2);
|
||||||
selection.fromOrientedRange(range1)
|
selection.fromOrientedRange(range1);
|
||||||
selection.addRange(range2);
|
selection.addRange(range2);
|
||||||
|
|
||||||
var after = selection.toJSON();
|
var after = selection.toJSON();
|
||||||
|
|
@ -201,5 +195,5 @@ module.exports = {
|
||||||
});
|
});
|
||||||
|
|
||||||
if (typeof module !== "undefined" && module === require.main) {
|
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/pythonic_test",
|
||||||
"ace/mode/folding/xml_test",
|
"ace/mode/folding/xml_test",
|
||||||
"ace/mode/folding/coffee_test",
|
"ace/mode/folding/coffee_test",
|
||||||
|
"ace/mode/behaviour/behaviour_test",
|
||||||
"ace/multi_select_test",
|
"ace/multi_select_test",
|
||||||
"ace/mouse/mouse_handler_test",
|
"ace/mouse/mouse_handler_test",
|
||||||
"ace/occur_test",
|
"ace/occur_test",
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue