refactor kitchen sink. Make it easier to add new
modes.
This commit is contained in:
parent
26a1af8778
commit
9aeb02597d
3 changed files with 291 additions and 375 deletions
562
demo/demo.js
562
demo/demo.js
|
|
@ -48,173 +48,218 @@ var Editor = require("ace/editor").Editor;
|
||||||
var Renderer = require("ace/virtual_renderer").VirtualRenderer;
|
var Renderer = require("ace/virtual_renderer").VirtualRenderer;
|
||||||
var theme = require("ace/theme/textmate");
|
var theme = require("ace/theme/textmate");
|
||||||
var EditSession = require("ace/edit_session").EditSession;
|
var EditSession = require("ace/edit_session").EditSession;
|
||||||
|
|
||||||
var JavaScriptMode = require("ace/mode/javascript").Mode;
|
|
||||||
var CssMode = require("ace/mode/css").Mode;
|
|
||||||
var ScssMode = require("ace/mode/scss").Mode;
|
|
||||||
var HtmlMode = require("ace/mode/html").Mode;
|
|
||||||
var XmlMode = require("ace/mode/xml").Mode;
|
|
||||||
var LuaMode = require("ace/mode/lua").Mode;
|
|
||||||
var PythonMode = require("ace/mode/python").Mode;
|
|
||||||
var PhpMode = require("ace/mode/php").Mode;
|
|
||||||
var ColdfusionMode = require("ace/mode/coldfusion").Mode;
|
|
||||||
var JavaMode = require("ace/mode/java").Mode;
|
|
||||||
var CSharpMode = require("ace/mode/csharp").Mode;
|
|
||||||
var RubyMode = require("ace/mode/ruby").Mode;
|
|
||||||
var CCPPMode = require("ace/mode/c_cpp").Mode;
|
|
||||||
var CoffeeMode = require("ace/mode/coffee").Mode;
|
|
||||||
var JsonMode = require("ace/mode/json").Mode;
|
|
||||||
var PerlMode = require("ace/mode/perl").Mode;
|
|
||||||
var ClojureMode = require("ace/mode/clojure").Mode;
|
|
||||||
var OcamlMode = require("ace/mode/ocaml").Mode;
|
|
||||||
var SvgMode = require("ace/mode/svg").Mode;
|
|
||||||
var MarkdownMode = require("ace/mode/markdown").Mode;
|
|
||||||
var TextileMode = require("ace/mode/textile").Mode;
|
|
||||||
var TextMode = require("ace/mode/text").Mode;
|
|
||||||
var GroovyMode = require("ace/mode/groovy").Mode;
|
|
||||||
var ScalaMode = require("ace/mode/scala").Mode;
|
|
||||||
var LatexMode = require("ace/mode/latex").Mode;
|
|
||||||
var PowershellMode = require("ace/mode/powershell").Mode;
|
|
||||||
var UndoManager = require("ace/undomanager").UndoManager;
|
var UndoManager = require("ace/undomanager").UndoManager;
|
||||||
|
|
||||||
var vim = require("ace/keyboard/keybinding/vim").Vim;
|
var vim = require("ace/keyboard/keybinding/vim").Vim;
|
||||||
var emacs = require("ace/keyboard/keybinding/emacs").Emacs;
|
var emacs = require("ace/keyboard/keybinding/emacs").Emacs;
|
||||||
var HashHandler = require("ace/keyboard/hash_handler").HashHandler;
|
var HashHandler = require("ace/keyboard/hash_handler").HashHandler;
|
||||||
|
|
||||||
|
|
||||||
|
var modesByName;
|
||||||
|
|
||||||
|
var Doc = function(name, desc, file) {
|
||||||
|
this.name = name;
|
||||||
|
this.desc = desc;
|
||||||
|
this.doc = new EditSession(file);
|
||||||
|
this.doc.setMode(modesByName[name].mode);
|
||||||
|
this.doc.setUndoManager(new UndoManager());
|
||||||
|
};
|
||||||
|
|
||||||
|
var WrappedDoc = function(name, desc, file) {
|
||||||
|
Doc.apply(this, arguments);
|
||||||
|
|
||||||
|
this.doc.setUseWrapMode(true);
|
||||||
|
this.doc.setWrapLimitRange(80, 80);
|
||||||
|
};
|
||||||
|
|
||||||
|
var Mode = function(name, desc, clazz, extensions) {
|
||||||
|
this.name = name;
|
||||||
|
this.desc = desc;
|
||||||
|
this.clazz = clazz;
|
||||||
|
this.mode = new clazz();
|
||||||
|
this.mode.name = name;
|
||||||
|
|
||||||
|
this.extRe = new RegExp("^.*\\.(" + extensions.join("|") + ")$", "g");
|
||||||
|
};
|
||||||
|
|
||||||
|
Mode.prototype.supportsFile = function(filename) {
|
||||||
|
return filename.match(this.extRe);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
exports.launch = function(env) {
|
exports.launch = function(env) {
|
||||||
|
|
||||||
var keybindings = {
|
var modes = [
|
||||||
// Null = use "default" keymapping
|
new Mode("javascript", "JavaScript", require("ace/mode/javascript").Mode, ["js"]),
|
||||||
ace: null,
|
new Mode("css", "CSS", require("ace/mode/css").Mode, ["css"]),
|
||||||
vim: vim,
|
new Mode("scss", "SCSS", require("ace/mode/scss").Mode, ["scss"]),
|
||||||
emacs: emacs,
|
new Mode("html", "HTML", require("ace/mode/html").Mode, ["html", "htm"]),
|
||||||
// This is a way to define simple keyboard remappings
|
new Mode("xml", "XML", require("ace/mode/xml").Mode, ["xml"]),
|
||||||
custom: new HashHandler({
|
new Mode("lua", "Lua", require("ace/mode/lua").Mode, ["lua"]),
|
||||||
"gotoright": "Tab",
|
new Mode("python", "Python", require("ace/mode/python").Mode, ["py"]),
|
||||||
"indent": "]",
|
new Mode("php", "PHP",require("ace/mode/php").Mode, ["php"]),
|
||||||
"outdent": "[",
|
new Mode("coldfusion", "ColdFusion", require("ace/mode/coldfusion").Mode, ["cfm"]),
|
||||||
"gotolinestart": "^",
|
new Mode("java", "Java", require("ace/mode/java").Mode, ["java"]),
|
||||||
"gotolineend": "$"
|
new Mode("csharp", "C#", require("ace/mode/csharp").Mode, ["cs"]),
|
||||||
})
|
new Mode("ruby", "Ruby", require("ace/mode/ruby").Mode, ["rb"]),
|
||||||
}
|
new Mode("c_cpp", "C/C++", require("ace/mode/c_cpp").Mode, ["c", "cpp", "cxx", "h", "hpp"]),
|
||||||
|
new Mode("coffee", "CoffeeScript", require("ace/mode/coffee").Mode, ["coffee"]),
|
||||||
var docs = {};
|
new Mode("json", "JSON", require("ace/mode/json").Mode, ["json"]),
|
||||||
|
new Mode("perl", "Perl", require("ace/mode/perl").Mode, ["pl", "pm"]),
|
||||||
// Make the lorem ipsum text a little bit longer.
|
new Mode("clojure", "Clojure", require("ace/mode/clojure").Mode, ["clj"]),
|
||||||
|
new Mode("ocaml", "OCaml", require("ace/mode/ocaml").Mode, ["ml", "mli"]),
|
||||||
|
new Mode("svg", "SVG", require("ace/mode/SVG").Mode, ["svg"]),
|
||||||
|
new Mode("markdown", "MarkDown", require("ace/mode/markdown").Mode, ["md", "markdown"]),
|
||||||
|
new Mode("textile", "Textile", require("ace/mode/textile").Mode, ["textile"]),
|
||||||
|
new Mode("text", "Text", require("ace/mode/text").Mode, ["txt"]),
|
||||||
|
new Mode("groovy", "Groovy", require("ace/mode/groovy").Mode, ["groovy"]),
|
||||||
|
new Mode("scala", "Scala", require("ace/mode/scala").Mode, ["scala"]),
|
||||||
|
new Mode("latex", "LaTeX", require("ace/mode/latex").Mode, ["tex"]),
|
||||||
|
new Mode("powershell", "Powershell", require("ace/mode/powershell").Mode, ["ps1"])
|
||||||
|
];
|
||||||
|
|
||||||
|
modesByName = {};
|
||||||
|
modes.forEach(function(m) {
|
||||||
|
modesByName[m.name] = m;
|
||||||
|
});
|
||||||
|
|
||||||
var loreIpsum = require("ace/requirejs/text!demo/docs/plaintext.txt");
|
var loreIpsum = require("ace/requirejs/text!demo/docs/plaintext.txt");
|
||||||
for (var i = 0; i < 5; i++) {
|
for (var i = 0; i < 5; i++) {
|
||||||
loreIpsum += loreIpsum;
|
loreIpsum += loreIpsum;
|
||||||
}
|
}
|
||||||
docs.plain = new EditSession(loreIpsum);
|
|
||||||
docs.plain.setUseWrapMode(true);
|
|
||||||
docs.plain.setWrapLimitRange(80, 80)
|
|
||||||
docs.plain.setMode(new TextMode());
|
|
||||||
docs.plain.setUndoManager(new UndoManager());
|
|
||||||
|
|
||||||
docs.js = new EditSession(require("ace/requirejs/text!demo/docs/javascript.js"));
|
|
||||||
docs.js.setMode(new JavaScriptMode());
|
|
||||||
docs.js.setUndoManager(new UndoManager());
|
|
||||||
|
|
||||||
docs.css = new EditSession(require("ace/requirejs/text!demo/docs/css.css"));
|
|
||||||
docs.css.setMode(new CssMode());
|
|
||||||
docs.css.setUndoManager(new UndoManager());
|
|
||||||
|
|
||||||
docs.scss = new EditSession(require("ace/requirejs/text!demo/docs/scss.scss"));
|
|
||||||
docs.scss.setMode(new ScssMode());
|
|
||||||
docs.scss.setUndoManager(new UndoManager());
|
|
||||||
|
|
||||||
docs.html = new EditSession(require("ace/requirejs/text!demo/docs/html.html"));
|
|
||||||
docs.html.setMode(new HtmlMode());
|
|
||||||
docs.html.setUndoManager(new UndoManager());
|
|
||||||
|
|
||||||
docs.lua = new EditSession(require("ace/requirejs/text!demo/docs/lua.lua"));
|
|
||||||
docs.lua.setMode(new LuaMode());
|
|
||||||
docs.lua.setUndoManager(new UndoManager());
|
|
||||||
|
|
||||||
docs.python = new EditSession(require("ace/requirejs/text!demo/docs/python.py"));
|
|
||||||
docs.python.setMode(new PythonMode());
|
|
||||||
docs.python.setUndoManager(new UndoManager());
|
|
||||||
|
|
||||||
|
|
||||||
docs.php = new EditSession(require("ace/requirejs/text!demo/docs/php.php"));
|
|
||||||
docs.php.setMode(new PhpMode());
|
|
||||||
docs.php.setUndoManager(new UndoManager());
|
|
||||||
|
|
||||||
docs.coldfusion = new EditSession(require("ace/requirejs/text!demo/docs/coldfusion.cfm"));
|
var docs = [
|
||||||
docs.coldfusion.setMode(new ColdfusionMode());
|
new Doc(
|
||||||
docs.coldfusion.setUndoManager(new UndoManager());
|
"javascript", "JavaScript",
|
||||||
|
require("ace/requirejs/text!demo/docs/javascript.js")
|
||||||
docs.java = new EditSession(require("ace/requirejs/text!demo/docs/java.java"));
|
),
|
||||||
docs.java.setMode(new JavaMode());
|
new WrappedDoc("text", "Plain Text", loreIpsum),
|
||||||
docs.java.setUndoManager(new UndoManager());
|
new Doc(
|
||||||
docs.java.addFold("...", new Range(8, 44, 13, 4));
|
"css", "CSS",
|
||||||
|
require("ace/requirejs/text!demo/docs/css.css")
|
||||||
docs.ruby = new EditSession(require("ace/requirejs/text!demo/docs/ruby.rb"));
|
),
|
||||||
docs.ruby.setMode(new RubyMode());
|
new Doc(
|
||||||
docs.ruby.setUndoManager(new UndoManager());
|
"scss", "SCSS",
|
||||||
|
require("ace/requirejs/text!demo/docs/scss.scss")
|
||||||
docs.csharp = new EditSession(require("ace/requirejs/text!demo/docs/csharp.cs"));
|
),
|
||||||
docs.csharp.setMode(new CSharpMode());
|
new Doc(
|
||||||
docs.csharp.setUndoManager(new UndoManager());
|
"html", "HTML",
|
||||||
|
require("ace/requirejs/text!demo/docs/html.html")
|
||||||
docs.c_cpp = new EditSession(require("ace/requirejs/text!demo/docs/cpp.cpp"));
|
),
|
||||||
docs.c_cpp.setMode(new CCPPMode());
|
new Doc(
|
||||||
docs.c_cpp.setUndoManager(new UndoManager());
|
"xml", "XML",
|
||||||
|
require("ace/requirejs/text!demo/docs/xml.xml")
|
||||||
docs.coffee = new EditSession(require("ace/requirejs/text!demo/docs/coffeescript.coffee"));
|
),
|
||||||
docs.coffee.setMode(new CoffeeMode());
|
new Doc(
|
||||||
docs.coffee.setUndoManager(new UndoManager());
|
"lua", "Lua",
|
||||||
|
require("ace/requirejs/text!demo/docs/lua.lua")
|
||||||
docs.json = new EditSession(require("ace/requirejs/text!demo/docs/json.json"));
|
),
|
||||||
docs.json.setMode(new JsonMode());
|
new Doc(
|
||||||
docs.json.setUndoManager(new UndoManager());
|
"python", "Python",
|
||||||
|
require("ace/requirejs/text!demo/docs/python.py")
|
||||||
docs.perl = new EditSession(require("ace/requirejs/text!demo/docs/perl.pl"));
|
),
|
||||||
docs.perl.setMode(new PerlMode());
|
new Doc(
|
||||||
docs.perl.setUndoManager(new UndoManager());
|
"php", "PHP",
|
||||||
|
require("ace/requirejs/text!demo/docs/javascript.js")
|
||||||
docs.clojure = new EditSession(require("ace/requirejs/text!demo/docs/clojure.clj"));
|
),
|
||||||
docs.clojure.setMode(new ClojureMode());
|
new Doc(
|
||||||
docs.clojure.setUndoManager(new UndoManager());
|
"coldfusion", "ColdFusion",
|
||||||
|
require("ace/requirejs/text!demo/docs/coldfusion.cfm")
|
||||||
docs.ocaml = new EditSession(require("ace/requirejs/text!demo/docs/ocaml.ml"));
|
),
|
||||||
docs.ocaml.setMode(new OcamlMode());
|
new Doc(
|
||||||
docs.ocaml.setUndoManager(new UndoManager());
|
"java", "Java",
|
||||||
|
require("ace/requirejs/text!demo/docs/java.java")
|
||||||
docs.svg = new EditSession(require("ace/requirejs/text!demo/docs/svg.svg"));
|
),
|
||||||
docs.svg.setMode(new SvgMode());
|
new Doc(
|
||||||
docs.svg.setUndoManager(new UndoManager());
|
"ruby", "Ruby",
|
||||||
|
require("ace/requirejs/text!demo/docs/ruby.rb")
|
||||||
docs.markdown = new EditSession(require("ace/requirejs/text!demo/docs/markdown.md"));
|
),
|
||||||
docs.markdown.setMode(new MarkdownMode());
|
new Doc(
|
||||||
docs.markdown.setUseWrapMode(true);
|
"csharp", "C#",
|
||||||
docs.markdown.setWrapLimitRange(80, 80);
|
require("ace/requirejs/text!demo/docs/csharp.cs")
|
||||||
docs.markdown.setUndoManager(new UndoManager());
|
),
|
||||||
|
new Doc(
|
||||||
|
"csharp", "C#",
|
||||||
|
require("ace/requirejs/text!demo/docs/csharp.cs")
|
||||||
|
),
|
||||||
|
new Doc(
|
||||||
|
"c_cpp", "C/C++",
|
||||||
|
require("ace/requirejs/text!demo/docs/cpp.cpp")
|
||||||
|
),
|
||||||
|
new Doc(
|
||||||
|
"coffee", "Coffeescript",
|
||||||
|
require("ace/requirejs/text!demo/docs/coffeescript.coffee")
|
||||||
|
),
|
||||||
|
new Doc(
|
||||||
|
"json", "JSON",
|
||||||
|
require("ace/requirejs/text!demo/docs/json.json")
|
||||||
|
),
|
||||||
|
new Doc(
|
||||||
|
"perl", "Perl",
|
||||||
|
require("ace/requirejs/text!demo/docs/perl.pl")
|
||||||
|
),
|
||||||
|
new Doc(
|
||||||
|
"clojure", "Clojure",
|
||||||
|
require("ace/requirejs/text!demo/docs/clojure.clj")
|
||||||
|
),
|
||||||
|
new Doc(
|
||||||
|
"ocaml", "OCaml",
|
||||||
|
require("ace/requirejs/text!demo/docs/ocaml.ml")
|
||||||
|
),
|
||||||
|
new Doc(
|
||||||
|
"svg", "SVG",
|
||||||
|
require("ace/requirejs/text!demo/docs/svg.svg")
|
||||||
|
),
|
||||||
|
new Doc(
|
||||||
|
"markdown", "Markdown",
|
||||||
|
require("ace/requirejs/text!demo/docs/markdown.md")
|
||||||
|
),
|
||||||
|
new WrappedDoc(
|
||||||
|
"markdown", "Markdown",
|
||||||
|
require("ace/requirejs/text!demo/docs/markdown.md")
|
||||||
|
),
|
||||||
|
new WrappedDoc(
|
||||||
|
"textile", "Textile",
|
||||||
|
require("ace/requirejs/text!demo/docs/textile.textile")
|
||||||
|
),
|
||||||
|
new Doc(
|
||||||
|
"groovy", "Groovy",
|
||||||
|
require("ace/requirejs/text!demo/docs/groovy.groovy")
|
||||||
|
),
|
||||||
|
new Doc(
|
||||||
|
"scala", "Scala",
|
||||||
|
require("ace/requirejs/text!demo/docs/scala.scala")
|
||||||
|
),
|
||||||
|
new WrappedDoc(
|
||||||
|
"latex", "LaTeX",
|
||||||
|
require("ace/requirejs/text!demo/docs/latex.tex")
|
||||||
|
),
|
||||||
|
new Doc(
|
||||||
|
"powershell", "Powershell",
|
||||||
|
require("ace/requirejs/text!demo/docs/powershell.ps1")
|
||||||
|
)
|
||||||
|
];
|
||||||
|
|
||||||
docs.textile = new EditSession(require("ace/requirejs/text!demo/docs/textile.textile"));
|
var docsByName = {};
|
||||||
docs.textile.setMode(new TextileMode());
|
docs.forEach(function(d) {
|
||||||
docs.textile.setUndoManager(new UndoManager());
|
docsByName[d.name] = d;
|
||||||
|
});
|
||||||
docs.groovy = new EditSession(require("ace/requirejs/text!demo/docs/groovy.groovy"));
|
|
||||||
docs.groovy.setMode(new GroovyMode());
|
var keybindings = {
|
||||||
docs.groovy.setUndoManager(new UndoManager());
|
// Null = use "default" keymapping
|
||||||
|
ace: null,
|
||||||
docs.scala = new EditSession(require("ace/requirejs/text!demo/docs/scala.scala"));
|
vim: vim,
|
||||||
docs.scala.setMode(new ScalaMode());
|
emacs: emacs,
|
||||||
docs.scala.setUndoManager(new UndoManager());
|
// This is a way to define simple keyboard remappings
|
||||||
|
custom: new HashHandler({
|
||||||
docs.latex = new EditSession(require("ace/requirejs/text!demo/docs/latex.tex"));
|
"gotoright": "Tab",
|
||||||
docs.latex.setMode(new LatexMode());
|
"indent": "]",
|
||||||
docs.latex.setUndoManager(new UndoManager());
|
"outdent": "[",
|
||||||
|
"gotolinestart": "^",
|
||||||
docs.powershell = new EditSession(require("ace/requirejs/text!demo/docs/powershell.ps1"));
|
"gotolineend": "$"
|
||||||
docs.powershell.setMode(new PowershellMode());
|
})
|
||||||
docs.powershell.setUndoManager(new UndoManager());
|
};
|
||||||
|
|
||||||
// Add a "name" property to all docs
|
|
||||||
for (var doc in docs) {
|
|
||||||
docs[doc].name = doc;
|
|
||||||
}
|
|
||||||
|
|
||||||
var container = document.getElementById("editor");
|
var container = document.getElementById("editor");
|
||||||
var cockpitInput = document.getElementById("cockpitInput");
|
var cockpitInput = document.getElementById("cockpitInput");
|
||||||
|
|
@ -231,39 +276,6 @@ exports.launch = function(env) {
|
||||||
window.env = env;
|
window.env = env;
|
||||||
window.ace = env.editor;
|
window.ace = env.editor;
|
||||||
|
|
||||||
var modes = {
|
|
||||||
text: new TextMode(),
|
|
||||||
textile: new TextileMode(),
|
|
||||||
markdown: new MarkdownMode(),
|
|
||||||
svg: new SvgMode(),
|
|
||||||
xml: new XmlMode(),
|
|
||||||
html: new HtmlMode(),
|
|
||||||
css: new CssMode(),
|
|
||||||
scss: new ScssMode(),
|
|
||||||
javascript: new JavaScriptMode(),
|
|
||||||
lua: new LuaMode(),
|
|
||||||
python: new PythonMode(),
|
|
||||||
php: new PhpMode(),
|
|
||||||
coldfusion: new ColdfusionMode(),
|
|
||||||
java: new JavaMode(),
|
|
||||||
ruby: new RubyMode(),
|
|
||||||
c_cpp: new CCPPMode(),
|
|
||||||
coffee: new CoffeeMode(),
|
|
||||||
json: new JsonMode(),
|
|
||||||
perl: new PerlMode(),
|
|
||||||
clojure: new ClojureMode(),
|
|
||||||
ocaml: new OcamlMode(),
|
|
||||||
csharp: new CSharpMode(),
|
|
||||||
groovy: new GroovyMode(),
|
|
||||||
scala: new ScalaMode(),
|
|
||||||
latex: new LatexMode(),
|
|
||||||
powershell: new PowershellMode()
|
|
||||||
};
|
|
||||||
|
|
||||||
function getMode() {
|
|
||||||
return modes[modeEl.value];
|
|
||||||
}
|
|
||||||
|
|
||||||
var docEl = document.getElementById("doc");
|
var docEl = document.getElementById("doc");
|
||||||
var modeEl = document.getElementById("mode");
|
var modeEl = document.getElementById("mode");
|
||||||
var wrapModeEl = document.getElementById("soft_wrap");
|
var wrapModeEl = document.getElementById("soft_wrap");
|
||||||
|
|
@ -278,8 +290,22 @@ exports.launch = function(env) {
|
||||||
var softTabEl = document.getElementById("soft_tab");
|
var softTabEl = document.getElementById("soft_tab");
|
||||||
var behavioursEl = document.getElementById("enable_behaviours");
|
var behavioursEl = document.getElementById("enable_behaviours");
|
||||||
|
|
||||||
|
docs.forEach(function(doc) {
|
||||||
|
var option = document.createElement("option");
|
||||||
|
option.setAttribute("value", doc.name);
|
||||||
|
option.innerHTML = doc.desc;
|
||||||
|
docEl.appendChild(option);
|
||||||
|
});
|
||||||
|
|
||||||
|
modes.forEach(function(mode) {
|
||||||
|
var option = document.createElement("option");
|
||||||
|
option.setAttribute("value", mode.name);
|
||||||
|
option.innerHTML = mode.desc;
|
||||||
|
modeEl.appendChild(option);
|
||||||
|
});
|
||||||
|
|
||||||
bindDropdown("doc", function(value) {
|
bindDropdown("doc", function(value) {
|
||||||
var doc = docs[value];
|
var doc = docsByName[value].doc;
|
||||||
var session = env.split.setSession(doc);
|
var session = env.split.setSession(doc);
|
||||||
session.name = doc.name;
|
session.name = doc.name;
|
||||||
|
|
||||||
|
|
@ -293,86 +319,7 @@ exports.launch = function(env) {
|
||||||
var session = editor.session;
|
var session = editor.session;
|
||||||
|
|
||||||
docEl.value = session.name;
|
docEl.value = session.name;
|
||||||
|
modeEl.value = session.getMode().name || "text";
|
||||||
var mode = session.getMode();
|
|
||||||
if (mode instanceof JavaScriptMode) {
|
|
||||||
modeEl.value = "javascript";
|
|
||||||
}
|
|
||||||
else if (mode instanceof CssMode) {
|
|
||||||
modeEl.value = "css";
|
|
||||||
}
|
|
||||||
else if (mode instanceof ScssMode) {
|
|
||||||
modeEl.value = "scss";
|
|
||||||
}
|
|
||||||
else if (mode instanceof HtmlMode) {
|
|
||||||
modeEl.value = "html";
|
|
||||||
}
|
|
||||||
else if (mode instanceof XmlMode) {
|
|
||||||
modeEl.value = "xml";
|
|
||||||
}
|
|
||||||
else if (mode instanceof LuaMode){
|
|
||||||
modeEl.value = "lua";
|
|
||||||
}
|
|
||||||
else if (mode instanceof PythonMode) {
|
|
||||||
modeEl.value = "python";
|
|
||||||
}
|
|
||||||
else if (mode instanceof PhpMode) {
|
|
||||||
modeEl.value = "php";
|
|
||||||
}
|
|
||||||
else if (mode instanceof ColdfusionMode) {
|
|
||||||
modeEl.value = "coldfusion";
|
|
||||||
}
|
|
||||||
else if (mode instanceof JavaMode) {
|
|
||||||
modeEl.value = "java";
|
|
||||||
}
|
|
||||||
else if (mode instanceof RubyMode) {
|
|
||||||
modeEl.value = "ruby";
|
|
||||||
}
|
|
||||||
else if (mode instanceof CCPPMode) {
|
|
||||||
modeEl.value = "c_cpp";
|
|
||||||
}
|
|
||||||
else if (mode instanceof CoffeeMode) {
|
|
||||||
modeEl.value = "coffee";
|
|
||||||
}
|
|
||||||
else if (mode instanceof JsonMode) {
|
|
||||||
modeEl.value = "json";
|
|
||||||
}
|
|
||||||
else if (mode instanceof PerlMode) {
|
|
||||||
modeEl.value = "perl";
|
|
||||||
}
|
|
||||||
else if (mode instanceof ClojureMode) {
|
|
||||||
modeEl.value = "clojure";
|
|
||||||
}
|
|
||||||
else if (mode instanceof OcamlMode) {
|
|
||||||
modeEl.value = "ocaml";
|
|
||||||
}
|
|
||||||
else if (mode instanceof CSharpMode) {
|
|
||||||
modeEl.value = "csharp";
|
|
||||||
}
|
|
||||||
else if (mode instanceof SvgMode) {
|
|
||||||
modeEl.value = "svg";
|
|
||||||
}
|
|
||||||
else if (mode instanceof MarkdownMode) {
|
|
||||||
modeEl.value = "markdown";
|
|
||||||
}
|
|
||||||
else if (mode instanceof TextileMode) {
|
|
||||||
modeEl.value = "textile";
|
|
||||||
}
|
|
||||||
else if (mode instanceof GroovyMode) {
|
|
||||||
modeEl.value = "groovy";
|
|
||||||
}
|
|
||||||
else if (mode instanceof ScalaMode) {
|
|
||||||
modeEl.value = "scala";
|
|
||||||
}
|
|
||||||
else if (mode instanceof LatexMode) {
|
|
||||||
modeEl.value = "latex";
|
|
||||||
}
|
|
||||||
else if (mode instanceof PowershellMode) {
|
|
||||||
modeEl.value = "powershell";
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
modeEl.value = "text";
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!session.getUseWrapMode()) {
|
if (!session.getUseWrapMode()) {
|
||||||
wrapModeEl.value = "off";
|
wrapModeEl.value = "off";
|
||||||
|
|
@ -380,7 +327,7 @@ exports.launch = function(env) {
|
||||||
wrapModeEl.value = session.getWrapLimitRange().min || "free";
|
wrapModeEl.value = session.getWrapLimitRange().min || "free";
|
||||||
}
|
}
|
||||||
|
|
||||||
selectStyleEl.checked = editor.getSelectionStyle() == "line"
|
selectStyleEl.checked = editor.getSelectionStyle() == "line";
|
||||||
themeEl.value = editor.getTheme();
|
themeEl.value = editor.getTheme();
|
||||||
highlightActiveEl.checked = editor.getHighlightActiveLine();
|
highlightActiveEl.checked = editor.getHighlightActiveLine();
|
||||||
showHiddenEl.checked = editor.getShowInvisibles();
|
showHiddenEl.checked = editor.getShowInvisibles();
|
||||||
|
|
@ -389,11 +336,11 @@ exports.launch = function(env) {
|
||||||
highlightSelectedWordE.checked = editor.getHighlightSelectedWord();
|
highlightSelectedWordE.checked = editor.getHighlightSelectedWord();
|
||||||
showHScrollEl.checked = editor.renderer.getHScrollBarAlwaysVisible();
|
showHScrollEl.checked = editor.renderer.getHScrollBarAlwaysVisible();
|
||||||
softTabEl.checked = session.getUseSoftTabs();
|
softTabEl.checked = session.getUseSoftTabs();
|
||||||
behavioursEl.checked = editor.getBehavioursEnabled()
|
behavioursEl.checked = editor.getBehavioursEnabled();
|
||||||
}
|
}
|
||||||
|
|
||||||
bindDropdown("mode", function(value) {
|
bindDropdown("mode", function(value) {
|
||||||
env.editor.getSession().setMode(modes[value] || modes.text);
|
env.editor.getSession().setMode(modesByName[value].mode || modesByName.text.mode);
|
||||||
});
|
});
|
||||||
|
|
||||||
bindDropdown("theme", function(value) {
|
bindDropdown("theme", function(value) {
|
||||||
|
|
@ -527,20 +474,20 @@ exports.launch = function(env) {
|
||||||
container.style.height = document.documentElement.clientHeight + "px";
|
container.style.height = document.documentElement.clientHeight + "px";
|
||||||
env.split.resize();
|
env.split.resize();
|
||||||
// env.editor.resize();
|
// env.editor.resize();
|
||||||
};
|
}
|
||||||
|
|
||||||
window.onresize = onResize;
|
window.onresize = onResize;
|
||||||
env.editor.renderer.onResize(true)
|
env.editor.renderer.onResize(true);
|
||||||
|
|
||||||
event.addListener(container, "dragover", function(e) {
|
event.addListener(container, "dragover", function(e) {
|
||||||
return event.preventDefault(e);
|
return event.preventDefault(e);
|
||||||
});
|
});
|
||||||
|
|
||||||
event.addListener(container, "drop", function(e) {
|
event.addListener(container, "drop", function(e) {
|
||||||
var file
|
var file;
|
||||||
try {
|
try {
|
||||||
file = e.dataTransfer.files[0];
|
file = e.dataTransfer.files[0];
|
||||||
} catch(e) {
|
} catch(err) {
|
||||||
return event.stopEvent();
|
return event.stopEvent();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -549,51 +496,18 @@ exports.launch = function(env) {
|
||||||
reader.onload = function(e) {
|
reader.onload = function(e) {
|
||||||
env.editor.getSelection().selectAll();
|
env.editor.getSelection().selectAll();
|
||||||
|
|
||||||
var mode = "text";
|
var mode = modesByName.text;
|
||||||
if (/^.*\.js$/i.test(file.name)) {
|
for (var i = 0; i < modes.length; i++) {
|
||||||
mode = "javascript";
|
if (modes[i].supportsFile(file.name)) {
|
||||||
} else if (/^.*\.xml$/i.test(file.name)) {
|
mode = modes[i];
|
||||||
mode = "xml";
|
break;
|
||||||
} else if (/^.*\.html$/i.test(file.name)) {
|
}
|
||||||
mode = "html";
|
|
||||||
} else if (/^.*\.css$/i.test(file.name)) {
|
|
||||||
mode = "css";
|
|
||||||
} else if (/^.*\.scss$/i.test(file.name)) {
|
|
||||||
mode = "scss";
|
|
||||||
} else if (/^.*\.lua$/i.test(file.name)) {
|
|
||||||
mode = "lua";
|
|
||||||
} else if (/^.*\.py$/i.test(file.name)) {
|
|
||||||
mode = "python";
|
|
||||||
} else if (/^.*\.php$/i.test(file.name)) {
|
|
||||||
mode = "php";
|
|
||||||
} else if (/^.*\.cfm$/i.test(file.name)) {
|
|
||||||
mode = "coldfusion";
|
|
||||||
} else if (/^.*\.cs$/i.test(file.name)) {
|
|
||||||
mode = "csharp";
|
|
||||||
} else if (/^.*\.java$/i.test(file.name)) {
|
|
||||||
mode = "java";
|
|
||||||
} else if (/^.*\.rb$/i.test(file.name)) {
|
|
||||||
mode = "ruby";
|
|
||||||
} else if (/^.*\.(c|cpp|h|hpp|cxx)$/i.test(file.name)) {
|
|
||||||
mode = "c_cpp";
|
|
||||||
} else if (/^.*\.coffee$/i.test(file.name)) {
|
|
||||||
mode = "coffee";
|
|
||||||
} else if (/^.*\.json$/i.test(file.name)) {
|
|
||||||
mode = "json";
|
|
||||||
} else if (/^.*\.(pl|pm)$/i.test(file.name)) {
|
|
||||||
mode = "perl";
|
|
||||||
} else if (/^.*\.(ml|mli)$/i.test(file.name)) {
|
|
||||||
mode = "ocaml";
|
|
||||||
} else if (/^.*\.(groovy)$/i.test(file.name)) {
|
|
||||||
mode = "groovy";
|
|
||||||
} else if (/^.*\.(scala)$/i.test(file.name)) {
|
|
||||||
mode = "scala";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
env.editor.onTextInput(reader.result);
|
env.editor.onTextInput(reader.result);
|
||||||
|
|
||||||
modeEl.value = mode;
|
modeEl.value = mode.name;
|
||||||
env.editor.getSession().setMode(modes[mode]);
|
env.editor.getSession().setMode(mode.mode);
|
||||||
};
|
};
|
||||||
reader.readAsText(file);
|
reader.readAsText(file);
|
||||||
}
|
}
|
||||||
|
|
@ -601,8 +515,6 @@ exports.launch = function(env) {
|
||||||
return event.preventDefault(e);
|
return event.preventDefault(e);
|
||||||
});
|
});
|
||||||
|
|
||||||
window.env = env;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This demonstrates how you can define commands and bind shortcuts to them.
|
* This demonstrates how you can define commands and bind shortcuts to them.
|
||||||
*/
|
*/
|
||||||
|
|
@ -647,7 +559,7 @@ exports.launch = function(env) {
|
||||||
sender: "editor"
|
sender: "editor"
|
||||||
},
|
},
|
||||||
exec: function(env) {
|
exec: function(env) {
|
||||||
toggleFold(env, false)
|
toggleFold(env, false);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -659,7 +571,7 @@ exports.launch = function(env) {
|
||||||
sender: "editor"
|
sender: "editor"
|
||||||
},
|
},
|
||||||
exec: function(env) {
|
exec: function(env) {
|
||||||
toggleFold(env, true)
|
toggleFold(env, true);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -678,7 +590,7 @@ exports.launch = function(env) {
|
||||||
c += token.value.length;
|
c += token.value.length;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
};
|
}
|
||||||
|
|
||||||
function toggleFold(env, tryToUnfold) {
|
function toggleFold(env, tryToUnfold) {
|
||||||
var session = env.editor.session;
|
var session = env.editor.session;
|
||||||
|
|
@ -693,7 +605,7 @@ exports.launch = function(env) {
|
||||||
|
|
||||||
if (fold) {
|
if (fold) {
|
||||||
session.expandFold(fold);
|
session.expandFold(fold);
|
||||||
selection.setSelectionRange(fold.range)
|
selection.setSelectionRange(fold.range);
|
||||||
} else if (br) {
|
} else if (br) {
|
||||||
if (range.compare(br.row, br.column) == 1)
|
if (range.compare(br.row, br.column) == 1)
|
||||||
range.end = br;
|
range.end = br;
|
||||||
|
|
@ -732,15 +644,13 @@ exports.launch = function(env) {
|
||||||
|
|
||||||
var themes = {};
|
var themes = {};
|
||||||
function loadTheme(name, callback) {
|
function loadTheme(name, callback) {
|
||||||
if (themes[name]) {
|
if (themes[name])
|
||||||
callback();
|
return callback();
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
themes[name] = 1;
|
themes[name] = 1;
|
||||||
var base = name.split("/").pop();
|
var base = name.split("/").pop();
|
||||||
var fileName = "src/theme-" + base + ".js";
|
var fileName = "src/theme-" + base + ".js";
|
||||||
net.loadScript(fileName, callback)
|
net.loadScript(fileName, callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
|
||||||
55
demo/docs/xml.xml
Normal file
55
demo/docs/xml.xml
Normal file
|
|
@ -0,0 +1,55 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<query xmlns:yahoo="http://www.yahooapis.com/v1/base.rng"
|
||||||
|
yahoo:count="7" yahoo:created="2011-10-11T08:40:23Z" yahoo:lang="en-US">
|
||||||
|
<diagnostics>
|
||||||
|
<publiclyCallable>true</publiclyCallable>
|
||||||
|
<url execution-start-time="0" execution-stop-time="25" execution-time="25"><![CDATA[http://where.yahooapis.com/v1/continents;start=0;count=10]]></url>
|
||||||
|
<user-time>26</user-time>
|
||||||
|
<service-time>25</service-time>
|
||||||
|
<build-version>21978</build-version>
|
||||||
|
</diagnostics>
|
||||||
|
<results>
|
||||||
|
<place xmlns="http://where.yahooapis.com/v1/schema.rng"
|
||||||
|
xml:lang="en-US" yahoo:uri="http://where.yahooapis.com/v1/place/24865670">
|
||||||
|
<woeid>24865670</woeid>
|
||||||
|
<placeTypeName code="29">Continent</placeTypeName>
|
||||||
|
<name>Africa</name>
|
||||||
|
</place>
|
||||||
|
<place xmlns="http://where.yahooapis.com/v1/schema.rng"
|
||||||
|
xml:lang="en-US" yahoo:uri="http://where.yahooapis.com/v1/place/24865675">
|
||||||
|
<woeid>24865675</woeid>
|
||||||
|
<placeTypeName code="29">Continent</placeTypeName>
|
||||||
|
<name>Europe</name>
|
||||||
|
</place>
|
||||||
|
<place xmlns="http://where.yahooapis.com/v1/schema.rng"
|
||||||
|
xml:lang="en-US" yahoo:uri="http://where.yahooapis.com/v1/place/24865673">
|
||||||
|
<woeid>24865673</woeid>
|
||||||
|
<placeTypeName code="29">Continent</placeTypeName>
|
||||||
|
<name>South America</name>
|
||||||
|
</place>
|
||||||
|
<place xmlns="http://where.yahooapis.com/v1/schema.rng"
|
||||||
|
xml:lang="en-US" yahoo:uri="http://where.yahooapis.com/v1/place/28289421">
|
||||||
|
<woeid>28289421</woeid>
|
||||||
|
<placeTypeName code="29">Continent</placeTypeName>
|
||||||
|
<name>Antarctic</name>
|
||||||
|
</place>
|
||||||
|
<place xmlns="http://where.yahooapis.com/v1/schema.rng"
|
||||||
|
xml:lang="en-US" yahoo:uri="http://where.yahooapis.com/v1/place/24865671">
|
||||||
|
<woeid>24865671</woeid>
|
||||||
|
<placeTypeName code="29">Continent</placeTypeName>
|
||||||
|
<name>Asia</name>
|
||||||
|
</place>
|
||||||
|
<place xmlns="http://where.yahooapis.com/v1/schema.rng"
|
||||||
|
xml:lang="en-US" yahoo:uri="http://where.yahooapis.com/v1/place/24865672">
|
||||||
|
<woeid>24865672</woeid>
|
||||||
|
<placeTypeName code="29">Continent</placeTypeName>
|
||||||
|
<name>North America</name>
|
||||||
|
</place>
|
||||||
|
<place xmlns="http://where.yahooapis.com/v1/schema.rng"
|
||||||
|
xml:lang="en-US" yahoo:uri="http://where.yahooapis.com/v1/place/55949070">
|
||||||
|
<woeid>55949070</woeid>
|
||||||
|
<placeTypeName code="29">Continent</placeTypeName>
|
||||||
|
<name>Australia</name>
|
||||||
|
</place>
|
||||||
|
</results>
|
||||||
|
</query>
|
||||||
|
|
@ -23,30 +23,6 @@
|
||||||
<label for="doc">Document</label>
|
<label for="doc">Document</label>
|
||||||
</td><td>
|
</td><td>
|
||||||
<select id="doc" size="1">
|
<select id="doc" size="1">
|
||||||
<option value="js">JavaScript</option>
|
|
||||||
<option value="plain">Plain Text</option>
|
|
||||||
<option value="svg">SVG</option>
|
|
||||||
<option value="html">HTML</option>
|
|
||||||
<option value="css">CSS</option>
|
|
||||||
<option value="scss">SCSS</option>
|
|
||||||
<option value="coffee">CoffeeScript</option>
|
|
||||||
<option value="json">JSON</option>
|
|
||||||
<option value="lua">Lua</option>
|
|
||||||
<option value="python">Python</option>
|
|
||||||
<option value="ruby">Ruby</option>
|
|
||||||
<option value="perl">Perl</option>
|
|
||||||
<option value="php">PHP</option>
|
|
||||||
<option value="java">Java</option>
|
|
||||||
<option value="csharp">C#</option>
|
|
||||||
<option value="c_cpp">C++</option>
|
|
||||||
<option value="clojure">Clojure</option>
|
|
||||||
<option value="ocaml">OCaml</option>
|
|
||||||
<option value="markdown">Markdown</option>
|
|
||||||
<option value="textile">Textile</option>
|
|
||||||
<option value="groovy">Groovy</option>
|
|
||||||
<option value="scala">Scala</option>
|
|
||||||
<option value="latex">LaTeX</option>
|
|
||||||
<option value="powershell">Powershell</option>
|
|
||||||
</select>
|
</select>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
@ -55,31 +31,6 @@
|
||||||
<label for="mode">Mode</label>
|
<label for="mode">Mode</label>
|
||||||
</td><td>
|
</td><td>
|
||||||
<select id="mode" size="1">
|
<select id="mode" size="1">
|
||||||
<option value="text">Plain Text</option>
|
|
||||||
<option value="javascript">JavaScript</option>
|
|
||||||
<option value="xml">XML</option>
|
|
||||||
<option value="html">HTML</option>
|
|
||||||
<option value="css">CSS</option>
|
|
||||||
<option value="scss">SCSS</option>
|
|
||||||
<option value="lua">Lua</option>
|
|
||||||
<option value="python">Python</option>
|
|
||||||
<option value="php">PHP</option>
|
|
||||||
<option value="java">Java</option>
|
|
||||||
<option value="ruby">Ruby</option>
|
|
||||||
<option value="c_cpp">C/C++</option>
|
|
||||||
<option value="coffee">CoffeeScript</option>
|
|
||||||
<option value="json">JSON</option>
|
|
||||||
<option value="perl">Perl</option>
|
|
||||||
<option value="clojure">Clojure</option>
|
|
||||||
<option value="ocaml">OCaml</option>
|
|
||||||
<option value="csharp">C#</option>
|
|
||||||
<option value="svg">SVG</option>
|
|
||||||
<option value="markdown">Markdown</option>
|
|
||||||
<option value="textile">Textile</option>
|
|
||||||
<option value="groovy">Groovy</option>
|
|
||||||
<option value="scala">Scala</option>
|
|
||||||
<option value="latex">LaTeX</option>
|
|
||||||
<option value="powershell">Powershell</option>
|
|
||||||
</select>
|
</select>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue