This commit is contained in:
commit
9c6da1d56c
65 changed files with 2144 additions and 1587 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
|
@ -7,6 +7,7 @@
|
||||||
.project
|
.project
|
||||||
.settings/
|
.settings/
|
||||||
.settings.xml
|
.settings.xml
|
||||||
|
.settings
|
||||||
.c9settings.xml
|
.c9settings.xml
|
||||||
.c9revisions
|
.c9revisions
|
||||||
.settings.xml.old
|
.settings.xml.old
|
||||||
|
|
@ -16,7 +17,6 @@
|
||||||
/ignore/
|
/ignore/
|
||||||
node_modules/
|
node_modules/
|
||||||
tool/node_modules/
|
tool/node_modules/
|
||||||
build/
|
|
||||||
|
|
||||||
.git-ref
|
.git-ref
|
||||||
npm-debug.log
|
npm-debug.log
|
||||||
|
|
|
||||||
3
.gitmodules
vendored
3
.gitmodules
vendored
|
|
@ -1,3 +1,6 @@
|
||||||
[submodule "doc/wiki"]
|
[submodule "doc/wiki"]
|
||||||
path = doc/wiki
|
path = doc/wiki
|
||||||
url = git://github.com/ajaxorg/ace.wiki.git
|
url = git://github.com/ajaxorg/ace.wiki.git
|
||||||
|
[submodule "build"]
|
||||||
|
path = build
|
||||||
|
url = https://github.com/ajaxorg/ace-builds.git
|
||||||
|
|
|
||||||
|
|
@ -62,8 +62,8 @@ function main(args) {
|
||||||
|
|
||||||
if (type == "minimal") {
|
if (type == "minimal") {
|
||||||
buildAce({
|
buildAce({
|
||||||
compress: args.indexOf("-m") != -1,
|
compress: args.indexOf("--m") != -1,
|
||||||
noconflict: args.indexOf("-nc") != -1
|
noconflict: args.indexOf("--nc") != -1
|
||||||
});
|
});
|
||||||
} else if (type == "normal") {
|
} else if (type == "normal") {
|
||||||
ace();
|
ace();
|
||||||
|
|
|
||||||
1
build
Submodule
1
build
Submodule
|
|
@ -0,0 +1 @@
|
||||||
|
Subproject commit b5354412bfeb461b7d8020423562451a81da2c85
|
||||||
|
|
@ -90,6 +90,7 @@ Mode.prototype.supportsFile = function(filename) {
|
||||||
};
|
};
|
||||||
|
|
||||||
var modesByName = {
|
var modesByName = {
|
||||||
|
c9search: ["C9Search" , "c9search_results"],
|
||||||
coffee: ["CoffeeScript" , "coffee|^Cakefile"],
|
coffee: ["CoffeeScript" , "coffee|^Cakefile"],
|
||||||
coldfusion: ["ColdFusion" , "cfm"],
|
coldfusion: ["ColdFusion" , "cfm"],
|
||||||
csharp: ["C#" , "cs"],
|
csharp: ["C#" , "cs"],
|
||||||
|
|
@ -104,10 +105,12 @@ var modesByName = {
|
||||||
java: ["Java" , "java"],
|
java: ["Java" , "java"],
|
||||||
javascript: ["JavaScript" , "js"],
|
javascript: ["JavaScript" , "js"],
|
||||||
json: ["JSON" , "json"],
|
json: ["JSON" , "json"],
|
||||||
|
jsx: ["JSX" , "jsx"],
|
||||||
latex: ["LaTeX" , "latex|tex|ltx|bib"],
|
latex: ["LaTeX" , "latex|tex|ltx|bib"],
|
||||||
less: ["LESS" , "less"],
|
less: ["LESS" , "less"],
|
||||||
liquid: ["Liquid" , "liquid"],
|
liquid: ["Liquid" , "liquid"],
|
||||||
lua: ["Lua" , "lua"],
|
lua: ["Lua" , "lua"],
|
||||||
|
luapage: ["LuaPage" , "lp"], // http://keplerproject.github.com/cgilua/manual.html#templates
|
||||||
markdown: ["Markdown" , "md|markdown"],
|
markdown: ["Markdown" , "md|markdown"],
|
||||||
ocaml: ["OCaml" , "ml|mli"],
|
ocaml: ["OCaml" , "ml|mli"],
|
||||||
perl: ["Perl" , "pl|pm"],
|
perl: ["Perl" , "pl|pm"],
|
||||||
|
|
@ -165,6 +168,7 @@ function makeHuge(txt) {
|
||||||
}
|
}
|
||||||
|
|
||||||
var docs = {
|
var docs = {
|
||||||
|
"docs/c9search.c9search_results": "C9 Search Results",
|
||||||
"docs/javascript.js": "JavaScript",
|
"docs/javascript.js": "JavaScript",
|
||||||
"docs/plaintext.txt": {name: "Plain Text", prepare: makeHuge, wrapped: true},
|
"docs/plaintext.txt": {name: "Plain Text", prepare: makeHuge, wrapped: true},
|
||||||
"docs/coffeescript.coffee": "Coffeescript",
|
"docs/coffeescript.coffee": "Coffeescript",
|
||||||
|
|
@ -185,6 +189,7 @@ var docs = {
|
||||||
"docs/ocaml.ml": "OCaml",
|
"docs/ocaml.ml": "OCaml",
|
||||||
"docs/OpenSCAD.scad": "OpenSCAD",
|
"docs/OpenSCAD.scad": "OpenSCAD",
|
||||||
"docs/lua.lua": "Lua",
|
"docs/lua.lua": "Lua",
|
||||||
|
"docs/luapage.lp": "LuaPage",
|
||||||
"docs/liquid.liquid": "Liquid",
|
"docs/liquid.liquid": "Liquid",
|
||||||
"docs/java.java": "Java",
|
"docs/java.java": "Java",
|
||||||
"docs/clojure.clj": "Clojure",
|
"docs/clojure.clj": "Clojure",
|
||||||
|
|
@ -201,7 +206,8 @@ var docs = {
|
||||||
"docs/latex.tex": {name: "LaTeX", wrapped: true},
|
"docs/latex.tex": {name: "LaTeX", wrapped: true},
|
||||||
"docs/sql.sql": {name: "SQL", wrapped: true},
|
"docs/sql.sql": {name: "SQL", wrapped: true},
|
||||||
"docs/pgsql.pgsql": {name: "pgSQL", wrapped: true},
|
"docs/pgsql.pgsql": {name: "pgSQL", wrapped: true},
|
||||||
"docs/golang.go": "Go"
|
"docs/golang.go": "Go",
|
||||||
|
"docs/jsx.jsx": "JSX"
|
||||||
}
|
}
|
||||||
|
|
||||||
var ownSource = {
|
var ownSource = {
|
||||||
|
|
|
||||||
25
demo/kitchen-sink/docs/c9search.c9search_results
Normal file
25
demo/kitchen-sink/docs/c9search.c9search_results
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
Searching for 'var' in /workspace/configs
|
||||||
|
|
||||||
|
configs/default.js:
|
||||||
|
1: var fs = require("fs");
|
||||||
|
2: var argv = require('optimist').argv;
|
||||||
|
3: var path = require("path");
|
||||||
|
5: var clientExtensions = {};
|
||||||
|
6: var clientDirs = fs.readdirSync(__dirname + "/../plugins-client");
|
||||||
|
7: for (var i = 0; i < clientDirs.length; i++) {
|
||||||
|
8: var dir = clientDirs[i];
|
||||||
|
12: var name = dir.split(".")[1];
|
||||||
|
16: var projectDir = (argv.w && path.resolve(process.cwd(), argv.w)) || process.cwd();
|
||||||
|
17: var fsUrl = "/workspace";
|
||||||
|
19: var port = argv.p || process.env.PORT || 3131;
|
||||||
|
20: var host = argv.l || "localhost";
|
||||||
|
22: var config = {
|
||||||
|
|
||||||
|
configs/local.js:
|
||||||
|
2: var config = require("./default");
|
||||||
|
|
||||||
|
configs/packed.js:
|
||||||
|
1: var config = require("./default");
|
||||||
|
|
||||||
|
|
||||||
|
Found 15 matches in 3 files
|
||||||
9
demo/kitchen-sink/docs/jsx.jsx
Normal file
9
demo/kitchen-sink/docs/jsx.jsx
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
/*EXPECTED
|
||||||
|
hello world!
|
||||||
|
*/
|
||||||
|
class Test {
|
||||||
|
static function run() : void {
|
||||||
|
// console.log("hello world!");
|
||||||
|
log "hello world!";
|
||||||
|
}
|
||||||
|
}
|
||||||
71
demo/kitchen-sink/docs/luapage.lp
Normal file
71
demo/kitchen-sink/docs/luapage.lp
Normal file
|
|
@ -0,0 +1,71 @@
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||||
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
|
<html>
|
||||||
|
<% --[[--
|
||||||
|
index.lp from the Kepler Project's LuaDoc HTML doclet.
|
||||||
|
http://keplerproject.github.com/luadoc/
|
||||||
|
--]] %>
|
||||||
|
<head>
|
||||||
|
<title>Reference</title>
|
||||||
|
<link rel="stylesheet" href="<%=luadoc.doclet.html.link("luadoc.css")%>" type="text/css" />
|
||||||
|
<!--meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/-->
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<div id="container">
|
||||||
|
|
||||||
|
<div id="product">
|
||||||
|
<div id="product_logo"></div>
|
||||||
|
<div id="product_name"><big><b></b></big></div>
|
||||||
|
<div id="product_description"></div>
|
||||||
|
</div> <!-- id="product" -->
|
||||||
|
|
||||||
|
<div id="main">
|
||||||
|
|
||||||
|
<div id="navigation">
|
||||||
|
<%=luadoc.doclet.html.include("menu.lp", { doc=doc })%>
|
||||||
|
|
||||||
|
</div> <!-- id="navigation" -->
|
||||||
|
|
||||||
|
<div id="content">
|
||||||
|
|
||||||
|
|
||||||
|
<%if not options.nomodules and #doc.modules > 0 then%>
|
||||||
|
<h2>Modules</h2>
|
||||||
|
<table class="module_list">
|
||||||
|
<!--<tr><td colspan="2">Modules</td></tr>-->
|
||||||
|
<%for _, modulename in ipairs(doc.modules) do%>
|
||||||
|
<tr>
|
||||||
|
<td class="name"><a href="<%=luadoc.doclet.html.module_link(modulename, doc)%>"><%=modulename%></a></td>
|
||||||
|
<td class="summary"><%=doc.modules[modulename].summary%></td>
|
||||||
|
</tr>
|
||||||
|
<%end%>
|
||||||
|
</table>
|
||||||
|
<%end%>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<%if not options.nofiles and #doc.files > 0 then%>
|
||||||
|
<h2>Files</h2>
|
||||||
|
<table class="file_list">
|
||||||
|
<!--<tr><td colspan="2">Files</td></tr>-->
|
||||||
|
<%for _, filepath in ipairs(doc.files) do%>
|
||||||
|
<tr>
|
||||||
|
<td class="name"><a href="<%=luadoc.doclet.html.file_link(filepath)%>"><%=filepath%></a></td>
|
||||||
|
<td class="summary"></td>
|
||||||
|
</tr>
|
||||||
|
<%end%>
|
||||||
|
</table>
|
||||||
|
<%end%>
|
||||||
|
|
||||||
|
</div> <!-- id="content" -->
|
||||||
|
|
||||||
|
</div> <!-- id="main" -->
|
||||||
|
|
||||||
|
<div id="about">
|
||||||
|
<p><a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a></p>
|
||||||
|
</div> <!-- id="about" -->
|
||||||
|
|
||||||
|
</div> <!-- id="container" -->
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
File diff suppressed because it is too large
Load diff
|
|
@ -8,9 +8,9 @@
|
||||||
<link href="doc/site/style.css" rel="stylesheet" type="text/css" />
|
<link href="doc/site/style.css" rel="stylesheet" type="text/css" />
|
||||||
<link rel="stylesheet" media="all and (max-device-width: 480px)" href="doc/site/iphone.css">
|
<link rel="stylesheet" media="all and (max-device-width: 480px)" href="doc/site/iphone.css">
|
||||||
<link rel="stylesheet" media="all and (min-device-width: 481px) and (max-device-width: 1024px)" href="doc/site/iphone.css">
|
<link rel="stylesheet" media="all and (min-device-width: 481px) and (max-device-width: 1024px)" href="doc/site/iphone.css">
|
||||||
<link rel="stylesheet" href="./doc/resources/ace/skeleton/csses/bootstrap.min.css">
|
<link rel="stylesheet" href="./doc/resources/ace/skeleton/csses/bootstrap.min.css">
|
||||||
<link rel="stylesheet" href="./doc/resources/ace/skeleton/csses/ace_api.css">
|
<link rel="stylesheet" href="./doc/resources/ace/skeleton/csses/ace_api.css">
|
||||||
<link href="./doc/resources/ace/skeleton/images/favicon.ico" rel="icon" type="image/x-icon">
|
<link href="./doc/resources/ace/skeleton/images/favicon.ico" rel="icon" type="image/x-icon">
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<a href="http://github.com/ajaxorg/ace"><img style="z-index: 50000; position: absolute; top: 0; right: 0; border: 0;" src="https://a248.e.akamai.net/camo.github.com/e6bef7a091f5f3138b8cd40bc3e114258dd68ddf/687474703a2f2f73332e616d617a6f6e6177732e636f6d2f6769746875622f726962626f6e732f666f726b6d655f72696768745f7265645f6161303030302e706e67" alt="Fork me on GitHub"></a>
|
<a href="http://github.com/ajaxorg/ace"><img style="z-index: 50000; position: absolute; top: 0; right: 0; border: 0;" src="https://a248.e.akamai.net/camo.github.com/e6bef7a091f5f3138b8cd40bc3e114258dd68ddf/687474703a2f2f73332e616d617a6f6e6177732e636f6d2f6769746875622f726962626f6e732f666f726b6d655f72696768745f7265645f6161303030302e706e67" alt="Fork me on GitHub"></a>
|
||||||
|
|
@ -57,6 +57,7 @@
|
||||||
<li><a href="http://www.wavemaker.com/">WaveMaker</a></li>
|
<li><a href="http://www.wavemaker.com/">WaveMaker</a></li>
|
||||||
<li><a href="http://rstudio.org/">RStudio</a></li>
|
<li><a href="http://rstudio.org/">RStudio</a></li>
|
||||||
<li><a href="http://www.playmycode.com/">Play My Code</a></li>
|
<li><a href="http://www.playmycode.com/">Play My Code</a></li>
|
||||||
|
<li><a href="http://www.codecademy.com/">Codecademy</a></li>
|
||||||
<li><a href="http://demo.qooxdoo.org/devel/playground/#">Qooxdoo playground</a></li>
|
<li><a href="http://demo.qooxdoo.org/devel/playground/#">Qooxdoo playground</a></li>
|
||||||
<li><a href="http://ext.radiantcms.org/extensions/264-ace">Radiant CMS</a></li>
|
<li><a href="http://ext.radiantcms.org/extensions/264-ace">Radiant CMS</a></li>
|
||||||
<li><a href="http://developercompanion.com/">Developer Companion</a></li>
|
<li><a href="http://developercompanion.com/">Developer Companion</a></li>
|
||||||
|
|
|
||||||
|
|
@ -67,6 +67,7 @@
|
||||||
<option value="ace/theme/dawn">Dawn</option>
|
<option value="ace/theme/dawn">Dawn</option>
|
||||||
<option value="ace/theme/dreamweaver">Dreamweaver</option>
|
<option value="ace/theme/dreamweaver">Dreamweaver</option>
|
||||||
<option value="ace/theme/eclipse">Eclipse</option>
|
<option value="ace/theme/eclipse">Eclipse</option>
|
||||||
|
<option value="ace/theme/github">GitHub</option>
|
||||||
<option value="ace/theme/idle_fingers">idleFingers</option>
|
<option value="ace/theme/idle_fingers">idleFingers</option>
|
||||||
<option value="ace/theme/kr_theme">krTheme</option>
|
<option value="ace/theme/kr_theme">krTheme</option>
|
||||||
<option value="ace/theme/merbivore">Merbivore</option>
|
<option value="ace/theme/merbivore">Merbivore</option>
|
||||||
|
|
|
||||||
|
|
@ -72,22 +72,22 @@ exports.commands = [{
|
||||||
readOnly: true
|
readOnly: true
|
||||||
}, {
|
}, {
|
||||||
name: "fold",
|
name: "fold",
|
||||||
bindKey: bindKey("Alt-L", "Alt-L"),
|
bindKey: bindKey("Alt-L|Ctrl-F1", "Command-Alt-L|Command-F1"),
|
||||||
exec: function(editor) { editor.session.toggleFold(false); },
|
exec: function(editor) { editor.session.toggleFold(false); },
|
||||||
readOnly: true
|
readOnly: true
|
||||||
}, {
|
}, {
|
||||||
name: "unfold",
|
name: "unfold",
|
||||||
bindKey: bindKey("Alt-Shift-L", "Alt-Shift-L"),
|
bindKey: bindKey("Alt-Shift-L|Ctrl-Shift-F1", "Command-Alt-Shift-L|Command-Shift-F1"),
|
||||||
exec: function(editor) { editor.session.toggleFold(true); },
|
exec: function(editor) { editor.session.toggleFold(true); },
|
||||||
readOnly: true
|
readOnly: true
|
||||||
}, {
|
}, {
|
||||||
name: "foldall",
|
name: "foldall",
|
||||||
bindKey: bindKey("Alt-0", "Alt-0"),
|
bindKey: bindKey("Alt-0", "Command-Option-0"),
|
||||||
exec: function(editor) { editor.session.foldAll(); },
|
exec: function(editor) { editor.session.foldAll(); },
|
||||||
readOnly: true
|
readOnly: true
|
||||||
}, {
|
}, {
|
||||||
name: "unfoldall",
|
name: "unfoldall",
|
||||||
bindKey: bindKey("Alt-Shift-0", "Alt-Shift-0"),
|
bindKey: bindKey("Alt-Shift-0", "Command-Option-Shift-0"),
|
||||||
exec: function(editor) { editor.session.unfold(); },
|
exec: function(editor) { editor.session.unfold(); },
|
||||||
readOnly: true
|
readOnly: true
|
||||||
}, {
|
}, {
|
||||||
|
|
@ -110,17 +110,17 @@ exports.commands = [{
|
||||||
readOnly: true
|
readOnly: true
|
||||||
}, {
|
}, {
|
||||||
name: "overwrite",
|
name: "overwrite",
|
||||||
bindKey: bindKey("Insert", "Insert"),
|
bindKey: "Insert",
|
||||||
exec: function(editor) { editor.toggleOverwrite(); },
|
exec: function(editor) { editor.toggleOverwrite(); },
|
||||||
readOnly: true
|
readOnly: true
|
||||||
}, {
|
}, {
|
||||||
name: "selecttostart",
|
name: "selecttostart",
|
||||||
bindKey: bindKey("Ctrl-Shift-Home|Alt-Shift-Up", "Command-Shift-Up"),
|
bindKey: bindKey("Ctrl-Shift-Home", "Command-Shift-Up"),
|
||||||
exec: function(editor) { editor.getSelection().selectFileStart(); },
|
exec: function(editor) { editor.getSelection().selectFileStart(); },
|
||||||
readOnly: true
|
readOnly: true
|
||||||
}, {
|
}, {
|
||||||
name: "gotostart",
|
name: "gotostart",
|
||||||
bindKey: bindKey("Ctrl-Home|Ctrl-Up", "Command-Home|Command-Up"),
|
bindKey: bindKey("Ctrl-Home", "Command-Home|Command-Up"),
|
||||||
exec: function(editor) { editor.navigateFileStart(); },
|
exec: function(editor) { editor.navigateFileStart(); },
|
||||||
readOnly: true
|
readOnly: true
|
||||||
}, {
|
}, {
|
||||||
|
|
@ -137,13 +137,13 @@ exports.commands = [{
|
||||||
readOnly: true
|
readOnly: true
|
||||||
}, {
|
}, {
|
||||||
name: "selecttoend",
|
name: "selecttoend",
|
||||||
bindKey: bindKey("Ctrl-Shift-End|Alt-Shift-Down", "Command-Shift-Down"),
|
bindKey: bindKey("Ctrl-Shift-End", "Command-Shift-Down"),
|
||||||
exec: function(editor) { editor.getSelection().selectFileEnd(); },
|
exec: function(editor) { editor.getSelection().selectFileEnd(); },
|
||||||
multiSelectAction: "forEach",
|
multiSelectAction: "forEach",
|
||||||
readOnly: true
|
readOnly: true
|
||||||
}, {
|
}, {
|
||||||
name: "gotoend",
|
name: "gotoend",
|
||||||
bindKey: bindKey("Ctrl-End|Ctrl-Down", "Command-End|Command-Down"),
|
bindKey: bindKey("Ctrl-End", "Command-End|Command-Down"),
|
||||||
exec: function(editor) { editor.navigateFileEnd(); },
|
exec: function(editor) { editor.navigateFileEnd(); },
|
||||||
multiSelectAction: "forEach",
|
multiSelectAction: "forEach",
|
||||||
readOnly: true
|
readOnly: true
|
||||||
|
|
@ -233,43 +233,53 @@ exports.commands = [{
|
||||||
readOnly: true
|
readOnly: true
|
||||||
}, {
|
}, {
|
||||||
name: "selectpagedown",
|
name: "selectpagedown",
|
||||||
bindKey: bindKey("Shift-PageDown", "Shift-PageDown"),
|
bindKey: "Shift-PageDown",
|
||||||
exec: function(editor) { editor.selectPageDown(); },
|
exec: function(editor) { editor.selectPageDown(); },
|
||||||
readOnly: true
|
readOnly: true
|
||||||
}, {
|
}, {
|
||||||
name: "pagedown",
|
name: "pagedown",
|
||||||
bindKey: bindKey(null, "PageDown"),
|
bindKey: bindKey(null, "Option-PageDown"),
|
||||||
exec: function(editor) { editor.scrollPageDown(); },
|
exec: function(editor) { editor.scrollPageDown(); },
|
||||||
readOnly: true
|
readOnly: true
|
||||||
}, {
|
}, {
|
||||||
name: "gotopagedown",
|
name: "gotopagedown",
|
||||||
bindKey: bindKey("PageDown", "Option-PageDown|Ctrl-V"),
|
bindKey: bindKey("PageDown", "PageDown|Ctrl-V"),
|
||||||
exec: function(editor) { editor.gotoPageDown(); },
|
exec: function(editor) { editor.gotoPageDown(); },
|
||||||
readOnly: true
|
readOnly: true
|
||||||
}, {
|
}, {
|
||||||
name: "selectpageup",
|
name: "selectpageup",
|
||||||
bindKey: bindKey("Shift-PageUp", "Shift-PageUp"),
|
bindKey: "Shift-PageUp",
|
||||||
exec: function(editor) { editor.selectPageUp(); },
|
exec: function(editor) { editor.selectPageUp(); },
|
||||||
readOnly: true
|
readOnly: true
|
||||||
}, {
|
}, {
|
||||||
name: "pageup",
|
name: "pageup",
|
||||||
bindKey: bindKey(null, "PageUp"),
|
bindKey: bindKey(null, "Option-PageUp"),
|
||||||
exec: function(editor) { editor.scrollPageUp(); },
|
exec: function(editor) { editor.scrollPageUp(); },
|
||||||
readOnly: true
|
readOnly: true
|
||||||
}, {
|
}, {
|
||||||
name: "gotopageup",
|
name: "gotopageup",
|
||||||
bindKey: bindKey("PageUp", "Option-PageUp"),
|
bindKey: "PageUp",
|
||||||
exec: function(editor) { editor.gotoPageUp(); },
|
exec: function(editor) { editor.gotoPageUp(); },
|
||||||
readOnly: true
|
readOnly: true
|
||||||
|
}, {
|
||||||
|
name: "scrollup",
|
||||||
|
bindKey: bindKey("Ctrl-Up", null),
|
||||||
|
exec: function(e) { e.renderer.scrollBy(0, -2 * e.renderer.layerConfig.lineHeight); },
|
||||||
|
readOnly: true
|
||||||
|
}, {
|
||||||
|
name: "scrolldown",
|
||||||
|
bindKey: bindKey("Ctrl-Down", null),
|
||||||
|
exec: function(e) { e.renderer.scrollBy(0, 2 * e.renderer.layerConfig.lineHeight); },
|
||||||
|
readOnly: true
|
||||||
}, {
|
}, {
|
||||||
name: "selectlinestart",
|
name: "selectlinestart",
|
||||||
bindKey: bindKey("Shift-Home", "Shift-Home"),
|
bindKey: "Shift-Home",
|
||||||
exec: function(editor) { editor.getSelection().selectLineStart(); },
|
exec: function(editor) { editor.getSelection().selectLineStart(); },
|
||||||
multiSelectAction: "forEach",
|
multiSelectAction: "forEach",
|
||||||
readOnly: true
|
readOnly: true
|
||||||
}, {
|
}, {
|
||||||
name: "selectlineend",
|
name: "selectlineend",
|
||||||
bindKey: bindKey("Shift-End", "Shift-End"),
|
bindKey: "Shift-End",
|
||||||
exec: function(editor) { editor.getSelection().selectLineEnd(); },
|
exec: function(editor) { editor.getSelection().selectLineEnd(); },
|
||||||
multiSelectAction: "forEach",
|
multiSelectAction: "forEach",
|
||||||
readOnly: true
|
readOnly: true
|
||||||
|
|
@ -285,10 +295,15 @@ exports.commands = [{
|
||||||
readOnly: true
|
readOnly: true
|
||||||
}, {
|
}, {
|
||||||
name: "jumptomatching",
|
name: "jumptomatching",
|
||||||
bindKey: bindKey("Ctrl-Shift-P", "Ctrl-Shift-P"),
|
bindKey: bindKey("Ctrl-P", "Ctrl-P"),
|
||||||
exec: function(editor) { editor.jumpToMatching(); },
|
exec: function(editor) { editor.jumpToMatching(); },
|
||||||
multiSelectAction: "forEach",
|
multiSelectAction: "forEach",
|
||||||
readOnly: true
|
readOnly: true
|
||||||
|
}, {
|
||||||
|
name: "selecttomatching",
|
||||||
|
bindKey: bindKey("Ctrl-Shift-P", "Ctrl-Shift-P"),
|
||||||
|
exec: function(editor) { editor.jumpToMatching(true); },
|
||||||
|
readOnly: true
|
||||||
},
|
},
|
||||||
|
|
||||||
// commands disabled in readOnly mode
|
// commands disabled in readOnly mode
|
||||||
|
|
@ -309,6 +324,11 @@ exports.commands = [{
|
||||||
bindKey: bindKey("Ctrl-D", "Command-D"),
|
bindKey: bindKey("Ctrl-D", "Command-D"),
|
||||||
exec: function(editor) { editor.removeLines(); },
|
exec: function(editor) { editor.removeLines(); },
|
||||||
multiSelectAction: "forEach"
|
multiSelectAction: "forEach"
|
||||||
|
}, {
|
||||||
|
name: "duplicateSelection",
|
||||||
|
bindKey: bindKey("Ctrl-Shift-D", "Command-Shift-D"),
|
||||||
|
exec: function(editor) { editor.duplicateSelection(); },
|
||||||
|
multiSelectAction: "forEach"
|
||||||
}, {
|
}, {
|
||||||
name: "togglecomment",
|
name: "togglecomment",
|
||||||
bindKey: bindKey("Ctrl-/", "Command-/"),
|
bindKey: bindKey("Ctrl-/", "Command-/"),
|
||||||
|
|
@ -348,7 +368,7 @@ exports.commands = [{
|
||||||
exec: function(editor) { editor.redo(); }
|
exec: function(editor) { editor.redo(); }
|
||||||
}, {
|
}, {
|
||||||
name: "copylinesup",
|
name: "copylinesup",
|
||||||
bindKey: bindKey("Ctrl-Alt-Up", "Command-Option-Up"),
|
bindKey: bindKey("Alt-Shift-Up", "Command-Option-Up"),
|
||||||
exec: function(editor) { editor.copyLinesUp(); }
|
exec: function(editor) { editor.copyLinesUp(); }
|
||||||
}, {
|
}, {
|
||||||
name: "movelinesup",
|
name: "movelinesup",
|
||||||
|
|
@ -356,7 +376,7 @@ exports.commands = [{
|
||||||
exec: function(editor) { editor.moveLinesUp(); }
|
exec: function(editor) { editor.moveLinesUp(); }
|
||||||
}, {
|
}, {
|
||||||
name: "copylinesdown",
|
name: "copylinesdown",
|
||||||
bindKey: bindKey("Ctrl-Alt-Down", "Command-Option-Down"),
|
bindKey: bindKey("Alt-Shift-Down", "Command-Option-Down"),
|
||||||
exec: function(editor) { editor.copyLinesDown(); }
|
exec: function(editor) { editor.copyLinesDown(); }
|
||||||
}, {
|
}, {
|
||||||
name: "movelinesdown",
|
name: "movelinesdown",
|
||||||
|
|
|
||||||
|
|
@ -92,7 +92,7 @@ exports.multiSelectCommands = [{
|
||||||
bindKey: "esc",
|
bindKey: "esc",
|
||||||
exec: function(editor) { editor.exitMultiSelectMode(); },
|
exec: function(editor) { editor.exitMultiSelectMode(); },
|
||||||
readonly: true,
|
readonly: true,
|
||||||
isAvailable: function(editor) {return editor.inMultiSelectMode}
|
isAvailable: function(editor) {return editor && editor.inMultiSelectMode}
|
||||||
}];
|
}];
|
||||||
|
|
||||||
var HashHandler = require("../keyboard/hash_handler").HashHandler;
|
var HashHandler = require("../keyboard/hash_handler").HashHandler;
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
.ace_scroller {
|
.ace_scroller {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
width : 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ace_content {
|
.ace_content {
|
||||||
|
|
@ -50,9 +51,11 @@
|
||||||
|
|
||||||
.ace_gutter-cell.ace_info {
|
.ace_gutter-cell.ace_info {
|
||||||
background-image: url("data:image/gif;base64,R0lGODlhEAAQAMQAAAAAAEFBQVJSUl5eXmRkZGtra39/f4WFhYmJiZGRkaampry8vMPDw8zMzNXV1dzc3OTk5Orq6vDw8P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkAABQALAAAAAAQABAAAAUuICWOZGmeaBml5XGwFCQSBGyXRSAwtqQIiRuiwIM5BoYVbEFIyGCQoeJGrVptIQA7");
|
background-image: url("data:image/gif;base64,R0lGODlhEAAQAMQAAAAAAEFBQVJSUl5eXmRkZGtra39/f4WFhYmJiZGRkaampry8vMPDw8zMzNXV1dzc3OTk5Orq6vDw8P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkAABQALAAAAAAQABAAAAUuICWOZGmeaBml5XGwFCQSBGyXRSAwtqQIiRuiwIM5BoYVbEFIyGCQoeJGrVptIQA7");
|
||||||
background-repeat: no-repeat;
|
|
||||||
background-position: 2px center;
|
background-position: 2px center;
|
||||||
}
|
}
|
||||||
|
.ace_dark .ace_gutter-cell.ace_info {
|
||||||
|
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGRTk5MTVGREIxNDkxMUUxOTc5Q0FFREQyMTNGMjBFQyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGRTk5MTVGRUIxNDkxMUUxOTc5Q0FFREQyMTNGMjBFQyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkZFOTkxNUZCQjE0OTExRTE5NzlDQUVERDIxM0YyMEVDIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkZFOTkxNUZDQjE0OTExRTE5NzlDQUVERDIxM0YyMEVDIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+SIDkjAAAAJ1JREFUeNpi/P//PwMlgImBQkB7A6qrq/+DMC55FkIGKCoq4pVnpFkgTp069f/+/fv/r1u37r+tre1/kg0A+ptn9uzZYLaRkRHpLvjw4cNXWVlZhufPnzOcO3eOdAO0tbVPAjHDmzdvGA4fPsxIsgGSkpJmv379Ynj37h2DjIyMCMkG3LhxQ/T27dsMampqDHZ2dq/pH41DxwCAAAMAFdc68dUsFZgAAAAASUVORK5CYII=");
|
||||||
|
}
|
||||||
|
|
||||||
.ace_editor .ace_sb {
|
.ace_editor .ace_sb {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
|
|
@ -246,9 +249,11 @@
|
||||||
|
|
||||||
background-image: url("data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%05%00%00%00%05%08%06%00%00%00%8Do%26%E5%00%00%004IDATx%DAe%8A%B1%0D%000%0C%C2%F2%2CK%96%BC%D0%8F9%81%88H%E9%D0%0E%96%C0%10%92%3E%02%80%5E%82%E4%A9*-%EEsw%C8%CC%11%EE%96w%D8%DC%E9*Eh%0C%151(%00%00%00%00IEND%AEB%60%82");
|
background-image: url("data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%05%00%00%00%05%08%06%00%00%00%8Do%26%E5%00%00%004IDATx%DAe%8A%B1%0D%000%0C%C2%F2%2CK%96%BC%D0%8F9%81%88H%E9%D0%0E%96%C0%10%92%3E%02%80%5E%82%E4%A9*-%EEsw%C8%CC%11%EE%96w%D8%DC%E9*Eh%0C%151(%00%00%00%00IEND%AEB%60%82");
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
background-position: center 5px;
|
background-position: center 4px;
|
||||||
|
|
||||||
border-radius: 3px;
|
border-radius: 3px;
|
||||||
|
|
||||||
|
border: 1px solid transparent;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ace_fold-widget.end {
|
.ace_fold-widget.end {
|
||||||
|
|
@ -262,11 +267,8 @@
|
||||||
.ace_fold-widget:hover {
|
.ace_fold-widget:hover {
|
||||||
border: 1px solid rgba(0, 0, 0, 0.3);
|
border: 1px solid rgba(0, 0, 0, 0.3);
|
||||||
background-color: rgba(255, 255, 255, 0.2);
|
background-color: rgba(255, 255, 255, 0.2);
|
||||||
-moz-box-shadow:inset 0 1px 1px rgba(255, 255, 255, 0.7);
|
|
||||||
-moz-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);
|
-moz-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);
|
||||||
-webkit-box-shadow:inset 0 1px 1px rgba(255, 255, 255, 0.7);
|
|
||||||
-webkit-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);
|
-webkit-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);
|
||||||
box-shadow:inset 0 1px 1px rgba(255, 255, 255, 0.7);
|
|
||||||
box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);
|
box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);
|
||||||
background-position: center 4px;
|
background-position: center 4px;
|
||||||
}
|
}
|
||||||
|
|
@ -274,13 +276,33 @@
|
||||||
.ace_fold-widget:active {
|
.ace_fold-widget:active {
|
||||||
border: 1px solid rgba(0, 0, 0, 0.4);
|
border: 1px solid rgba(0, 0, 0, 0.4);
|
||||||
background-color: rgba(0, 0, 0, 0.05);
|
background-color: rgba(0, 0, 0, 0.05);
|
||||||
-moz-box-shadow:inset 0 1px 1px rgba(255, 255, 255);
|
|
||||||
-moz-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);
|
-moz-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);
|
||||||
-webkit-box-shadow:inset 0 1px 1px rgba(255, 255, 255);
|
|
||||||
-webkit-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);
|
-webkit-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);
|
||||||
box-shadow:inset 0 1px 1px rgba(255, 255, 255);
|
|
||||||
box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);
|
box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Dark version for fold widgets
|
||||||
|
*/
|
||||||
|
.ace_dark .ace_fold-widget {
|
||||||
|
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC");
|
||||||
|
}
|
||||||
|
.ace_dark .ace_fold-widget.end {
|
||||||
|
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==");
|
||||||
|
}
|
||||||
|
.ace_dark .ace_fold-widget.closed {
|
||||||
|
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==");
|
||||||
|
}
|
||||||
|
.ace_dark .ace_fold-widget:hover {
|
||||||
|
box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);
|
||||||
|
background-color: rgba(255, 255, 255, 0.1);
|
||||||
|
}
|
||||||
|
.ace_dark .ace_fold-widget:active {
|
||||||
|
-moz-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);
|
||||||
|
-webkit-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);
|
||||||
|
box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.ace_fold-widget.invalid {
|
.ace_fold-widget.invalid {
|
||||||
background-color: #FFB4B4;
|
background-color: #FFB4B4;
|
||||||
|
|
|
||||||
|
|
@ -827,7 +827,8 @@ var EditSession = function(text, mode) {
|
||||||
try {
|
try {
|
||||||
module = require(mode);
|
module = require(mode);
|
||||||
} catch (e) {};
|
} catch (e) {};
|
||||||
if (module)
|
// sometimes require returns empty object (this bug is present in requirejs 2 as well)
|
||||||
|
if (module && module.Mode)
|
||||||
return done(module);
|
return done(module);
|
||||||
|
|
||||||
// set mode to text until loading is finished
|
// set mode to text until loading is finished
|
||||||
|
|
|
||||||
|
|
@ -40,6 +40,7 @@ define(function(require, exports, module) {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
var TokenIterator = require("../token_iterator").TokenIterator;
|
var TokenIterator = require("../token_iterator").TokenIterator;
|
||||||
|
var Range = require("../range").Range;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* class BracketMatch
|
* class BracketMatch
|
||||||
|
|
@ -76,15 +77,56 @@ function BracketMatch() {
|
||||||
if (charBeforeCursor == "") return null;
|
if (charBeforeCursor == "") return null;
|
||||||
|
|
||||||
var match = charBeforeCursor.match(/([\(\[\{])|([\)\]\}])/);
|
var match = charBeforeCursor.match(/([\(\[\{])|([\)\]\}])/);
|
||||||
if (!match) {
|
if (!match)
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
|
if (match[1])
|
||||||
|
return this.$findClosingBracket(match[1], position);
|
||||||
|
else
|
||||||
|
return this.$findOpeningBracket(match[2], position);
|
||||||
|
};
|
||||||
|
|
||||||
|
this.getBracketRange = function(pos) {
|
||||||
|
var line = this.getLine(pos.row);
|
||||||
|
var before = true, range;
|
||||||
|
|
||||||
|
var chr = line.charAt(pos.column-1);
|
||||||
|
var match = chr && chr.match(/([\(\[\{])|([\)\]\}])/);
|
||||||
|
if (!match) {
|
||||||
|
chr = line.charAt(pos.column);
|
||||||
|
pos.column++;
|
||||||
|
match = chr && chr.match(/([\(\[\{])|([\)\]\}])/);
|
||||||
|
before = false;
|
||||||
}
|
}
|
||||||
|
if (!match)
|
||||||
|
return null;
|
||||||
|
|
||||||
if (match[1]) {
|
if (match[1]) {
|
||||||
return this.$findClosingBracket(match[1], position);
|
var bracketPos = this.$findClosingBracket(match[1], pos);
|
||||||
|
if (!bracketPos)
|
||||||
|
return null;
|
||||||
|
range = Range.fromPoints(pos, bracketPos);
|
||||||
|
if (!before) {
|
||||||
|
range.end.column++;
|
||||||
|
range.start.column--;
|
||||||
|
}
|
||||||
|
range.cursor = range.end;
|
||||||
} else {
|
} else {
|
||||||
return this.$findOpeningBracket(match[2], position);
|
var bracketPos = this.$findOpeningBracket(match[2], pos);
|
||||||
|
if (!bracketPos)
|
||||||
|
return null;
|
||||||
|
range = Range.fromPoints(bracketPos, pos);
|
||||||
|
if (!before) {
|
||||||
|
range.start.column++;
|
||||||
|
range.end.column--;
|
||||||
|
}
|
||||||
|
range.cursor = range.start;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!before)
|
||||||
|
pos.column--;
|
||||||
|
|
||||||
|
return range;
|
||||||
};
|
};
|
||||||
|
|
||||||
this.$brackets = {
|
this.$brackets = {
|
||||||
|
|
|
||||||
|
|
@ -1348,6 +1348,24 @@ var Editor = function(renderer, session) {
|
||||||
this.clearSelection();
|
this.clearSelection();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
this.duplicateSelection = function() {
|
||||||
|
var sel = this.selection;
|
||||||
|
var doc = this.session;
|
||||||
|
var range = sel.getRange();
|
||||||
|
if (range.isEmpty()) {
|
||||||
|
var row = range.start.row;
|
||||||
|
doc.duplicateLines(row, row);
|
||||||
|
} else {
|
||||||
|
var reverse = sel.isBackwards()
|
||||||
|
var point = sel.isBackwards() ? range.start : range.end;
|
||||||
|
var endPoint = doc.insert(point, doc.getTextRange(range), false);
|
||||||
|
range.start = point;
|
||||||
|
range.end = endPoint;
|
||||||
|
|
||||||
|
sel.setSelectionRange(range, reverse)
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
/** related to: EditSession.moveLinesDown
|
/** related to: EditSession.moveLinesDown
|
||||||
* Editor.moveLinesDown() -> Number
|
* Editor.moveLinesDown() -> Number
|
||||||
* + (Number): On success, it returns -1.
|
* + (Number): On success, it returns -1.
|
||||||
|
|
@ -1660,8 +1678,11 @@ var Editor = function(renderer, session) {
|
||||||
**/
|
**/
|
||||||
this.centerSelection = function() {
|
this.centerSelection = function() {
|
||||||
var range = this.getSelectionRange();
|
var range = this.getSelectionRange();
|
||||||
var line = Math.floor(range.start.row + (range.end.row - range.start.row) / 2);
|
var pos = {
|
||||||
this.renderer.scrollToLine(line, true);
|
row: Math.floor(range.start.row + (range.end.row - range.start.row) / 2),
|
||||||
|
column: Math.floor(range.start.column + (range.end.column - range.start.column) / 2)
|
||||||
|
}
|
||||||
|
this.renderer.alignCursor(pos, 0.5);
|
||||||
};
|
};
|
||||||
|
|
||||||
/** related to: Selection.getCursor
|
/** related to: Selection.getCursor
|
||||||
|
|
@ -1746,21 +1767,34 @@ var Editor = function(renderer, session) {
|
||||||
* Moves the cursor's row and column to the next matching bracket.
|
* Moves the cursor's row and column to the next matching bracket.
|
||||||
*
|
*
|
||||||
**/
|
**/
|
||||||
this.jumpToMatching = function() {
|
this.jumpToMatching = function(select) {
|
||||||
var cursor = this.getCursorPosition();
|
var cursor = this.getCursorPosition();
|
||||||
var pos = this.session.findMatchingBracket(cursor);
|
|
||||||
if (!pos) {
|
var range = this.session.getBracketRange(cursor);
|
||||||
cursor.column += 1;
|
if (!range) {
|
||||||
pos = this.session.findMatchingBracket(cursor);
|
range = editor.find({
|
||||||
}
|
needle: /[{}()\[\]]/g,
|
||||||
if (!pos) {
|
preventScroll:true,
|
||||||
cursor.column -= 2;
|
start: {row: cursor.row, column: cursor.column - 1}
|
||||||
pos = this.session.findMatchingBracket(cursor);
|
});
|
||||||
|
if (!range)
|
||||||
|
return;
|
||||||
|
var pos = range.start;
|
||||||
|
if (pos.row == cursor.row && Math.abs(pos.column - cursor.column) < 2)
|
||||||
|
range = this.session.getBracketRange(pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pos = range && range.cursor || pos;
|
||||||
if (pos) {
|
if (pos) {
|
||||||
this.clearSelection();
|
if (select) {
|
||||||
this.moveCursorTo(pos.row, pos.column);
|
if (range && range.isEqual(editor.getSelectionRange()))
|
||||||
|
this.clearSelection();
|
||||||
|
else
|
||||||
|
this.selection.selectTo(pos.row, pos.column);
|
||||||
|
} else {
|
||||||
|
this.clearSelection();
|
||||||
|
this.moveCursorTo(pos.row, pos.column);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -52,7 +52,7 @@ var baseStyles = require("../requirejs/text!./static.css");
|
||||||
* @returns {object} An object containing: html, css
|
* @returns {object} An object containing: html, css
|
||||||
*/
|
*/
|
||||||
|
|
||||||
exports.render = function(input, mode, theme, lineStart) {
|
exports.render = function(input, mode, theme, lineStart, disableGutter) {
|
||||||
lineStart = parseInt(lineStart || 1, 10);
|
lineStart = parseInt(lineStart || 1, 10);
|
||||||
|
|
||||||
var session = new EditSession("");
|
var session = new EditSession("");
|
||||||
|
|
@ -74,7 +74,8 @@ exports.render = function(input, mode, theme, lineStart) {
|
||||||
for(var ix = 0; ix < length; ix++) {
|
for(var ix = 0; ix < length; ix++) {
|
||||||
var lineTokens = session.getTokens(ix);
|
var lineTokens = session.getTokens(ix);
|
||||||
stringBuilder.push("<div class='ace_line'>");
|
stringBuilder.push("<div class='ace_line'>");
|
||||||
stringBuilder.push("<span class='ace_gutter ace_gutter-cell' unselectable='on'>" + (ix + lineStart) + "</span>");
|
if (!disableGutter)
|
||||||
|
stringBuilder.push("<span class='ace_gutter ace_gutter-cell' unselectable='on'>" + (ix + lineStart) + "</span>");
|
||||||
textLayer.$renderLine(stringBuilder, 0, lineTokens, true);
|
textLayer.$renderLine(stringBuilder, 0, lineTokens, true);
|
||||||
stringBuilder.push("</div>");
|
stringBuilder.push("</div>");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -246,7 +246,6 @@ var TextInput = function(parentNode, host) {
|
||||||
});
|
});
|
||||||
|
|
||||||
this.focus = function() {
|
this.focus = function() {
|
||||||
host.onFocus();
|
|
||||||
reset();
|
reset();
|
||||||
text.focus();
|
text.focus();
|
||||||
};
|
};
|
||||||
|
|
@ -281,10 +280,12 @@ var TextInput = function(parentNode, host) {
|
||||||
if (host.renderer.$keepTextAreaAtCursor)
|
if (host.renderer.$keepTextAreaAtCursor)
|
||||||
host.renderer.$keepTextAreaAtCursor = null;
|
host.renderer.$keepTextAreaAtCursor = null;
|
||||||
|
|
||||||
event.capture(host.container, function(e) {
|
// on windows context menu is opened after mouseup
|
||||||
text.style.left = e.clientX - 2 + "px";
|
if (useragent.isGecko && useragent.isWin)
|
||||||
text.style.top = e.clientY - 2 + "px";
|
event.capture(host.container, function(e) {
|
||||||
}, onContextMenuClose);
|
text.style.left = e.clientX - 2 + "px";
|
||||||
|
text.style.top = e.clientY - 2 + "px";
|
||||||
|
}, onContextMenuClose);
|
||||||
};
|
};
|
||||||
|
|
||||||
function onContextMenuClose() {
|
function onContextMenuClose() {
|
||||||
|
|
|
||||||
|
|
@ -300,27 +300,27 @@ module.exports = {
|
||||||
case "(":
|
case "(":
|
||||||
case "{":
|
case "{":
|
||||||
case "[":
|
case "[":
|
||||||
var cursor = editor.getCursorPosition()
|
var cursor = editor.getCursorPosition();
|
||||||
var end = editor.session.$findClosingBracket(param, cursor, /paren/)
|
var end = editor.session.$findClosingBracket(param, cursor, /paren/);
|
||||||
if (!end)
|
if (!end)
|
||||||
return;
|
return;
|
||||||
var start = editor.session.$findOpeningBracket(editor.session.$brackets[param], cursor, /paren/)
|
var start = editor.session.$findOpeningBracket(editor.session.$brackets[param], cursor, /paren/);
|
||||||
if (!start)
|
if (!start)
|
||||||
return;
|
return;
|
||||||
start.column ++;
|
start.column ++;
|
||||||
editor.selection.setSelectionRange(Range.fromPoints(start, end))
|
editor.selection.setSelectionRange(Range.fromPoints(start, end));
|
||||||
break
|
break;
|
||||||
case "'":
|
case "'":
|
||||||
case "\"":
|
case '"':
|
||||||
case "/":
|
case "/":
|
||||||
var end = find(editor, param, 1)
|
var end = find(editor, param, 1);
|
||||||
if (!end)
|
if (!end)
|
||||||
return;
|
return;
|
||||||
var start = find(editor, param, -1)
|
var start = find(editor, param, -1);
|
||||||
if (!start)
|
if (!start)
|
||||||
return;
|
return;
|
||||||
editor.selection.setSelectionRange(Range.fromPoints(start.end, end.start))
|
editor.selection.setSelectionRange(Range.fromPoints(start.end, end.start));
|
||||||
break
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -93,7 +93,7 @@ exports.preventDefault = function(e) {
|
||||||
exports.getButton = function(e) {
|
exports.getButton = function(e) {
|
||||||
if (e.type == "dblclick")
|
if (e.type == "dblclick")
|
||||||
return 0;
|
return 0;
|
||||||
else if (e.type == "contextmenu")
|
if (e.type == "contextmenu" || (e.ctrlKey && useragent.isMac))
|
||||||
return 2;
|
return 2;
|
||||||
|
|
||||||
// DOM Event
|
// DOM Event
|
||||||
|
|
|
||||||
|
|
@ -48,7 +48,7 @@ var C9SearchHighlightRules = function() {
|
||||||
this.$rules = {
|
this.$rules = {
|
||||||
"start" : [
|
"start" : [
|
||||||
{
|
{
|
||||||
token : ["constant.numeric", "text", "text"],
|
token : ["c9searchresults.constant.numeric", "c9searchresults.text", "c9searchresults.text"],
|
||||||
regex : "(^\\s+[0-9]+)(:\\s*)(.+)"
|
regex : "(^\\s+[0-9]+)(:\\s*)(.+)"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@
|
||||||
* the Initial Developer. All Rights Reserved.
|
* the Initial Developer. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* Contributor(s):
|
* Contributor(s):
|
||||||
* Fabian Jakobs <fabian AT ajax DOT org>
|
* Garen J. Torikian <gjtorikian AT gmail DOT com>
|
||||||
*
|
*
|
||||||
* Alternatively, the contents of this file may be used under the terms of
|
* Alternatively, the contents of this file may be used under the terms of
|
||||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||||
|
|
|
||||||
|
|
@ -191,6 +191,22 @@ var JavaScriptHighlightRules = function() {
|
||||||
],
|
],
|
||||||
regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
|
regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
|
||||||
next: "function_arguments"
|
next: "function_arguments"
|
||||||
|
}, { // match stuff like: Sound.play = function play() { }
|
||||||
|
token : [
|
||||||
|
"storage.type",
|
||||||
|
"punctuation.operator",
|
||||||
|
"entity.name.function",
|
||||||
|
"text",
|
||||||
|
"keyword.operator",
|
||||||
|
"text",
|
||||||
|
"storage.type",
|
||||||
|
"text",
|
||||||
|
"entity.name.function",
|
||||||
|
"text",
|
||||||
|
"paren.lparen"
|
||||||
|
],
|
||||||
|
regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",
|
||||||
|
next: "function_arguments"
|
||||||
}, { // match regular function like: function myFunc(arg) { }
|
}, { // match regular function like: function myFunc(arg) { }
|
||||||
token : [
|
token : [
|
||||||
"storage.type",
|
"storage.type",
|
||||||
|
|
|
||||||
53
lib/ace/mode/jsx.js
Normal file
53
lib/ace/mode/jsx.js
Normal file
|
|
@ -0,0 +1,53 @@
|
||||||
|
define(function(require, exports, module) {
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
var oop = require("../lib/oop");
|
||||||
|
var TextMode = require("./text").Mode;
|
||||||
|
var Tokenizer = require("../tokenizer").Tokenizer;
|
||||||
|
var JsxHighlightRules = require("./jsx_highlight_rules").JsxHighlightRules;
|
||||||
|
var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
|
||||||
|
var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour;
|
||||||
|
var CStyleFoldMode = require("./folding/cstyle").FoldMode;
|
||||||
|
|
||||||
|
function Mode() {
|
||||||
|
this.$tokenizer = new Tokenizer(new JsxHighlightRules().getRules());
|
||||||
|
this.$outdent = new MatchingBraceOutdent();
|
||||||
|
this.$behaviour = new CstyleBehaviour();
|
||||||
|
this.foldingRules = new CStyleFoldMode();
|
||||||
|
}
|
||||||
|
oop.inherits(Mode, TextMode);
|
||||||
|
|
||||||
|
(function() {
|
||||||
|
|
||||||
|
this.getNextLineIndent = function(state, line, tab) {
|
||||||
|
var indent = this.$getIndent(line);
|
||||||
|
|
||||||
|
var tokenizedLine = this.$tokenizer.getLineTokens(line, state);
|
||||||
|
var tokens = tokenizedLine.tokens;
|
||||||
|
|
||||||
|
if (tokens.length && tokens[tokens.length-1].type == "comment") {
|
||||||
|
return indent;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (state == "start") {
|
||||||
|
var match = line.match(/^.*[\{\(\[]\s*$/);
|
||||||
|
if (match) {
|
||||||
|
indent += tab;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return indent;
|
||||||
|
};
|
||||||
|
|
||||||
|
this.checkOutdent = function(state, line, input) {
|
||||||
|
return this.$outdent.checkOutdent(line, input);
|
||||||
|
};
|
||||||
|
|
||||||
|
this.autoOutdent = function(state, doc, row) {
|
||||||
|
this.$outdent.autoOutdent(doc, row);
|
||||||
|
};
|
||||||
|
|
||||||
|
}).call(Mode.prototype);
|
||||||
|
|
||||||
|
exports.Mode = Mode;
|
||||||
|
});
|
||||||
122
lib/ace/mode/jsx_highlight_rules.js
Normal file
122
lib/ace/mode/jsx_highlight_rules.js
Normal file
|
|
@ -0,0 +1,122 @@
|
||||||
|
define(function(require, exports, module) {
|
||||||
|
var oop = require("../lib/oop");
|
||||||
|
var lang = require("../lib/lang");
|
||||||
|
var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules;
|
||||||
|
var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
|
||||||
|
|
||||||
|
var JsxHighlightRules = function() {
|
||||||
|
var keywords = lang.arrayToMap(
|
||||||
|
("break|do|instanceof|typeof|case|else|new|var|catch|finally|return|void|continue|for|switch|default|while|function|this|" +
|
||||||
|
"if|throw|" +
|
||||||
|
"delete|in|try|" +
|
||||||
|
"class|extends|super|import|from|into|implements|interface|static|mixin|override|abstract|final|" +
|
||||||
|
"number|int|string|boolean|variant|" +
|
||||||
|
"log|assert").split("|")
|
||||||
|
);
|
||||||
|
|
||||||
|
var buildinConstants = lang.arrayToMap(
|
||||||
|
("null|true|false|NaN|Infinity|__FILE__|__LINE__|undefined").split("|")
|
||||||
|
);
|
||||||
|
|
||||||
|
var reserved = lang.arrayToMap(
|
||||||
|
("debugger|with|" +
|
||||||
|
"const|export|" +
|
||||||
|
"let|private|public|yield|protected|" +
|
||||||
|
"extern|native|as|operator|__fake__|__readonly__").split("|")
|
||||||
|
);
|
||||||
|
|
||||||
|
var identifierRe = "[a-zA-Z_][a-zA-Z0-9_]*\\b";
|
||||||
|
|
||||||
|
this.$rules = {
|
||||||
|
"start" : [
|
||||||
|
{
|
||||||
|
token : "comment",
|
||||||
|
regex : "\\/\\/.*$"
|
||||||
|
},
|
||||||
|
DocCommentHighlightRules.getStartRule("doc-start"),
|
||||||
|
{
|
||||||
|
token : "comment", // multi line comment
|
||||||
|
regex : "\\/\\*",
|
||||||
|
merge : true,
|
||||||
|
next : "comment"
|
||||||
|
}, {
|
||||||
|
token : "string.regexp",
|
||||||
|
regex : "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)"
|
||||||
|
}, {
|
||||||
|
token : "string", // single line
|
||||||
|
regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
|
||||||
|
}, {
|
||||||
|
token : "string", // single line
|
||||||
|
regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
|
||||||
|
}, {
|
||||||
|
token : "constant.numeric", // hex
|
||||||
|
regex : "0[xX][0-9a-fA-F]+\\b"
|
||||||
|
}, {
|
||||||
|
token : "constant.numeric", // float
|
||||||
|
regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
|
||||||
|
}, {
|
||||||
|
token : "constant.language.boolean",
|
||||||
|
regex : "(?:true|false)\\b"
|
||||||
|
}, {
|
||||||
|
token : [
|
||||||
|
"storage.type",
|
||||||
|
"text",
|
||||||
|
"entity.name.function"
|
||||||
|
],
|
||||||
|
regex : "(function)(\\s+)(" + identifierRe + ")"
|
||||||
|
}, {
|
||||||
|
token : function(value) {
|
||||||
|
if (value == "this")
|
||||||
|
return "variable.language";
|
||||||
|
else if (value == "function")
|
||||||
|
return "storage.type";
|
||||||
|
else if (keywords.hasOwnProperty(value) || reserved.hasOwnProperty(value))
|
||||||
|
return "keyword";
|
||||||
|
else if (buildinConstants.hasOwnProperty(value))
|
||||||
|
return "constant.language";
|
||||||
|
else if (/^_?[A-Z][a-zA-Z0-9_]*$/.test(value))
|
||||||
|
return "language.support.class";
|
||||||
|
else
|
||||||
|
return "identifier";
|
||||||
|
},
|
||||||
|
// TODO: Unicode escape sequences
|
||||||
|
// TODO: Unicode identifiers
|
||||||
|
regex : identifierRe
|
||||||
|
}, {
|
||||||
|
token : "keyword.operator",
|
||||||
|
regex : "!|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"
|
||||||
|
}, {
|
||||||
|
token : "punctuation.operator",
|
||||||
|
regex : "\\?|\\:|\\,|\\;|\\."
|
||||||
|
}, {
|
||||||
|
token : "paren.lparen",
|
||||||
|
regex : "[[({<]"
|
||||||
|
}, {
|
||||||
|
token : "paren.rparen",
|
||||||
|
regex : "[\\])}>]"
|
||||||
|
}, {
|
||||||
|
token : "text",
|
||||||
|
regex : "\\s+"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"comment" : [
|
||||||
|
{
|
||||||
|
token : "comment", // closing comment
|
||||||
|
regex : ".*?\\*\\/",
|
||||||
|
next : "start"
|
||||||
|
}, {
|
||||||
|
token : "comment", // comment spanning whole line
|
||||||
|
merge : true,
|
||||||
|
regex : ".+"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
||||||
|
|
||||||
|
this.embedRules(DocCommentHighlightRules, "doc-",
|
||||||
|
[ DocCommentHighlightRules.getEndRule("start") ]);
|
||||||
|
};
|
||||||
|
|
||||||
|
oop.inherits(JsxHighlightRules, TextHighlightRules);
|
||||||
|
|
||||||
|
exports.JsxHighlightRules = JsxHighlightRules;
|
||||||
|
});
|
||||||
22
lib/ace/mode/luapage.js
Normal file
22
lib/ace/mode/luapage.js
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
define(function(require, exports, module) {
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
var oop = require("../lib/oop");
|
||||||
|
var HtmlMode = require("./html").Mode;
|
||||||
|
var LuaMode = require("./lua").Mode;
|
||||||
|
var Tokenizer = require("../tokenizer").Tokenizer;
|
||||||
|
var LuaPageHighlightRules = require("./luapage_highlight_rules").LuaPageHighlightRules;
|
||||||
|
|
||||||
|
var Mode = function() {
|
||||||
|
var highlighter = new LuaPageHighlightRules();
|
||||||
|
|
||||||
|
this.$tokenizer = new Tokenizer(new LuaPageHighlightRules().getRules());
|
||||||
|
this.$embeds = highlighter.getEmbeds();
|
||||||
|
this.createModeDelegates({
|
||||||
|
"lua-": LuaMode
|
||||||
|
});
|
||||||
|
};
|
||||||
|
oop.inherits(Mode, HtmlMode);
|
||||||
|
|
||||||
|
exports.Mode = Mode;
|
||||||
|
});
|
||||||
42
lib/ace/mode/luapage_highlight_rules.js
Normal file
42
lib/ace/mode/luapage_highlight_rules.js
Normal file
|
|
@ -0,0 +1,42 @@
|
||||||
|
// LuaPage implements the LuaPage markup as described by the Kepler Project's CGILua
|
||||||
|
// documentation: http://keplerproject.github.com/cgilua/manual.html#templates
|
||||||
|
define(function(require, exports, module) {
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
var oop = require("../lib/oop");
|
||||||
|
var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules;
|
||||||
|
var LuaHighlightRules = require("./lua_highlight_rules").LuaHighlightRules;
|
||||||
|
|
||||||
|
var LuaPageHighlightRules = function() {
|
||||||
|
this.$rules = new HtmlHighlightRules().getRules();
|
||||||
|
|
||||||
|
for (var i in this.$rules) {
|
||||||
|
this.$rules[i].unshift({
|
||||||
|
token: "keyword",
|
||||||
|
regex: "<\\%\\=?",
|
||||||
|
next: "lua-start"
|
||||||
|
}, {
|
||||||
|
token: "keyword",
|
||||||
|
regex: "<\\?lua\\=?",
|
||||||
|
next: "lua-start"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
this.embedRules(LuaHighlightRules, "lua-", [
|
||||||
|
{
|
||||||
|
token: "keyword",
|
||||||
|
regex: "\\%>",
|
||||||
|
next: "start"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
token: "keyword",
|
||||||
|
regex: "\\?>",
|
||||||
|
next: "start"
|
||||||
|
}
|
||||||
|
]);
|
||||||
|
};
|
||||||
|
|
||||||
|
oop.inherits(LuaPageHighlightRules, HtmlHighlightRules);
|
||||||
|
|
||||||
|
exports.LuaPageHighlightRules = LuaPageHighlightRules;
|
||||||
|
|
||||||
|
});
|
||||||
|
|
@ -80,7 +80,7 @@ var MarkdownHighlightRules = function() {
|
||||||
return "markup.heading." + value.length;
|
return "markup.heading." + value.length;
|
||||||
},
|
},
|
||||||
regex : "^#{1,6}"
|
regex : "^#{1,6}"
|
||||||
}, github_embed("javascript", "js-"),
|
}, github_embed("(?:javascript|js)", "js-"),
|
||||||
github_embed("xml", "xml-"),
|
github_embed("xml", "xml-"),
|
||||||
github_embed("html", "html-"),
|
github_embed("html", "html-"),
|
||||||
github_embed("css", "css-"),
|
github_embed("css", "css-"),
|
||||||
|
|
|
||||||
|
|
@ -90,7 +90,7 @@ function DefaultHandlers(mouseHandler) {
|
||||||
|
|
||||||
// 2: contextmenu, 1: linux paste
|
// 2: contextmenu, 1: linux paste
|
||||||
editor.textInput.onContextMenu(ev.domEvent);
|
editor.textInput.onContextMenu(ev.domEvent);
|
||||||
return ev.stop();
|
return; // stopping event here breaks contextmenu on ff mac
|
||||||
}
|
}
|
||||||
|
|
||||||
// if this click caused the editor to be focused should not clear the
|
// if this click caused the editor to be focused should not clear the
|
||||||
|
|
@ -109,13 +109,8 @@ function DefaultHandlers(mouseHandler) {
|
||||||
// a selection.
|
// a selection.
|
||||||
this.startSelect(pos);
|
this.startSelect(pos);
|
||||||
} else if (inSelection) {
|
} else if (inSelection) {
|
||||||
var e = ev.domEvent;
|
this.mousedownEvent.time = (new Date()).getTime();
|
||||||
if ((e.ctrlKey || e.altKey)) {
|
this.setState("dragWait");
|
||||||
this.startDrag();
|
|
||||||
} else {
|
|
||||||
this.mousedownEvent.time = (new Date()).getTime();
|
|
||||||
this.setState("dragWait");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
this.captureMouse(ev);
|
this.captureMouse(ev);
|
||||||
|
|
@ -146,8 +141,9 @@ function DefaultHandlers(mouseHandler) {
|
||||||
} else if (cmp == 1) {
|
} else if (cmp == 1) {
|
||||||
anchor = this.$clickSelection.start;
|
anchor = this.$clickSelection.start;
|
||||||
} else {
|
} else {
|
||||||
cursor = this.$clickSelection.end;
|
var orientedRange = calcRangeOrientation(this.$clickSelection, cursor);
|
||||||
anchor = this.$clickSelection.start;
|
cursor = orientedRange.cursor;
|
||||||
|
anchor = orientedRange.anchor;
|
||||||
}
|
}
|
||||||
editor.selection.setSelectionAnchor(anchor.row, anchor.column);
|
editor.selection.setSelectionAnchor(anchor.row, anchor.column);
|
||||||
}
|
}
|
||||||
|
|
@ -175,8 +171,9 @@ function DefaultHandlers(mouseHandler) {
|
||||||
cursor = range.end;
|
cursor = range.end;
|
||||||
anchor = range.start;
|
anchor = range.start;
|
||||||
} else {
|
} else {
|
||||||
cursor = this.$clickSelection.end;
|
var orientedRange = calcRangeOrientation(this.$clickSelection, cursor);
|
||||||
anchor = this.$clickSelection.start;
|
cursor = orientedRange.cursor;
|
||||||
|
anchor = orientedRange.anchor;
|
||||||
}
|
}
|
||||||
editor.selection.setSelectionAnchor(anchor.row, anchor.column);
|
editor.selection.setSelectionAnchor(anchor.row, anchor.column);
|
||||||
}
|
}
|
||||||
|
|
@ -221,7 +218,7 @@ function DefaultHandlers(mouseHandler) {
|
||||||
this.startSelect();
|
this.startSelect();
|
||||||
};
|
};
|
||||||
|
|
||||||
this.dragWait = function() {
|
this.dragWait = function(e) {
|
||||||
var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);
|
var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);
|
||||||
var time = (new Date()).getTime();
|
var time = (new Date()).getTime();
|
||||||
var editor = this.editor;
|
var editor = this.editor;
|
||||||
|
|
@ -229,7 +226,7 @@ function DefaultHandlers(mouseHandler) {
|
||||||
if (distance > DRAG_OFFSET) {
|
if (distance > DRAG_OFFSET) {
|
||||||
this.startSelect();
|
this.startSelect();
|
||||||
} else if (time - this.mousedownEvent.time > editor.getDragDelay()) {
|
} else if (time - this.mousedownEvent.time > editor.getDragDelay()) {
|
||||||
this.startDrag()
|
this.startDrag();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -277,12 +274,21 @@ function DefaultHandlers(mouseHandler) {
|
||||||
this.onDoubleClick = function(ev) {
|
this.onDoubleClick = function(ev) {
|
||||||
var pos = ev.getDocumentPosition();
|
var pos = ev.getDocumentPosition();
|
||||||
var editor = this.editor;
|
var editor = this.editor;
|
||||||
|
var session = editor.session
|
||||||
|
|
||||||
|
var range = session.getBracketRange(pos);
|
||||||
|
if (range) {
|
||||||
|
if (range.isEmpty()) {
|
||||||
|
range.start.column--;
|
||||||
|
range.end.column++;
|
||||||
|
}
|
||||||
|
this.$clickSelection = range;
|
||||||
|
this.setState("select");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.$clickSelection = editor.selection.getWordRange(pos.row, pos.column);
|
||||||
this.setState("selectByWords");
|
this.setState("selectByWords");
|
||||||
|
|
||||||
editor.moveCursorToPosition(pos);
|
|
||||||
editor.selection.selectWord();
|
|
||||||
this.$clickSelection = editor.getSelectionRange();
|
|
||||||
};
|
};
|
||||||
|
|
||||||
this.onTripleClick = function(ev) {
|
this.onTripleClick = function(ev) {
|
||||||
|
|
@ -334,4 +340,16 @@ function calcDistance(ax, ay, bx, by) {
|
||||||
return Math.sqrt(Math.pow(bx - ax, 2) + Math.pow(by - ay, 2));
|
return Math.sqrt(Math.pow(bx - ax, 2) + Math.pow(by - ay, 2));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function calcRangeOrientation(range, cursor) {
|
||||||
|
if (range.start.row == range.end.row)
|
||||||
|
var cmp = 2 * cursor.column - range.start.column - range.end.column;
|
||||||
|
else
|
||||||
|
var cmp = 2 * cursor.row - range.start.row - range.end.row;
|
||||||
|
|
||||||
|
if (cmp < 0)
|
||||||
|
return {cursor: range.start, anchor: range.end};
|
||||||
|
else
|
||||||
|
return {cursor: range.end, anchor: range.start};
|
||||||
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -40,6 +40,7 @@ define(function(require, exports, module) {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
var event = require("../lib/event");
|
var event = require("../lib/event");
|
||||||
|
var useragent = require("../lib/useragent");
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Custom Ace mouse event
|
* Custom Ace mouse event
|
||||||
|
|
@ -130,9 +131,9 @@ var MouseEvent = exports.MouseEvent = function(domEvent, editor) {
|
||||||
return this.domEvent.shiftKey;
|
return this.domEvent.shiftKey;
|
||||||
};
|
};
|
||||||
|
|
||||||
this.getAccelKey = function() {
|
this.getAccelKey = useragent.isMac
|
||||||
return this.domEvent.ctrlKey || this.domEvent.metaKey ;
|
? function() { return this.domEvent.metaKey; }
|
||||||
};
|
: function() { return this.domEvent.ctrlKey; };
|
||||||
|
|
||||||
}).call(MouseEvent.prototype);
|
}).call(MouseEvent.prototype);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -130,12 +130,12 @@ var MouseHandler = function(editor) {
|
||||||
renderer.$keepTextAreaAtCursor = null;
|
renderer.$keepTextAreaAtCursor = null;
|
||||||
|
|
||||||
var self = this;
|
var self = this;
|
||||||
var onMouseSelection = function(e) {
|
var onMouseMove = function(e) {
|
||||||
self.x = e.clientX;
|
self.x = e.clientX;
|
||||||
self.y = e.clientY;
|
self.y = e.clientY;
|
||||||
};
|
};
|
||||||
|
|
||||||
var onMouseSelectionEnd = function(e) {
|
var onCaptureEnd = function(e) {
|
||||||
clearInterval(timerId);
|
clearInterval(timerId);
|
||||||
self[self.state + "End"] && self[self.state + "End"](e);
|
self[self.state + "End"] && self[self.state + "End"](e);
|
||||||
self.$clickSelection = null;
|
self.$clickSelection = null;
|
||||||
|
|
@ -145,12 +145,12 @@ var MouseHandler = function(editor) {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
var onSelectionInterval = function() {
|
var onCaptureInterval = function() {
|
||||||
self[self.state] && self[self.state]();
|
self[self.state] && self[self.state]();
|
||||||
}
|
}
|
||||||
|
|
||||||
event.capture(this.editor.container, onMouseSelection, onMouseSelectionEnd);
|
event.capture(this.editor.container, onMouseMove, onCaptureEnd);
|
||||||
var timerId = setInterval(onSelectionInterval, 20);
|
var timerId = setInterval(onCaptureInterval, 20);
|
||||||
};
|
};
|
||||||
}).call(MouseHandler.prototype);
|
}).call(MouseHandler.prototype);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -53,18 +53,14 @@ function onMouseDown(e) {
|
||||||
var ctrl = e.getAccelKey();
|
var ctrl = e.getAccelKey();
|
||||||
var button = e.getButton();
|
var button = e.getButton();
|
||||||
|
|
||||||
|
if (e.editor.inMultiSelectMode && button == 2) {
|
||||||
|
e.editor.textInput.onContextMenu(e.domEvent);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (!ctrl && !alt) {
|
if (!ctrl && !alt) {
|
||||||
if (e.editor.inMultiSelectMode) {
|
if (button == 0 && e.editor.inMultiSelectMode)
|
||||||
if (button == 0) {
|
e.editor.exitMultiSelectMode();
|
||||||
e.editor.exitMultiSelectMode();
|
|
||||||
} else if (button == 2) {
|
|
||||||
var editor = e.editor;
|
|
||||||
var selectionEmpty = editor.selection.isEmpty();
|
|
||||||
editor.textInput.onContextMenu({x: e.clientX, y: e.clientY}, selectionEmpty);
|
|
||||||
event.capture(editor.container, function(){}, editor.textInput.onContextMenuClose);
|
|
||||||
e.stop();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -90,7 +90,6 @@ var Range = function(startRow, startColumn, endRow, endColumn) {
|
||||||
* [start.row/start.column] -> [end.row/end.column]
|
* [start.row/start.column] -> [end.row/end.column]
|
||||||
*
|
*
|
||||||
**/
|
**/
|
||||||
|
|
||||||
this.toString = function() {
|
this.toString = function() {
|
||||||
return ("Range: [" + this.start.row + "/" + this.start.column +
|
return ("Range: [" + this.start.row + "/" + this.start.column +
|
||||||
"] -> [" + this.end.row + "/" + this.end.column + "]");
|
"] -> [" + this.end.row + "/" + this.end.column + "]");
|
||||||
|
|
@ -424,7 +423,7 @@ var Range = function(startRow, startColumn, endRow, endColumn) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Range.compareInside(row, column) -> Number
|
* Range.compareInside(row, column) -> Number
|
||||||
* - row (Number): A row point to compare with
|
* - row (Number): A row point to compare with
|
||||||
* - column (Number): A column point to compare with
|
* - column (Number): A column point to compare with
|
||||||
|
|
@ -449,7 +448,7 @@ var Range = function(startRow, startColumn, endRow, endColumn) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Range.clipRows(firstRow, lastRow) -> Range
|
* Range.clipRows(firstRow, lastRow) -> Range
|
||||||
* - firstRow (Number): The starting row
|
* - firstRow (Number): The starting row
|
||||||
* - lastRow (Number): The ending row
|
* - lastRow (Number): The ending row
|
||||||
|
|
@ -488,7 +487,7 @@ var Range = function(startRow, startColumn, endRow, endColumn) {
|
||||||
return Range.fromPoints(start || this.start, end || this.end);
|
return Range.fromPoints(start || this.start, end || this.end);
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Range.extend(row, column) -> Range
|
* Range.extend(row, column) -> Range
|
||||||
* - row (Number): A new row to extend to
|
* - row (Number): A new row to extend to
|
||||||
* - column (Number): A new column to extend to
|
* - column (Number): A new column to extend to
|
||||||
|
|
@ -513,7 +512,7 @@ var Range = function(startRow, startColumn, endRow, endColumn) {
|
||||||
return (this.start.row == this.end.row && this.start.column == this.end.column);
|
return (this.start.row == this.end.row && this.start.column == this.end.column);
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Range.isMultiLine() -> Boolean
|
* Range.isMultiLine() -> Boolean
|
||||||
*
|
*
|
||||||
* Returns true if the range spans across multiple lines.
|
* Returns true if the range spans across multiple lines.
|
||||||
|
|
@ -523,7 +522,7 @@ var Range = function(startRow, startColumn, endRow, endColumn) {
|
||||||
return (this.start.row !== this.end.row);
|
return (this.start.row !== this.end.row);
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Range.clone() -> Range
|
* Range.clone() -> Range
|
||||||
*
|
*
|
||||||
* Returns a duplicate of the calling range.
|
* Returns a duplicate of the calling range.
|
||||||
|
|
@ -533,7 +532,7 @@ var Range = function(startRow, startColumn, endRow, endColumn) {
|
||||||
return Range.fromPoints(this.start, this.end);
|
return Range.fromPoints(this.start, this.end);
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Range.collapseRows() -> Range
|
* Range.collapseRows() -> Range
|
||||||
*
|
*
|
||||||
* Returns a range containing the starting and ending rows of the original range, but with a column value of `0`.
|
* Returns a range containing the starting and ending rows of the original range, but with a column value of `0`.
|
||||||
|
|
@ -546,7 +545,7 @@ var Range = function(startRow, startColumn, endRow, endColumn) {
|
||||||
return new Range(this.start.row, 0, this.end.row, 0)
|
return new Range(this.start.row, 0, this.end.row, 0)
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Range.toScreenRange(session) -> Range
|
* Range.toScreenRange(session) -> Range
|
||||||
* - session (EditSession): The `EditSession` to retrieve coordinates from
|
* - session (EditSession): The `EditSession` to retrieve coordinates from
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,6 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.ace-chrome .ace_text-layer {
|
.ace-chrome .ace_text-layer {
|
||||||
cursor: text;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.ace-chrome .ace_cursor {
|
.ace-chrome .ace_cursor {
|
||||||
|
|
@ -151,7 +150,10 @@ color:#FD971F;
|
||||||
color: rgb(255, 0, 0)
|
color: rgb(255, 0, 0)
|
||||||
}
|
}
|
||||||
|
|
||||||
.ace-chrome .ace_line .ace_string,
|
.ace-chrome .ace_line .ace_string{
|
||||||
|
color: #1A1AA6;
|
||||||
|
}
|
||||||
|
|
||||||
.ace-chrome .ace_entity.ace_other.ace_attribute-name{
|
.ace-chrome .ace_entity.ace_other.ace_attribute-name{
|
||||||
color: #994409;
|
color: #994409;
|
||||||
}
|
}
|
||||||
|
|
@ -22,7 +22,6 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.ace-clouds .ace_text-layer {
|
.ace-clouds .ace_text-layer {
|
||||||
cursor: text;
|
|
||||||
color: #000000;
|
color: #000000;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,6 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.ace-clouds-midnight .ace_text-layer {
|
.ace-clouds-midnight .ace_text-layer {
|
||||||
cursor: text;
|
|
||||||
color: #929292;
|
color: #929292;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,6 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.ace-cobalt .ace_text-layer {
|
.ace-cobalt .ace_text-layer {
|
||||||
cursor: text;
|
|
||||||
color: #FFFFFF;
|
color: #FFFFFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,6 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.ace-crimson-editor .ace_text-layer {
|
.ace-crimson-editor .ace_text-layer {
|
||||||
cursor: text;
|
|
||||||
color: rgb(64, 64, 64);
|
color: rgb(64, 64, 64);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,6 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.ace-dawn .ace_text-layer {
|
.ace-dawn .ace_text-layer {
|
||||||
cursor: text;
|
|
||||||
color: #080808;
|
color: #080808;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,6 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.ace-dreamweaver .ace_text-layer {
|
.ace-dreamweaver .ace_text-layer {
|
||||||
cursor: text;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.ace-dreamweaver .ace_cursor {
|
.ace-dreamweaver .ace_cursor {
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,6 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.ace-eclipse .ace_text-layer {
|
.ace-eclipse .ace_text-layer {
|
||||||
cursor: text;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.ace-eclipse .ace_cursor {
|
.ace-eclipse .ace_cursor {
|
||||||
|
|
|
||||||
81
lib/ace/theme/github.css
Normal file
81
lib/ace/theme/github.css
Normal file
|
|
@ -0,0 +1,81 @@
|
||||||
|
/* CSS style content from github's default pygments highlighter template.
|
||||||
|
Cursor and selection styles from textmate.css. */
|
||||||
|
.ace-github .ace_editor {
|
||||||
|
color: #333;
|
||||||
|
background-color: #F8F8F8;
|
||||||
|
border: 1px solid #CCC;
|
||||||
|
font: 13px 'Bitstream Vera Sans Mono', Courier, monospace !important;
|
||||||
|
line-height: 19px !important;
|
||||||
|
overflow: auto;
|
||||||
|
padding: 6px 10px;
|
||||||
|
border-radius: 3px;
|
||||||
|
position: relative;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ace-github .ace_keyword {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ace-github .ace_string {
|
||||||
|
color: #D14;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ace-github .ace_variable.ace_class {
|
||||||
|
color: teal;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ace-github .ace_constant.ace_numeric {
|
||||||
|
color: #099;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ace-github .ace_comment {
|
||||||
|
color: #998;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ace-github .ace_variable.ace_language {
|
||||||
|
color: #0086B3;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ace-github .ace_paren.ace_lparen,
|
||||||
|
.ace-github .ace_paren.ace_rparen {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ace-github .ace_constant.ace_language.ace_boolean {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ace-github .ace_string.ace_regexp {
|
||||||
|
color: #009926;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ace-github .ace_variable.ace_instancce {
|
||||||
|
color: teal;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ace-github .ace_constant.ace_language {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ace-github .ace_text-layer {
|
||||||
|
}
|
||||||
|
|
||||||
|
.ace-github .ace_cursor {
|
||||||
|
border-left: 2px solid black;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ace-github .ace_cursor.ace_overwrite {
|
||||||
|
border-left: 0px;
|
||||||
|
border-bottom: 1px solid black;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ace-github .ace_marker-layer .ace_selection {
|
||||||
|
background: rgb(181, 213, 255);
|
||||||
|
}
|
||||||
|
.ace-github.multiselect .ace_selection.start {
|
||||||
|
box-shadow: 0 0 3px 0px white;
|
||||||
|
border-radius: 2px;
|
||||||
|
}
|
||||||
46
lib/ace/theme/github.js
Normal file
46
lib/ace/theme/github.js
Normal file
|
|
@ -0,0 +1,46 @@
|
||||||
|
/* ***** BEGIN LICENSE BLOCK *****
|
||||||
|
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||||
|
*
|
||||||
|
* The contents of this file are subject to the Mozilla Public License Version
|
||||||
|
* 1.1 (the "License"); you may not use this file except in compliance with
|
||||||
|
* the License. You may obtain a copy of the License at
|
||||||
|
* http://www.mozilla.org/MPL/
|
||||||
|
*
|
||||||
|
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||||
|
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||||
|
* for the specific language governing rights and limitations under the
|
||||||
|
* License.
|
||||||
|
*
|
||||||
|
* The Original Code is Ajax.org Code Editor (ACE).
|
||||||
|
*
|
||||||
|
* The Initial Developer of the Original Code is
|
||||||
|
* Ajax.org B.V.
|
||||||
|
* Portions created by the Initial Developer are Copyright (C) 2010
|
||||||
|
* the Initial Developer. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Contributor(s):
|
||||||
|
* Fabian Jakobs <fabian AT ajax DOT org>
|
||||||
|
*
|
||||||
|
* Alternatively, the contents of this file may be used under the terms of
|
||||||
|
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||||
|
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||||
|
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||||
|
* of those above. If you wish to allow use of your version of this file only
|
||||||
|
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||||
|
* use your version of this file under the terms of the MPL, indicate your
|
||||||
|
* decision by deleting the provisions above and replace them with the notice
|
||||||
|
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||||
|
* the provisions above, a recipient may use your version of this file under
|
||||||
|
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||||
|
*
|
||||||
|
* ***** END LICENSE BLOCK ***** */
|
||||||
|
|
||||||
|
define(function(require, exports, module) {
|
||||||
|
|
||||||
|
exports.isDark = true;
|
||||||
|
exports.cssClass = "ace-github";
|
||||||
|
exports.cssText = require('ace/requirejs/text!./github.css');
|
||||||
|
|
||||||
|
var dom = require("../lib/dom");
|
||||||
|
dom.importCssString(exports.cssText, exports.cssClass);
|
||||||
|
});
|
||||||
|
|
@ -22,7 +22,6 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.ace-idle-fingers .ace_text-layer {
|
.ace-idle-fingers .ace_text-layer {
|
||||||
cursor: text;
|
|
||||||
color: #FFFFFF;
|
color: #FFFFFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,6 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.ace-kr-theme .ace_text-layer {
|
.ace-kr-theme .ace_text-layer {
|
||||||
cursor: text;
|
|
||||||
color: #FCFFE0;
|
color: #FCFFE0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,6 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.ace-merbivore .ace_text-layer {
|
.ace-merbivore .ace_text-layer {
|
||||||
cursor: text;
|
|
||||||
color: #E6E1DC;
|
color: #E6E1DC;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,6 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.ace-merbivore-soft .ace_text-layer {
|
.ace-merbivore-soft .ace_text-layer {
|
||||||
cursor: text;
|
|
||||||
color: #E6E1DC;
|
color: #E6E1DC;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,6 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.ace-mono-industrial .ace_text-layer {
|
.ace-mono-industrial .ace_text-layer {
|
||||||
cursor: text;
|
|
||||||
color: #FFFFFF;
|
color: #FFFFFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,6 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.ace-monokai .ace_text-layer {
|
.ace-monokai .ace_text-layer {
|
||||||
cursor: text;
|
|
||||||
color: #F8F8F2;
|
color: #F8F8F2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,6 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.ace-pastel-on-dark .ace_text-layer {
|
.ace-pastel-on-dark .ace_text-layer {
|
||||||
cursor: text;
|
|
||||||
color: #8F938F;
|
color: #8F938F;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,6 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.ace-solarized-dark .ace_text-layer {
|
.ace-solarized-dark .ace_text-layer {
|
||||||
cursor: text;
|
|
||||||
color: #93A1A1;
|
color: #93A1A1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,6 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.ace-solarized-light .ace_text-layer {
|
.ace-solarized-light .ace_text-layer {
|
||||||
cursor: text;
|
|
||||||
color: #586E75;
|
color: #586E75;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,6 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.ace-tm .ace_text-layer {
|
.ace-tm .ace_text-layer {
|
||||||
cursor: text;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.ace-tm .ace_cursor {
|
.ace-tm .ace_cursor {
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,6 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.ace-tomorrow .ace_text-layer {
|
.ace-tomorrow .ace_text-layer {
|
||||||
cursor: text;
|
|
||||||
color: #4D4D4C;
|
color: #4D4D4C;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,6 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.ace-tomorrow-night .ace_text-layer {
|
.ace-tomorrow-night .ace_text-layer {
|
||||||
cursor: text;
|
|
||||||
color: #C5C8C6;
|
color: #C5C8C6;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,6 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.ace-tomorrow-night-blue .ace_text-layer {
|
.ace-tomorrow-night-blue .ace_text-layer {
|
||||||
cursor: text;
|
|
||||||
color: #FFFFFF;
|
color: #FFFFFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,6 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.ace-tomorrow-night-bright .ace_text-layer {
|
.ace-tomorrow-night-bright .ace_text-layer {
|
||||||
cursor: text;
|
|
||||||
color: #DEDEDE;
|
color: #DEDEDE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,6 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.ace-tomorrow-night-eighties .ace_text-layer {
|
.ace-tomorrow-night-eighties .ace_text-layer {
|
||||||
cursor: text;
|
|
||||||
color: #CCCCCC;
|
color: #CCCCCC;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,6 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.ace-twilight .ace_text-layer {
|
.ace-twilight .ace_text-layer {
|
||||||
cursor: text;
|
|
||||||
color: #F8F8F8;
|
color: #F8F8F8;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,6 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.ace-vibrant-ink .ace_text-layer {
|
.ace-vibrant-ink .ace_text-layer {
|
||||||
cursor: text;
|
|
||||||
color: #FFFFFF;
|
color: #FFFFFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -263,8 +263,13 @@ var VirtualRenderer = function(container, theme) {
|
||||||
*
|
*
|
||||||
* Triggers a full update of all the layers, for all the rows.
|
* Triggers a full update of all the layers, for all the rows.
|
||||||
**/
|
**/
|
||||||
this.updateFull = function() {
|
this.updateFull = function(force) {
|
||||||
this.$loop.schedule(this.CHANGE_FULL);
|
if (force){
|
||||||
|
this.$renderChanges(this.CHANGE_FULL, true);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this.$loop.schedule(this.CHANGE_FULL);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -282,11 +287,19 @@ var VirtualRenderer = function(container, theme) {
|
||||||
*
|
*
|
||||||
* [Triggers a resize of the editor.]{: #VirtualRenderer.onResize}
|
* [Triggers a resize of the editor.]{: #VirtualRenderer.onResize}
|
||||||
**/
|
**/
|
||||||
this.onResize = function(force) {
|
this.onResize = function(force, gutterWidth, width, height) {
|
||||||
var changes = this.CHANGE_SIZE;
|
var changes = this.CHANGE_SIZE;
|
||||||
var size = this.$size;
|
var size = this.$size;
|
||||||
|
|
||||||
var height = dom.getInnerHeight(this.container);
|
if (this.resizing > 2)
|
||||||
|
return;
|
||||||
|
else if (this.resizing > 1)
|
||||||
|
this.resizing++;
|
||||||
|
else
|
||||||
|
this.resizing = force ? 1 : 0;
|
||||||
|
|
||||||
|
if (!height)
|
||||||
|
height = dom.getInnerHeight(this.container);
|
||||||
if (force || size.height != height) {
|
if (force || size.height != height) {
|
||||||
size.height = height;
|
size.height = height;
|
||||||
|
|
||||||
|
|
@ -300,20 +313,27 @@ var VirtualRenderer = function(container, theme) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var width = dom.getInnerWidth(this.container);
|
if (!width)
|
||||||
if (force || size.width != width) {
|
width = dom.getInnerWidth(this.container);
|
||||||
|
if (force || this.resizing > 1 || size.width != width) {
|
||||||
size.width = width;
|
size.width = width;
|
||||||
|
|
||||||
var gutterWidth = this.showGutter ? this.$gutter.offsetWidth : 0;
|
var gutterWidth = this.showGutter ? this.$gutter.offsetWidth : 0;
|
||||||
this.scroller.style.left = gutterWidth + "px";
|
this.scroller.style.left = gutterWidth + "px";
|
||||||
size.scrollerWidth = Math.max(0, width - gutterWidth - this.scrollBar.getWidth());
|
size.scrollerWidth = Math.max(0, width - gutterWidth - this.scrollBar.getWidth());
|
||||||
this.scroller.style.width = size.scrollerWidth + "px";
|
//this.scroller.style.width = size.scrollerWidth + "px";
|
||||||
|
|
||||||
if (this.session.getUseWrapMode() && this.adjustWrapLimit() || force)
|
if (this.session.getUseWrapMode() && this.adjustWrapLimit() || force)
|
||||||
changes = changes | this.CHANGE_FULL;
|
changes = changes | this.CHANGE_FULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.$loop.schedule(changes);
|
if (force)
|
||||||
|
this.$renderChanges(changes, true);
|
||||||
|
else
|
||||||
|
this.$loop.schedule(changes);
|
||||||
|
|
||||||
|
if (force)
|
||||||
|
delete this.resizing;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -467,14 +487,14 @@ var VirtualRenderer = function(container, theme) {
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!gutterReady) {
|
if (!gutterReady) {
|
||||||
var ch = this.$gutterLayer.element.children
|
var lineEl, ch = this.$gutterLayer.element.children;
|
||||||
var oldEl = ch[this.$gutterLineHighlight - this.layerConfig.firstRow];
|
var index = this.$gutterLineHighlight - this.layerConfig.firstRow;
|
||||||
if (oldEl)
|
if (index >= 0 && (lineEl = ch[index]))
|
||||||
dom.removeCssClass(oldEl, "ace_gutter_active_line");
|
dom.removeCssClass(lineEl, "ace_gutter_active_line");
|
||||||
|
|
||||||
var newEl = ch[i - this.layerConfig.firstRow];
|
index = i - this.layerConfig.firstRow;
|
||||||
if (newEl)
|
if (index >= 0 && (lineEl = ch[index]))
|
||||||
dom.addCssClass(newEl, "ace_gutter_active_line");
|
dom.addCssClass(lineEl, "ace_gutter_active_line");
|
||||||
}
|
}
|
||||||
|
|
||||||
this.$gutterLayer.removeGutterDecoration(this.$gutterLineHighlight, "ace_gutter_active_line");
|
this.$gutterLayer.removeGutterDecoration(this.$gutterLineHighlight, "ace_gutter_active_line");
|
||||||
|
|
@ -642,8 +662,8 @@ var VirtualRenderer = function(container, theme) {
|
||||||
this.scrollBar.setScrollTop(this.scrollTop);
|
this.scrollBar.setScrollTop(this.scrollTop);
|
||||||
};
|
};
|
||||||
|
|
||||||
this.$renderChanges = function(changes) {
|
this.$renderChanges = function(changes, force) {
|
||||||
if (!changes || !this.session || !this.container.offsetWidth)
|
if (!force && (!changes || !this.session || !this.container.offsetWidth))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// text, scrolling and resize changes can cause the view port size to change
|
// text, scrolling and resize changes can cause the view port size to change
|
||||||
|
|
|
||||||
|
|
@ -56,14 +56,17 @@ var WorkerClient = function(topLevelNamespaces, packagedJs, mod, classname) {
|
||||||
workerUrl = require.nameToUrl("ace/worker/worker_sourcemint");
|
workerUrl = require.nameToUrl("ace/worker/worker_sourcemint");
|
||||||
} else {
|
} else {
|
||||||
// We are running in RequireJS.
|
// We are running in RequireJS.
|
||||||
workerUrl = this.$normalizePath(require.nameToUrl("ace/worker/worker", null, "_"));
|
// nameToUrl is renamed to toUrl in requirejs 2
|
||||||
|
if (require.nameToUrl && !require.toUrl)
|
||||||
|
require.toUrl = require.nameToUrl;
|
||||||
|
workerUrl = this.$normalizePath(require.toUrl("ace/worker/worker", null, "_"));
|
||||||
}
|
}
|
||||||
this.$worker = new Worker(workerUrl);
|
this.$worker = new Worker(workerUrl);
|
||||||
|
|
||||||
var tlns = {};
|
var tlns = {};
|
||||||
for (var i=0; i<topLevelNamespaces.length; i++) {
|
for (var i=0; i<topLevelNamespaces.length; i++) {
|
||||||
var ns = topLevelNamespaces[i];
|
var ns = topLevelNamespaces[i];
|
||||||
var path = this.$normalizePath(require.nameToUrl(ns, null, "_").replace(/.js$/, ""));
|
var path = this.$normalizePath(require.toUrl(ns, null, "_").replace(/.js$/, ""));
|
||||||
|
|
||||||
tlns[ns] = path;
|
tlns[ns] = path;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -11,9 +11,7 @@
|
||||||
"url" : "http://github.com/ajaxorg/ace.git"
|
"url" : "http://github.com/ajaxorg/ace.git"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"mime": "1.2.x"
|
"mime": "1.2.x",
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"asyncjs": "0.0.x",
|
"asyncjs": "0.0.x",
|
||||||
"jsdom": "0.2.x",
|
"jsdom": "0.2.x",
|
||||||
"amd-loader": "~0.0.4",
|
"amd-loader": "~0.0.4",
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,6 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.%cssClass% .ace_text-layer {
|
.%cssClass% .ace_text-layer {
|
||||||
cursor: text;
|
|
||||||
color: %foreground%;
|
color: %foreground%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue