Merge git://github.com/ajaxorg/ace
This commit is contained in:
commit
c9cef12b9f
87 changed files with 1295 additions and 884 deletions
|
|
@ -4,7 +4,7 @@
|
|||
*
|
||||
* Copyright (c) 2010, Ajax.org B.V.
|
||||
* All rights reserved.
|
||||
*
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
|
|
@ -15,7 +15,7 @@
|
|||
* * Neither the name of Ajax.org B.V. nor the
|
||||
* names of its contributors may be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
|
|
@ -30,8 +30,11 @@
|
|||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
var fs = require("fs");
|
||||
var path = require("path");
|
||||
if (!fs.existsSync)
|
||||
fs.existsSync = require("path").existsSync;
|
||||
fs.existsSync = path.existsSync;
|
||||
else
|
||||
path.existsSync = fs.existsSync;
|
||||
var copy = require('dryice').copy;
|
||||
|
||||
var ACE_HOME = __dirname;
|
||||
|
|
@ -44,7 +47,7 @@ function main(args) {
|
|||
return "-" + x;
|
||||
return x;
|
||||
});
|
||||
|
||||
|
||||
if (args[2] && (args[2][0] != "-" || args[2].indexOf("h") != -1))
|
||||
type = args[2];
|
||||
|
||||
|
|
@ -66,8 +69,7 @@ function main(args) {
|
|||
} else if (type == "bm") {
|
||||
bookmarklet();
|
||||
} else if (type == "full") {
|
||||
ace();
|
||||
demo();
|
||||
demo(ace());
|
||||
bookmarklet();
|
||||
}
|
||||
}
|
||||
|
|
@ -120,7 +122,7 @@ function ace() {
|
|||
console.log('# ace ---------');
|
||||
|
||||
// uncompressed
|
||||
buildAce({
|
||||
var project = buildAce({
|
||||
compress: false,
|
||||
noconflict: false
|
||||
});
|
||||
|
|
@ -153,9 +155,16 @@ function ace() {
|
|||
source: ACE_HOME + "/ChangeLog.txt",
|
||||
dest: BUILD_DIR + "/ChangeLog.txt"
|
||||
});
|
||||
|
||||
return project;
|
||||
}
|
||||
|
||||
function demo() {
|
||||
function demo(project) {
|
||||
project = project || buildAce({
|
||||
compress: false,
|
||||
noconflict: false,
|
||||
coreOnly: true
|
||||
});
|
||||
console.log('# kitchen sink ---------');
|
||||
|
||||
var version, ref;
|
||||
|
|
@ -166,23 +175,26 @@ function demo() {
|
|||
ref = "";
|
||||
version = "";
|
||||
}
|
||||
var changeComments = function(data) {
|
||||
return (data
|
||||
.replace(/<!\-\-DEVEL[\d\D]*?DEVEL\-\->/g, "")
|
||||
.replace(/PACKAGE\-\->|<!\-\-PACKAGE/g, "")
|
||||
.replace(/\/\*DEVEL[\d\D]*?DEVEL\*\//g, "")
|
||||
.replace(/PACKAGE\*\/|\/\*PACKAGE/g, "")
|
||||
.replace("%version%", version)
|
||||
.replace("%commit%", ref)
|
||||
);
|
||||
}
|
||||
|
||||
function changeComments(data) {
|
||||
return (data
|
||||
.replace(/<!\-\-DEVEL[\d\D]*?DEVEL\-\->/g, "")
|
||||
.replace(/PACKAGE\-\->|<!\-\-PACKAGE/g, "")
|
||||
.replace(/\/\*DEVEL[\d\D]*?DEVEL\*\//g, "")
|
||||
.replace(/PACKAGE\*\/|\/\*PACKAGE/g, "")
|
||||
.replace("%version%", version)
|
||||
.replace("%commit%", ref)
|
||||
);
|
||||
};
|
||||
|
||||
function fixDocPaths(data) {
|
||||
return data.replace(/"(demo|build)\//g, "\"");
|
||||
}
|
||||
|
||||
copy({
|
||||
source: ACE_HOME + "/kitchen-sink.html",
|
||||
dest: BUILD_DIR + "/kitchen-sink.html",
|
||||
filter: [changeComments, function(data) {
|
||||
return data.replace(/"(demo|build)\//g, "\"");
|
||||
}]
|
||||
filter: [changeComments, fixDocPaths]
|
||||
});
|
||||
|
||||
copy({
|
||||
|
|
@ -199,22 +211,17 @@ function demo() {
|
|||
});
|
||||
|
||||
var demo = copy.createDataObject();
|
||||
|
||||
project.assumeAllFilesLoaded();
|
||||
copy({
|
||||
source: ACE_HOME + "/demo/kitchen-sink/demo.js",
|
||||
dest: demo,
|
||||
filter: [changeComments, function(data) {
|
||||
return data.replace(/"(demo|build)\//g, "\"");
|
||||
}, function(data) {
|
||||
return data.replace("define(", "define('kitchen-sink/demo',");
|
||||
}]
|
||||
});
|
||||
copy({
|
||||
source: ACE_HOME + "/lib/ace/split.js",
|
||||
dest: demo,
|
||||
filter: [changeComments, function(data) {
|
||||
return data.replace("define(", "define('ace/split',");
|
||||
}]
|
||||
source: [{
|
||||
project: cloneProject(project),
|
||||
require: [ "kitchen-sink/demo" ]
|
||||
}],
|
||||
filter: getWriteFilters({filters:[fixDocPaths]}, "demo"),
|
||||
dest: demo
|
||||
});
|
||||
|
||||
copy({
|
||||
source: demo,
|
||||
dest: BUILD_DIR + "/kitchen-sink/demo.js",
|
||||
|
|
@ -223,7 +230,57 @@ function demo() {
|
|||
copyFileSync(ACE_HOME + "/demo/kitchen-sink/logo.png", BUILD_DIR + "/kitchen-sink/logo.png");
|
||||
}
|
||||
|
||||
function buildAce(options) {
|
||||
function jsFileList(path, filter) {
|
||||
path = ACE_HOME + "/" + path;
|
||||
if (!filter)
|
||||
filter = /_test/;
|
||||
|
||||
return fs.readdirSync(path).map(function(x) {
|
||||
if (x.slice(-3) == ".js" && !filter.test(x))
|
||||
return x.slice(0, -3);
|
||||
}).filter(function(x){ return !!x });
|
||||
}
|
||||
|
||||
function addSuffix(options) {
|
||||
if (options.suffix == null) {
|
||||
options.suffix = "";
|
||||
if (options.compress)
|
||||
options.suffix += "-min";
|
||||
if (options.noconflict)
|
||||
options.suffix += "-noconflict";
|
||||
}
|
||||
}
|
||||
|
||||
function getWriteFilters(options, projectType) {
|
||||
var filters = [
|
||||
copy.filter.moduleDefines,
|
||||
removeUseStrict,
|
||||
removeLicenceComments,
|
||||
inlineTextModules
|
||||
];
|
||||
|
||||
if (options.filters)
|
||||
filters = filters.concat(options.filters);
|
||||
|
||||
if (projectType == "worker")
|
||||
return filters;
|
||||
|
||||
if (options.noconflict)
|
||||
filters.push(namespace(options.ns));
|
||||
|
||||
if (options.compress)
|
||||
filters.push(copy.filter.uglifyjs);
|
||||
|
||||
if (options.exportModule && projectType == "main") {
|
||||
if (options.noconflict)
|
||||
filters.push(exportAce(options.ns, options.exportModule, options.ns));
|
||||
else
|
||||
filters.push(exportAce(options.ns, options.exportModule));
|
||||
}
|
||||
return filters;
|
||||
}
|
||||
|
||||
var buildAce = function(options) {
|
||||
var aceProject = {
|
||||
roots: [ACE_HOME + '/lib', ACE_HOME + '/demo'],
|
||||
textPluginPattern: /^ace\/requirejs\/text!/
|
||||
|
|
@ -238,51 +295,22 @@ function buildAce(options) {
|
|||
noconflict: false,
|
||||
suffix: null,
|
||||
name: "ace",
|
||||
modes: fs.readdirSync(ACE_HOME + "/lib/ace/mode").map(function(x) {
|
||||
if (x.slice(-3) == ".js" && !/_highlight_rules|_test|_worker|xml_util|_outdent|behaviour/.test(x))
|
||||
return x.slice(0, -3);
|
||||
}).filter(function(x) { return !!x; }),
|
||||
themes: fs.readdirSync(ACE_HOME + "/lib/ace/theme").map(function(x){
|
||||
return x.slice(-3) == ".js" && x.slice(0, -3);
|
||||
}).filter(function(x){ return !!x; }),
|
||||
modes: jsFileList("lib/ace/mode", /_highlight_rules|_test|_worker|xml_util|_outdent|behaviour/),
|
||||
themes: jsFileList("lib/ace/theme"),
|
||||
extensions: jsFileList("lib/ace/ext"),
|
||||
workers: ["javascript", "coffee", "css", "json", "xquery"],
|
||||
keybindings: ["vim", "emacs"]
|
||||
};
|
||||
|
||||
|
||||
for(var key in defaults)
|
||||
if (!options.hasOwnProperty(key))
|
||||
options[key] = defaults[key];
|
||||
|
||||
if (options.suffix == null) {
|
||||
options.suffix = "";
|
||||
if (options.compress)
|
||||
options.suffix += "-min";
|
||||
if (options.noconflict)
|
||||
options.suffix += "-noconflict";
|
||||
}
|
||||
addSuffix(options);
|
||||
|
||||
if (!options.requires)
|
||||
options.requires = [options.exportModule];
|
||||
|
||||
var filters = [
|
||||
copy.filter.moduleDefines,
|
||||
filterTextPlugin,
|
||||
removeUseStrict,
|
||||
removeLicenceCmments
|
||||
];
|
||||
|
||||
if (options.noconflict) {
|
||||
filters.push(namespace(options.ns));
|
||||
if (options.exportModule)
|
||||
var exportFilter = exportAce(options.ns, options.exportModule, options.ns);
|
||||
} else if (options.exportModule) {
|
||||
var exportFilter = exportAce(options.ns, options.exportModule);
|
||||
}
|
||||
|
||||
if (options.compress)
|
||||
filters.push(copy.filter.uglifyjs);
|
||||
|
||||
var targetDir = options.targetDir + options.suffix;
|
||||
var name = options.name;
|
||||
|
||||
|
|
@ -300,10 +328,13 @@ function buildAce(options) {
|
|||
filter: [ copy.filter.moduleDefines ],
|
||||
dest: ace
|
||||
});
|
||||
|
||||
if (options.coreOnly)
|
||||
return project;
|
||||
|
||||
copy({
|
||||
source: ace,
|
||||
filter: exportFilter ? filters.concat(exportFilter) : filters,
|
||||
filter: getWriteFilters(options, "main"),
|
||||
dest: targetDir + '/' + name + ".js"
|
||||
});
|
||||
|
||||
|
|
@ -317,7 +348,7 @@ function buildAce(options) {
|
|||
project: cloneProject(project),
|
||||
require: [ 'ace/mode/' + mode ]
|
||||
}],
|
||||
filter: filters,
|
||||
filter: getWriteFilters(options, "mode"),
|
||||
dest: targetDir + "/mode-" + mode + ".js"
|
||||
});
|
||||
});
|
||||
|
|
@ -327,26 +358,29 @@ function buildAce(options) {
|
|||
project.assumeAllFilesLoaded();
|
||||
options.themes.forEach(function(theme) {
|
||||
console.log("theme " + theme);
|
||||
/*copy({
|
||||
copy({
|
||||
source: [{
|
||||
project: cloneProject(project),
|
||||
require: ["ace/theme/" + theme]
|
||||
}],
|
||||
filter: filters,
|
||||
dest: targetDir + "/theme-" + theme + ".js"
|
||||
});*/
|
||||
// use this instead, to not create separate modules for js and css
|
||||
var themePath = ACE_HOME + "/lib/ace/theme/" + theme
|
||||
var js = fs.readFileSync(themePath + ".js", "utf8");
|
||||
js = js.replace("define(", "define('ace/theme/" + theme + "', ['require', 'exports', 'module', 'ace/lib/dom'], ");
|
||||
|
||||
if (fs.existsSync(themePath + ".css", "utf8")) {
|
||||
var css = fs.readFileSync(themePath + ".css", "utf8")
|
||||
js = js.replace(/require\(.ace\/requirejs\/text!.*?\)/, quoteString(css))
|
||||
}
|
||||
filters.forEach(function(f) {js = f(js); });
|
||||
|
||||
fs.writeFileSync(targetDir + "/theme-" + theme + ".js", js);
|
||||
filter: getWriteFilters(options, "theme"),
|
||||
dest: targetDir + "/theme-" + theme.replace("_theme", "") + ".js"
|
||||
});
|
||||
});
|
||||
|
||||
console.log('# ace extensions ---------');
|
||||
|
||||
project.assumeAllFilesLoaded();
|
||||
options.extensions.forEach(function(ext) {
|
||||
console.log("extensions " + ext);
|
||||
copy({
|
||||
source: [{
|
||||
project: cloneProject(project),
|
||||
require: [ 'ace/ext/' + ext ]
|
||||
}],
|
||||
filter: getWriteFilters(options, "ext"),
|
||||
dest: targetDir + "/ext-" + ext + ".js"
|
||||
});
|
||||
});
|
||||
|
||||
console.log('# ace key bindings ---------');
|
||||
|
|
@ -359,19 +393,12 @@ function buildAce(options) {
|
|||
project: cloneProject(project),
|
||||
require: [ 'ace/keyboard/' + keybinding ]
|
||||
}],
|
||||
filter: filters,
|
||||
filter: getWriteFilters(options, "keybinding"),
|
||||
dest: targetDir + "/keybinding-" + keybinding + ".js"
|
||||
});
|
||||
});
|
||||
|
||||
console.log('# ace worker ---------');
|
||||
|
||||
filters = [
|
||||
copy.filter.moduleDefines,
|
||||
filterTextPlugin,
|
||||
removeUseStrict,
|
||||
removeLicenceCmments
|
||||
];
|
||||
|
||||
options.workers.forEach(function(mode) {
|
||||
console.log("worker for " + mode + " mode");
|
||||
|
|
@ -390,7 +417,7 @@ function buildAce(options) {
|
|||
'ace/mode/' + mode + '_worker'
|
||||
]
|
||||
}],
|
||||
filter: filters,
|
||||
filter: getWriteFilters(options, "worker"),
|
||||
dest: worker
|
||||
});
|
||||
copy({
|
||||
|
|
@ -404,14 +431,70 @@ function buildAce(options) {
|
|||
});
|
||||
|
||||
|
||||
console.log('# combining files into one ---------');
|
||||
|
||||
if (options.shrinkwrap) {
|
||||
console.log('# combining files into one ---------');
|
||||
copy({
|
||||
source: { root:targetDir, exclude:/^worker\-/ },
|
||||
dest: BUILD_DIR + '/ace-min.js'
|
||||
});
|
||||
}
|
||||
|
||||
return project;
|
||||
};
|
||||
|
||||
// silence annoying messages from dryice
|
||||
var buildAce = function(fn) {
|
||||
return function() {
|
||||
var log = console.log
|
||||
console.log = function() {
|
||||
if (typeof arguments[0] == "string" && /Ignoring requirement/.test(arguments[0]))
|
||||
return;
|
||||
log.apply(console, arguments);
|
||||
}
|
||||
var ret = fn.apply(null, arguments);
|
||||
console.log = log;
|
||||
return ret;
|
||||
}
|
||||
}(buildAce);
|
||||
|
||||
var textModules = {}
|
||||
var detectTextModules = function(input, source) {
|
||||
if (!source)
|
||||
throw new Error('Missing filename for text module');
|
||||
|
||||
if (typeof input !== 'string')
|
||||
input = input.toString();
|
||||
|
||||
var module = source.isLocation ? source.path : source;
|
||||
|
||||
input = input.replace(/\\/g, "\\\\").replace(/"/g, '\\"');
|
||||
input = input.replace(/\n\s+/g, "\n");
|
||||
input = '"' + input.replace(/\n/g, '\\\n') + '"';
|
||||
textModules[module] = input;
|
||||
|
||||
return "";
|
||||
};
|
||||
detectTextModules.onRead = true;
|
||||
copy.filter.addDefines = detectTextModules;
|
||||
|
||||
function inlineTextModules(text) {
|
||||
var lastDep = "";
|
||||
return text.replace(/, *['"]ace\/requirejs\/text!(.*?)['"]|= *require\(['"](?:ace|[.\/]+)\/requirejs\/text!(.*?)['"]\)/g, function(_, dep, call) {
|
||||
if (dep) {
|
||||
if (!lastDep) {
|
||||
lastDep = dep;
|
||||
return "";
|
||||
}
|
||||
} else if (call) {
|
||||
call = textModules[lastDep];
|
||||
delete textModules[lastDep];
|
||||
lastDep = "";
|
||||
if (call)
|
||||
return "= " + call;
|
||||
}
|
||||
console.log(dep, lastDep, call);
|
||||
throw "inlining of multiple text modules is not supported";
|
||||
});
|
||||
}
|
||||
|
||||
// TODO: replace with project.clone once it is fixed in dryice
|
||||
|
|
@ -432,6 +515,7 @@ function cloneProject(project) {
|
|||
|
||||
return clone;
|
||||
}
|
||||
|
||||
function copyFileSync(srcFile, destFile) {
|
||||
var BUF_LENGTH = 64*1024,
|
||||
buf = new Buffer(BUF_LENGTH),
|
||||
|
|
@ -458,16 +542,12 @@ function quoteString(str) {
|
|||
return '"' + str.replace(/\\/, "\\\\").replace(/"/g, '\\"').replace(/\n/g, "\\\n") + '"';
|
||||
}
|
||||
|
||||
function filterTextPlugin(text) {
|
||||
return text.replace(/(['"])ace\/requirejs\/text\!/g, "$1text!");
|
||||
}
|
||||
|
||||
function removeUseStrict(text) {
|
||||
return text.replace(/['"]use strict['"];/g, "");
|
||||
}
|
||||
|
||||
function removeLicenceCmments(text) {
|
||||
return text.replace(/(;)\s*\/\*[\d\D]*?\*\//g, "$1");
|
||||
function removeLicenceComments(text) {
|
||||
return text.replace(/(?:(;)|\n)\s*\/\*[\d\D]*?\*\/|\n\s*\/\/.*/g, "$1");
|
||||
}
|
||||
|
||||
function namespace(ns) {
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
BIN
doc/site/images/ideone-logo.png
Normal file
BIN
doc/site/images/ideone-logo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.9 KiB |
|
|
@ -2,6 +2,7 @@ var editor;
|
|||
var embedded_editor;
|
||||
$(function() {
|
||||
hljs.initHighlighting();
|
||||
ace.config.set("workerPath", "build/src-min");
|
||||
editor = ace.edit("ace_editor_demo");
|
||||
embedded_editor = ace.edit("embedded_ace_code");
|
||||
editor.getSession().setMode("ace/mode/javascript");
|
||||
|
|
|
|||
|
|
@ -250,6 +250,14 @@ ul.menu-list li {
|
|||
hsl(0,0%,90%) 47%,
|
||||
hsl(0,0%,78%) 53%,
|
||||
hsl(0,0%,70%)100%);
|
||||
background-image: -moz-repeating-linear-gradient(left, hsla(0,0%,100%,0) 0%, hsla(0,0%,100%,0) 6%, hsla(0,0%,100%, .1) 7.5%),
|
||||
-moz-repeating-linear-gradient(left, hsla(0,0%, 0%,0) 0%, hsla(0,0%, 0%,0) 4%, hsla(0,0%, 0%,.03) 4.5%),
|
||||
-moz-repeating-linear-gradient(left, hsla(0,0%,100%,0) 0%, hsla(0,0%,100%,0) 1.2%, hsla(0,0%,100%,.15) 2.2%),
|
||||
|
||||
-moz-linear-gradient(-90deg, hsl(0,0%,78%) 0%,
|
||||
hsl(0,0%,90%) 47%,
|
||||
hsl(0,0%,78%) 53%,
|
||||
hsl(0,0%,70%)100%);
|
||||
}
|
||||
|
||||
ul.menu-list li:hover {
|
||||
|
|
|
|||
|
|
@ -514,6 +514,11 @@ tests for the highlighting.</p>
|
|||
style="position: relative; left: 10px;top: -5px;width: 80px;" />
|
||||
<a href="http://SpanDeX.io/">SpanDeX.io</a>
|
||||
</li>
|
||||
<li>
|
||||
<img src="doc/site/images/ideone-logo.png"
|
||||
style="position: relative; left: -5px; top: 20px;">
|
||||
<a href="http://ideone.com">Ideone.com</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://github.com/Gozala/sky-edit">Sky Edit</a>
|
||||
</li>
|
||||
|
|
|
|||
54
install.js
54
install.js
|
|
@ -33,27 +33,41 @@
|
|||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
var buildAce = require("./Makefile.dryice").buildAce;
|
||||
|
||||
var fs = require("fs");
|
||||
|
||||
var ACE_HOME = __dirname;
|
||||
|
||||
try {
|
||||
var aceProject = {
|
||||
roots: [
|
||||
ACE_HOME + '/lib',
|
||||
ACE_HOME + '/demo'
|
||||
],
|
||||
textPluginPattern: /^ace\/requirejs\/text!/
|
||||
};
|
||||
buildAce(aceProject, {
|
||||
compress: false,
|
||||
noconflict: false,
|
||||
suffix: "",
|
||||
compat: true,
|
||||
name: "ace"
|
||||
});
|
||||
} catch (e) {
|
||||
console.log("--- Ace Build error ---");
|
||||
console.log(e);
|
||||
process.exit(0);
|
||||
function getVersion(path) {
|
||||
if (fs.existsSync(path + "/.git-ref"))
|
||||
return fs.readFileSync(path + "/.git-ref", "utf8");
|
||||
if (fs.existsSync(path + "/.git/ORIG_HEAD"))
|
||||
return fs.readFileSync(path + "/.git/ORIG_HEAD", "utf8");
|
||||
if (fs.existsSync(path + "/.sourcemint/source.json")) {
|
||||
var json = fs.readFileSync(path + "/.sourcemint/source.json", "utf8");
|
||||
return JSON.parse(json).url.split("/").pop();
|
||||
}
|
||||
}
|
||||
|
||||
if (process.argv.indexOf("-c") > 0) try {
|
||||
var version = getVersion(ACE_HOME);
|
||||
var oldVersion = getVersion(ACE_HOME + "/build");
|
||||
if (version && oldVersion == version) {
|
||||
console.log("ace build is up to date");
|
||||
process.exit(0);
|
||||
}
|
||||
fs.writeFileSync(ACE_HOME + "/build/.git-ref", version, "utf8");
|
||||
} catch (e) {}
|
||||
|
||||
try {
|
||||
buildAce({
|
||||
compress: false,
|
||||
noconflict: false,
|
||||
suffix: "",
|
||||
name: "ace"
|
||||
});
|
||||
|
||||
} catch (err) {
|
||||
console.error("--- Ace Build error ---");
|
||||
console.error(err.stack);
|
||||
process.exit(1);
|
||||
}
|
||||
|
|
@ -53,8 +53,8 @@ var MultiSelect = require("./multi_select").MultiSelect;
|
|||
// The following require()s are for inclusion in the built ace file
|
||||
require("./worker/worker_client");
|
||||
require("./keyboard/hash_handler");
|
||||
require("./keyboard/state_handler");
|
||||
require("./placeholder");
|
||||
require("./mode/folding/fold_mode");
|
||||
exports.config = require("./config");
|
||||
/**
|
||||
* Ace.edit(el) -> Editor
|
||||
|
|
@ -66,9 +66,8 @@ exports.config = require("./config");
|
|||
exports.edit = function(el) {
|
||||
if (typeof(el) == "string") {
|
||||
var _id = el;
|
||||
if (!(el = document.getElementById(el))) {
|
||||
console.log("can't match div #" + _id);
|
||||
}
|
||||
if (!(el = document.getElementById(el)))
|
||||
throw "ace.edit can't find div #" + _id;
|
||||
}
|
||||
|
||||
if (el.env && el.env.editor instanceof Editor)
|
||||
|
|
|
|||
|
|
@ -321,11 +321,26 @@ exports.commands = [{
|
|||
bindKey: bindKey("Ctrl-Shift-D", "Command-Shift-D"),
|
||||
exec: function(editor) { editor.duplicateSelection(); },
|
||||
multiSelectAction: "forEach"
|
||||
}, {
|
||||
name: "sortlines",
|
||||
bindKey: bindKey("Ctrl-Alt-S", "Command-Alt-S"),
|
||||
exec: function(editor) { editor.sortLines(); },
|
||||
multiSelectAction: "forEach"
|
||||
}, {
|
||||
name: "togglecomment",
|
||||
bindKey: bindKey("Ctrl-/", "Command-/"),
|
||||
exec: function(editor) { editor.toggleCommentLines(); },
|
||||
multiSelectAction: "forEach"
|
||||
}, {
|
||||
name: "modifyNumberUp",
|
||||
bindKey: bindKey("Ctrl-Shift-Up", "Alt-Shift-Up"),
|
||||
exec: function(editor) { editor.modifyNumber(1); },
|
||||
multiSelectAction: "forEach"
|
||||
}, {
|
||||
name: "modifyNumberDown",
|
||||
bindKey: bindKey("Ctrl-Shift-Down", "Alt-Shift-Down"),
|
||||
exec: function(editor) { editor.modifyNumber(-1); },
|
||||
multiSelectAction: "forEach"
|
||||
}, {
|
||||
name: "replace",
|
||||
bindKey: bindKey("Ctrl-R", "Command-Option-F"),
|
||||
|
|
|
|||
|
|
@ -39,9 +39,10 @@ var global = (function() {
|
|||
|
||||
var options = {
|
||||
packaged: false,
|
||||
workerPath: "",
|
||||
modePath: "",
|
||||
themePath: "",
|
||||
workerPath: null,
|
||||
modePath: null,
|
||||
themePath: null,
|
||||
basePath: "",
|
||||
suffix: ".js",
|
||||
$moduleUrls: {}
|
||||
};
|
||||
|
|
@ -74,7 +75,12 @@ exports.moduleUrl = function(name, component) {
|
|||
|
||||
if (!base && parts.length > 1)
|
||||
base = parts[parts.length - 2];
|
||||
return this.get(component + "Path") + "/" + component + "-" + base + this.get("suffix");
|
||||
var path = options[component + "Path"];
|
||||
if (path == null)
|
||||
path = options.basePath;
|
||||
if (path && path.slice(-1) != "/")
|
||||
path += "/";
|
||||
return path + component + "-" + base + this.get("suffix");
|
||||
};
|
||||
|
||||
exports.setModuleUrl = function(name, subst) {
|
||||
|
|
@ -95,9 +101,8 @@ exports.init = function() {
|
|||
var script = scripts[i];
|
||||
|
||||
var src = script.src || script.getAttribute("src");
|
||||
if (!src) {
|
||||
if (!src)
|
||||
continue;
|
||||
}
|
||||
|
||||
var attributes = script.attributes;
|
||||
for (var j=0, l=attributes.length; j < l; j++) {
|
||||
|
|
|
|||
71
lib/ace/config_test.js
Normal file
71
lib/ace/config_test.js
Normal file
|
|
@ -0,0 +1,71 @@
|
|||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Distributed under the BSD license:
|
||||
*
|
||||
* Copyright (c) 2010, Ajax.org B.V.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* * Neither the name of Ajax.org B.V. nor the
|
||||
* names of its contributors may be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
|
||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
if (typeof process !== "undefined") {
|
||||
require("amd-loader");
|
||||
}
|
||||
|
||||
define(function(require, exports, module) {
|
||||
"use strict";
|
||||
|
||||
var config = require("./config");
|
||||
var assert = require("./test/assertions");
|
||||
|
||||
module.exports = {
|
||||
|
||||
"test path resolution" : function() {
|
||||
config.set("packaged", "true");
|
||||
var url = config.moduleUrl("kr_theme", "theme");
|
||||
assert.equal(url, "theme-kr.js");
|
||||
|
||||
config.set("basePath", "a/b");
|
||||
url = config.moduleUrl("m/theme", "theme");
|
||||
assert.equal(url, "a/b/theme-m.js");
|
||||
|
||||
url = config.moduleUrl("m/theme", "ext");
|
||||
assert.equal(url, "a/b/ext-theme.js");
|
||||
|
||||
config.set("workerPath", "c/");
|
||||
url = config.moduleUrl("foo/1", "worker");
|
||||
assert.equal(url, "c/worker-1.js");
|
||||
|
||||
config.setModuleUrl("foo/1", "a/b1.js");
|
||||
url = config.moduleUrl("foo/1", "theme");
|
||||
assert.equal(url, "a/b1.js");
|
||||
|
||||
assert.equal();
|
||||
}
|
||||
};
|
||||
|
||||
});
|
||||
|
||||
if (typeof module !== "undefined" && module === require.main) {
|
||||
require("asyncjs").test.testcase(module.exports).exec()
|
||||
}
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
.ace_editor {
|
||||
position: absolute;
|
||||
overflow: hidden;
|
||||
font-family: 'Menlo', 'Monaco', 'Ubuntu Mono', 'Consolas', 'source-code-pro', monospace;
|
||||
font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro', monospace;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
|
|
@ -148,10 +148,22 @@
|
|||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.ace_cursor.ace_hidden {
|
||||
.ace_hidden-cursors .ace_cursor {
|
||||
opacity: 0.2;
|
||||
}
|
||||
|
||||
.ace_smooth-blinking .ace_cursor {
|
||||
-moz-transition: opacity 0.18s;
|
||||
-webkit-transition: opacity 0.18s;
|
||||
-o-transition: opacity 0.18s;
|
||||
-ms-transition: opacity 0.18s;
|
||||
transition: opacity 0.18s;
|
||||
}
|
||||
|
||||
.ace_cursor[style*="opacity: 0"]{
|
||||
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
|
||||
}
|
||||
|
||||
.ace_editor.ace_multiselect .ace_cursor {
|
||||
border-left-width: 1px;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -375,14 +375,7 @@ var EditSession = function(text, mode) {
|
|||
token.start = c - token.value.length;
|
||||
return token;
|
||||
};
|
||||
|
||||
this.highlight = function(re) {
|
||||
if (!this.$searchHighlight) {
|
||||
var highlight = new SearchHighlight(null, "ace_selected-word", "text");
|
||||
this.$searchHighlight = this.addDynamicMarker(highlight);
|
||||
}
|
||||
this.$searchHighlight.setRegexp(re);
|
||||
}
|
||||
|
||||
/**
|
||||
* EditSession.setUndoManager(undoManager)
|
||||
* - undoManager (UndoManager): The new undo manager
|
||||
|
|
@ -736,6 +729,30 @@ var EditSession = function(text, mode) {
|
|||
return inFront ? this.$frontMarkers : this.$backMarkers;
|
||||
};
|
||||
|
||||
this.highlight = function(re) {
|
||||
if (!this.$searchHighlight) {
|
||||
var highlight = new SearchHighlight(null, "ace_selected-word", "text");
|
||||
this.$searchHighlight = this.addDynamicMarker(highlight);
|
||||
}
|
||||
this.$searchHighlight.setRegexp(re);
|
||||
}
|
||||
|
||||
// experimental
|
||||
this.highlightLines = function(startRow, endRow, clazz, inFront) {
|
||||
if (typeof endRow != "number") {
|
||||
clazz = endRow;
|
||||
endRow = startRow;
|
||||
}
|
||||
if (!clazz)
|
||||
clazz = "ace_step";
|
||||
|
||||
var range = new Range(startRow, 0, endRow, Infinity);
|
||||
|
||||
var id = this.addMarker(range, clazz, "fullLine", inFront);
|
||||
range.id = id;
|
||||
return range;
|
||||
},
|
||||
|
||||
/*
|
||||
* Error:
|
||||
* {
|
||||
|
|
|
|||
|
|
@ -481,28 +481,24 @@ var Editor = function(renderer, session) {
|
|||
this.$updateHighlightActiveLine = function() {
|
||||
var session = this.getSession();
|
||||
|
||||
if (session.$highlightLineMarker)
|
||||
session.removeMarker(session.$highlightLineMarker);
|
||||
|
||||
session.$highlightLineMarker = null;
|
||||
|
||||
var highlight;
|
||||
if (this.$highlightActiveLine) {
|
||||
var cursor = this.getCursorPosition();
|
||||
var foldLine = this.session.getFoldLine(cursor.row);
|
||||
if ((this.$selectionStyle != "line" || !this.selection.isMultiLine()))
|
||||
highlight = this.getCursorPosition();
|
||||
}
|
||||
|
||||
if ((this.getSelectionStyle() != "line" || !this.selection.isMultiLine())) {
|
||||
var range;
|
||||
if (foldLine) {
|
||||
range = new Range(foldLine.start.row, 0, foldLine.end.row + 1, 0);
|
||||
} else {
|
||||
range = new Range(cursor.row, 0, cursor.row+1, 0);
|
||||
}
|
||||
session.$highlightLineMarker = session.addMarker(range, "ace_active-line", "background");
|
||||
}
|
||||
if (session.$highlightLineMarker && !highlight) {
|
||||
session.removeMarker(session.$highlightLineMarker.id);
|
||||
session.$highlightLineMarker = null;
|
||||
} else if (!session.$highlightLineMarker && highlight) {
|
||||
session.$highlightLineMarker = session.highlightLines(highlight.row, highlight.row, "ace_active-line");
|
||||
} else if (highlight) {
|
||||
session.$highlightLineMarker.start.row = highlight.row;
|
||||
session.$highlightLineMarker.end.row = highlight.row;
|
||||
session._emit("changeBackMarker");
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
this.onSelectionChange = function(e) {
|
||||
var session = this.session;
|
||||
|
||||
|
|
@ -656,6 +652,11 @@ var Editor = function(renderer, session) {
|
|||
this.insert(text);
|
||||
};
|
||||
|
||||
|
||||
this.execCommand = function(command, args) {
|
||||
this.commands.exec(command, this, args);
|
||||
};
|
||||
|
||||
/**
|
||||
* Editor.insert(text)
|
||||
* - text (String): The new text to add
|
||||
|
|
@ -1276,10 +1277,35 @@ var Editor = function(renderer, session) {
|
|||
this.session.outdentRows(selection.getRange());
|
||||
};
|
||||
|
||||
// TODO: move out of core when we have good mechanism for managing extensions
|
||||
this.sortLines = function() {
|
||||
var rows = this.$getSelectedRows();
|
||||
var session = this.session;
|
||||
|
||||
var lines = [];
|
||||
for (i = rows.first; i <= rows.last; i++)
|
||||
lines.push(session.getLine(i));
|
||||
|
||||
lines.sort(function(a, b) {
|
||||
if (a.toLowerCase() < b.toLowerCase()) return -1;
|
||||
if (a.toLowerCase() > b.toLowerCase()) return 1;
|
||||
return 0;
|
||||
});
|
||||
|
||||
var deleteRange = new Range(0, 0, 0, 0);
|
||||
for (var i = rows.first; i <= rows.last; i++) {
|
||||
var line = session.getLine(i);
|
||||
deleteRange.start.row = i;
|
||||
deleteRange.end.row = i;
|
||||
deleteRange.end.column = line.length;
|
||||
session.replace(deleteRange, lines[i-rows.first]);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Editor.toggleCommentLines()
|
||||
*
|
||||
* Given the currently selected range, this function either comments all lines or uncomments all lines (depending on whether it's commented or not).
|
||||
* Given the currently selected range, this function either comments all the lines, or uncomments all of them.
|
||||
**/
|
||||
this.toggleCommentLines = function() {
|
||||
var state = this.session.getState(this.getCursorPosition().row);
|
||||
|
|
@ -1287,6 +1313,78 @@ var Editor = function(renderer, session) {
|
|||
this.session.getMode().toggleCommentLines(state, this.session, rows.first, rows.last);
|
||||
};
|
||||
|
||||
/**
|
||||
* Editor.getNumberAt() -> Number
|
||||
*
|
||||
* Works like [[Editor.getTokenAt]], except it returns a number.
|
||||
**/
|
||||
this.getNumberAt = function( row, column ) {
|
||||
var _numberRx = /[\-]?[0-9]+(?:\.[0-9]+)?/g
|
||||
_numberRx.lastIndex = 0
|
||||
|
||||
var s = this.session.getLine(row)
|
||||
while(_numberRx.lastIndex < column - 1 ){
|
||||
var m = _numberRx.exec(s)
|
||||
if(m.index <= column && m.index+m[0].length >= column){
|
||||
var number = {
|
||||
value: m[0],
|
||||
start: m.index,
|
||||
end: m.index+m[0].length
|
||||
|
||||
}
|
||||
return number
|
||||
}
|
||||
}
|
||||
return null;
|
||||
};
|
||||
/**
|
||||
* Editor.modifyNumber(amount)
|
||||
* - amount (Number): The value to change the numeral by (can be negative to decrease value)
|
||||
*
|
||||
* If the character before the cursor is a number, this functions changes its value by `amount`.
|
||||
**/
|
||||
this.modifyNumber = function(amount) {
|
||||
var row = this.selection.getCursor().row;
|
||||
var column = this.selection.getCursor().column;
|
||||
|
||||
// get the char before the cursor
|
||||
var charRange = new Range(row, column-1, row, column);
|
||||
|
||||
var c = this.session.getTextRange(charRange);
|
||||
// if the char is a digit
|
||||
if (!isNaN(parseFloat(c)) && isFinite(c)) {
|
||||
// get the whole number the digit is part of
|
||||
var nr = this.getNumberAt(row, column);
|
||||
// if number found
|
||||
if (nr) {
|
||||
var fp = nr.value.indexOf(".") >= 0 ? nr.start + nr.value.indexOf(".") + 1 : nr.end;
|
||||
var decimals = nr.start + nr.value.length - fp;
|
||||
|
||||
var t = parseFloat(nr.value);
|
||||
t *= Math.pow(10, decimals);
|
||||
|
||||
|
||||
if(fp !== nr.end && column < fp){
|
||||
amount *= Math.pow(10, nr.end - column - 1);
|
||||
} else {
|
||||
amount *= Math.pow(10, nr.end - column);
|
||||
}
|
||||
|
||||
t += amount;
|
||||
t /= Math.pow(10, decimals);
|
||||
var nnr = t.toFixed(decimals);
|
||||
|
||||
//update number
|
||||
var replaceRange = new Range(row, nr.start, row, nr.end);
|
||||
this.session.replace(replaceRange, nnr);
|
||||
|
||||
//reposition the cursor
|
||||
this.moveCursorTo(row, Math.max(nr.start +1, column + nnr.length - nr.value.length));
|
||||
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/** related to: EditSession.remove
|
||||
* Editor.removeLines()
|
||||
*
|
||||
|
|
@ -1308,20 +1406,20 @@ var Editor = function(renderer, session) {
|
|||
|
||||
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)
|
||||
}
|
||||
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
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ var UA = require("../lib/useragent");
|
|||
var net = require("../lib/net");
|
||||
var ace = require("../ace");
|
||||
|
||||
require("ace/theme/textmate");
|
||||
require("../theme/textmate");
|
||||
|
||||
module.exports = exports = ace;
|
||||
|
||||
|
|
|
|||
|
|
@ -66,7 +66,7 @@ exports.handler.attach = function(editor) {
|
|||
opacity: 1;\
|
||||
background-color: transparent;\
|
||||
}\
|
||||
.emacs-mode .ace_cursor.ace_overwrite {\
|
||||
.emacs-mode .ace_overwrite-cursors .ace_cursor {\
|
||||
opacity: 1;\
|
||||
background-color: transparent;\
|
||||
border-width: 0 0 2px 2px !important;\
|
||||
|
|
|
|||
|
|
@ -298,7 +298,7 @@ var TextInput = function(parentNode, host) {
|
|||
host.renderer.$keepTextAreaAtCursor = null;
|
||||
|
||||
// on windows context menu is opened after mouseup
|
||||
if (useragent.isWin && (useragent.isGecko || useragent.isIE))
|
||||
if (useragent.isWin)
|
||||
event.capture(host.container, function(e) {
|
||||
text.style.left = e.clientX - 2 + "px";
|
||||
text.style.top = e.clientY - 2 + "px";
|
||||
|
|
|
|||
|
|
@ -127,7 +127,7 @@ var StringStream = function(editor, cursor) {
|
|||
};
|
||||
};
|
||||
|
||||
var Search = require("ace/search").Search;
|
||||
var Search = require("../../../search").Search;
|
||||
var search = new Search();
|
||||
|
||||
function find(editor, needle, dir) {
|
||||
|
|
@ -136,7 +136,7 @@ function find(editor, needle, dir) {
|
|||
return search.find(editor.session);
|
||||
}
|
||||
|
||||
var Range = require("ace/range").Range;
|
||||
var Range = require("../../../range").Range;
|
||||
|
||||
module.exports = {
|
||||
"w": new Motion(function(editor) {
|
||||
|
|
|
|||
|
|
@ -40,9 +40,12 @@ var Cursor = function(parentEl) {
|
|||
|
||||
this.isVisible = false;
|
||||
this.isBlinking = true;
|
||||
this.blinkInterval = 1000;
|
||||
this.smoothBlinking = false;
|
||||
|
||||
this.cursors = [];
|
||||
this.cursor = this.addCursor();
|
||||
dom.addCssClass(this.element, "ace_hidden-cursors");
|
||||
};
|
||||
|
||||
(function() {
|
||||
|
|
@ -57,20 +60,33 @@ var Cursor = function(parentEl) {
|
|||
};
|
||||
|
||||
this.setBlinking = function(blinking) {
|
||||
this.isBlinking = blinking;
|
||||
if (blinking)
|
||||
if (blinking != this.isBlinking){
|
||||
this.isBlinking = blinking;
|
||||
this.restartTimer();
|
||||
}
|
||||
};
|
||||
|
||||
this.setBlinkInterval = function(blinkInterval) {
|
||||
if (blinkInterval != this.blinkInterval){
|
||||
this.blinkInterval = blinkInterval;
|
||||
this.restartTimer();
|
||||
}
|
||||
};
|
||||
|
||||
this.setSmoothBlinking = function(smoothBlinking) {
|
||||
if (smoothBlinking != this.smoothBlinking) {
|
||||
this.smoothBlinking = smoothBlinking;
|
||||
if (smoothBlinking)
|
||||
dom.addCssClass(this.element, "ace_smooth-blinking");
|
||||
else
|
||||
dom.removeCssClass(this.element, "ace_smooth-blinking");
|
||||
this.restartTimer();
|
||||
}
|
||||
};
|
||||
|
||||
this.addCursor = function() {
|
||||
var el = dom.createElement("div");
|
||||
var className = "ace_cursor";
|
||||
if (!this.isVisible)
|
||||
className += " ace_hidden";
|
||||
if (this.overwrite)
|
||||
className += " ace_overwrite";
|
||||
|
||||
el.className = className;
|
||||
el.className = "ace_cursor";
|
||||
this.element.appendChild(el);
|
||||
this.cursors.push(el);
|
||||
return el;
|
||||
|
|
@ -86,118 +102,113 @@ var Cursor = function(parentEl) {
|
|||
|
||||
this.hideCursor = function() {
|
||||
this.isVisible = false;
|
||||
for (var i = this.cursors.length; i--; )
|
||||
dom.addCssClass(this.cursors[i], "ace_hidden");
|
||||
clearInterval(this.blinkId);
|
||||
dom.addCssClass(this.element, "ace_hidden-cursors");
|
||||
this.restartTimer();
|
||||
};
|
||||
|
||||
this.showCursor = function() {
|
||||
this.isVisible = true;
|
||||
for (var i = this.cursors.length; i--; )
|
||||
dom.removeCssClass(this.cursors[i], "ace_hidden");
|
||||
|
||||
this.element.style.visibility = "";
|
||||
dom.removeCssClass(this.element, "ace_hidden-cursors");
|
||||
this.restartTimer();
|
||||
};
|
||||
|
||||
this.restartTimer = function() {
|
||||
clearInterval(this.blinkId);
|
||||
if (!this.isBlinking)
|
||||
return;
|
||||
if (!this.isVisible)
|
||||
clearInterval(this.intervalId);
|
||||
clearTimeout(this.timeoutId);
|
||||
if (this.smoothBlinking)
|
||||
dom.removeCssClass(this.element, "ace_smooth-blinking");
|
||||
for (var i = this.cursors.length; i--; )
|
||||
this.cursors[i].style.opacity = "";
|
||||
|
||||
if (!this.isBlinking || !this.blinkInterval || !this.isVisible)
|
||||
return;
|
||||
|
||||
var element = this.cursors.length == 1 ? this.cursor : this.element;
|
||||
this.blinkId = setInterval(function() {
|
||||
element.style.visibility = "hidden";
|
||||
setTimeout(function() {
|
||||
element.style.visibility = "";
|
||||
}, 400);
|
||||
}, 1000);
|
||||
if (this.smoothBlinking)
|
||||
setTimeout(function(){
|
||||
dom.addCssClass(this.element, "ace_smooth-blinking");
|
||||
}.bind(this));
|
||||
|
||||
var blink = function(){
|
||||
this.timeoutId = setTimeout(function() {
|
||||
for (var i = this.cursors.length; i--; ) {
|
||||
this.cursors[i].style.opacity = 0;
|
||||
}
|
||||
}.bind(this), 0.6 * this.blinkInterval);
|
||||
}.bind(this);
|
||||
|
||||
this.intervalId = setInterval(function() {
|
||||
for (var i = this.cursors.length; i--; ) {
|
||||
this.cursors[i].style.opacity = "";
|
||||
}
|
||||
blink();
|
||||
}.bind(this), this.blinkInterval);
|
||||
|
||||
blink();
|
||||
};
|
||||
|
||||
this.getPixelPosition = function(position, onScreen) {
|
||||
if (!this.config || !this.session) {
|
||||
return {
|
||||
left : 0,
|
||||
top : 0
|
||||
};
|
||||
}
|
||||
if (!this.config || !this.session)
|
||||
return {left : 0, top : 0};
|
||||
|
||||
if (!position)
|
||||
position = this.session.selection.getCursor();
|
||||
var pos = this.session.documentToScreenPosition(position);
|
||||
var cursorLeft = Math.round(this.$padding +
|
||||
pos.column * this.config.characterWidth);
|
||||
var cursorLeft = this.$padding + pos.column * this.config.characterWidth;
|
||||
var cursorTop = (pos.row - (onScreen ? this.config.firstRowScreen : 0)) *
|
||||
this.config.lineHeight;
|
||||
|
||||
return {
|
||||
left : cursorLeft,
|
||||
top : cursorTop
|
||||
};
|
||||
return {left : cursorLeft, top : cursorTop};
|
||||
};
|
||||
|
||||
this.update = function(config) {
|
||||
this.config = config;
|
||||
|
||||
if (this.session.selectionMarkerCount > 0) {
|
||||
var selections = this.session.$selectionMarkers;
|
||||
var i = 0, sel, cursorIndex = 0;
|
||||
var selections = this.session.$selectionMarkers;
|
||||
var i = 0, cursorIndex = 0;
|
||||
|
||||
for (var i = selections.length; i--; ) {
|
||||
sel = selections[i];
|
||||
var pixelPos = this.getPixelPosition(sel.cursor, true);
|
||||
if ((pixelPos.top > config.height + config.offset ||
|
||||
pixelPos.top < -config.offset) && i > 1) {
|
||||
continue;
|
||||
}
|
||||
if (selections === undefined || selections.length === 0){
|
||||
selections = [{cursor: null}];
|
||||
}
|
||||
|
||||
var style = (this.cursors[cursorIndex++] || this.addCursor()).style;
|
||||
|
||||
style.left = pixelPos.left + "px";
|
||||
style.top = pixelPos.top + "px";
|
||||
style.width = config.characterWidth + "px";
|
||||
style.height = config.lineHeight + "px";
|
||||
for (var i = selections.length; i--; ) {
|
||||
var pixelPos = this.getPixelPosition(selections[i].cursor, true);
|
||||
if ((pixelPos.top > config.height + config.offset ||
|
||||
pixelPos.top < -config.offset) && i > 1) {
|
||||
continue;
|
||||
}
|
||||
if (cursorIndex > 1)
|
||||
while (this.cursors.length > cursorIndex)
|
||||
this.removeCursor();
|
||||
} else {
|
||||
var pixelPos = this.getPixelPosition(null, true);
|
||||
var style = this.cursor.style;
|
||||
|
||||
var style = (this.cursors[cursorIndex++] || this.addCursor()).style;
|
||||
|
||||
style.left = pixelPos.left + "px";
|
||||
style.top = pixelPos.top + "px";
|
||||
style.width = config.characterWidth + "px";
|
||||
style.height = config.lineHeight + "px";
|
||||
|
||||
while (this.cursors.length > 1)
|
||||
this.removeCursor();
|
||||
}
|
||||
while (this.cursors.length > cursorIndex)
|
||||
this.removeCursor();
|
||||
|
||||
var overwrite = this.session.getOverwrite();
|
||||
if (overwrite != this.overwrite)
|
||||
this.$setOverwrite(overwrite);
|
||||
this.$setOverwrite(overwrite);
|
||||
|
||||
// cache for textarea and gutter highlight
|
||||
this.$pixelPos = pixelPos;
|
||||
|
||||
this.restartTimer();
|
||||
};
|
||||
|
||||
this.$setOverwrite = function(overwrite) {
|
||||
this.overwrite = overwrite;
|
||||
for (var i = this.cursors.length; i--; ) {
|
||||
if (overwrite != this.overwrite) {
|
||||
this.overwrite = overwrite;
|
||||
if (overwrite)
|
||||
dom.addCssClass(this.cursors[i], "ace_overwrite");
|
||||
dom.addCssClass(this.element, "ace_overwrite-cursors");
|
||||
else
|
||||
dom.removeCssClass(this.cursors[i], "ace_overwrite");
|
||||
dom.removeCssClass(this.element, "ace_overwrite-cursors");
|
||||
}
|
||||
};
|
||||
|
||||
this.destroy = function() {
|
||||
clearInterval(this.blinkId);
|
||||
}
|
||||
clearInterval(this.intervalId);
|
||||
clearTimeout(this.timeoutId);
|
||||
};
|
||||
|
||||
}).call(Cursor.prototype);
|
||||
|
||||
|
|
|
|||
|
|
@ -78,26 +78,20 @@ var Marker = function(parentEl) {
|
|||
range = range.toScreenRange(this.session);
|
||||
if (marker.renderer) {
|
||||
var top = this.$getTop(range.start.row, config);
|
||||
var left = Math.round(
|
||||
this.$padding + range.start.column * config.characterWidth
|
||||
);
|
||||
var left = this.$padding + range.start.column * config.characterWidth;
|
||||
marker.renderer(html, range, left, top, config);
|
||||
}
|
||||
if (marker.type == "fullLine") {
|
||||
this.drawFullLineMarker(html, range, marker.clazz, config);
|
||||
}
|
||||
else if (range.isMultiLine()) {
|
||||
if (marker.type == "text") {
|
||||
if (marker.type == "text")
|
||||
this.drawTextMarker(html, range, marker.clazz, config);
|
||||
} else {
|
||||
this.drawMultiLineMarker(
|
||||
html, range, marker.clazz, config,
|
||||
marker.type
|
||||
);
|
||||
}
|
||||
else
|
||||
this.drawMultiLineMarker(html, range, marker.clazz, config);
|
||||
}
|
||||
else {
|
||||
this.drawSingleLineMarker(
|
||||
html, range, marker.clazz + " ace_start", config,
|
||||
null, marker.type
|
||||
);
|
||||
this.drawSingleLineMarker(html, range, marker.clazz + " ace_start", config);
|
||||
}
|
||||
}
|
||||
this.element = dom.setInnerHtml(this.element, html.join(""));
|
||||
|
|
@ -133,11 +127,11 @@ var Marker = function(parentEl) {
|
|||
|
||||
// Draws a multi line marker, where lines span the full width
|
||||
this.drawMultiLineMarker = function(stringBuilder, range, clazz, config, type) {
|
||||
var padding = type === "background" ? 0 : this.$padding;
|
||||
// from selection start to the end of the line
|
||||
var padding = this.$padding;
|
||||
var height = config.lineHeight;
|
||||
var top = this.$getTop(range.start.row, config);
|
||||
var left = Math.round(padding + range.start.column * config.characterWidth);
|
||||
var left = padding + range.start.column * config.characterWidth;
|
||||
|
||||
stringBuilder.push(
|
||||
"<div class='", clazz, " ace_start' style='",
|
||||
|
|
@ -149,7 +143,7 @@ var Marker = function(parentEl) {
|
|||
|
||||
// from start of the last line to the selection end
|
||||
top = this.$getTop(range.end.row, config);
|
||||
var width = Math.round(range.end.column * config.characterWidth);
|
||||
var width = range.end.column * config.characterWidth;
|
||||
|
||||
stringBuilder.push(
|
||||
"<div class='", clazz, "' style='",
|
||||
|
|
@ -175,19 +169,12 @@ var Marker = function(parentEl) {
|
|||
};
|
||||
|
||||
// Draws a marker which covers part or whole width of a single screen line
|
||||
this.drawSingleLineMarker = function(stringBuilder, range, clazz, layerConfig, extraLength, type) {
|
||||
var padding = type === "background" ? 0 : this.$padding;
|
||||
var height = layerConfig.lineHeight;
|
||||
this.drawSingleLineMarker = function(stringBuilder, range, clazz, config, extraLength) {
|
||||
var height = config.lineHeight;
|
||||
var width = (range.end.column + (extraLength || 0) - range.start.column) * config.characterWidth;
|
||||
|
||||
if (type === "background")
|
||||
var width = layerConfig.width;
|
||||
else
|
||||
width = Math.round((range.end.column + (extraLength || 0) - range.start.column) * layerConfig.characterWidth);
|
||||
|
||||
var top = this.$getTop(range.start.row, layerConfig);
|
||||
var left = Math.round(
|
||||
padding + range.start.column * layerConfig.characterWidth
|
||||
);
|
||||
var top = this.$getTop(range.start.row, config);
|
||||
var left = this.$padding + range.start.column * config.characterWidth;
|
||||
|
||||
stringBuilder.push(
|
||||
"<div class='", clazz, "' style='",
|
||||
|
|
@ -198,6 +185,20 @@ var Marker = function(parentEl) {
|
|||
);
|
||||
};
|
||||
|
||||
this.drawFullLineMarker = function(stringBuilder, range, clazz, config) {
|
||||
var top = this.$getTop(range.start.row, config);
|
||||
var height = config.lineHeight;
|
||||
if (range.start.row != range.end.row)
|
||||
height += this.$getTop(range.end.row, config) - top;
|
||||
|
||||
stringBuilder.push(
|
||||
"<div class='", clazz, "' style='",
|
||||
"height:", height, "px;",
|
||||
"top:", top, "px;",
|
||||
"left:0;right:0;'></div>"
|
||||
);
|
||||
}
|
||||
|
||||
}).call(Marker.prototype);
|
||||
|
||||
exports.Marker = Marker;
|
||||
|
|
|
|||
|
|
@ -543,10 +543,33 @@ if (!Object.getOwnPropertyNames) {
|
|||
// ES5 15.2.3.5
|
||||
// http://es5.github.com/#x15.2.3.5
|
||||
if (!Object.create) {
|
||||
var createEmpty;
|
||||
if (Object.prototype.__proto__ === null) {
|
||||
createEmpty = function () {
|
||||
return { "__proto__": null };
|
||||
};
|
||||
} else {
|
||||
// In old IE __proto__ can't be used to manually set `null`
|
||||
createEmpty = function () {
|
||||
var empty = {};
|
||||
for (var i in empty)
|
||||
empty[i] = null;
|
||||
empty.constructor =
|
||||
empty.hasOwnProperty =
|
||||
empty.propertyIsEnumerable =
|
||||
empty.isPrototypeOf =
|
||||
empty.toLocaleString =
|
||||
empty.toString =
|
||||
empty.valueOf =
|
||||
empty.__proto__ = null;
|
||||
return empty;
|
||||
}
|
||||
}
|
||||
|
||||
Object.create = function create(prototype, properties) {
|
||||
var object;
|
||||
if (prototype === null) {
|
||||
object = { "__proto__": null };
|
||||
object = createEmpty();
|
||||
} else {
|
||||
if (typeof prototype != "object")
|
||||
throw new TypeError("typeof prototype["+(typeof prototype)+"] != 'object'");
|
||||
|
|
|
|||
|
|
@ -33,19 +33,70 @@ define(function(require, exports, module) {
|
|||
|
||||
var oop = require("../../lib/oop");
|
||||
var Behaviour = require("../behaviour").Behaviour;
|
||||
var TokenIterator = require("../../token_iterator").TokenIterator;
|
||||
|
||||
var autoInsertedBrackets = 0;
|
||||
var autoInsertedRow = -1;
|
||||
var autoInsertedLineEnd = "";
|
||||
|
||||
var CstyleBehaviour = function () {
|
||||
|
||||
CstyleBehaviour.isSaneInsertion = function(editor, session) {
|
||||
var cursor = editor.getCursorPosition();
|
||||
var iterator = new TokenIterator(session, cursor.row, cursor.column);
|
||||
|
||||
// Don't insert in the middle of a keyword/identifier/lexical
|
||||
if (!this.$matchTokenType(iterator.getCurrentToken() || "text", ["text", "paren.rparen"])) {
|
||||
// Look ahead in case we're at the end of a token
|
||||
iterator = new TokenIterator(session, cursor.row, cursor.column + 1);
|
||||
if (!this.$matchTokenType(iterator.getCurrentToken() || "text", ["text", "paren.rparen"]))
|
||||
return false;
|
||||
}
|
||||
|
||||
// Only insert in front of whitespace/comments
|
||||
iterator.stepForward();
|
||||
return iterator.getCurrentTokenRow() !== cursor.row ||
|
||||
this.$matchTokenType(iterator.getCurrentToken() || "text", ["text", "comment", "paren.rparen"]);
|
||||
};
|
||||
|
||||
CstyleBehaviour.$matchTokenType = function(token, types) {
|
||||
return types.indexOf(token.type || token) > -1;
|
||||
};
|
||||
|
||||
CstyleBehaviour.recordAutoInsert = function(editor, session, bracket) {
|
||||
var cursor = editor.getCursorPosition();
|
||||
var line = session.doc.getLine(cursor.row);
|
||||
// Reset previous state if text or context changed too much
|
||||
if (!this.isAutoInsertedClosing(cursor, line, autoInsertedLineEnd[0]))
|
||||
autoInsertedBrackets = 0;
|
||||
autoInsertedRow = cursor.row;
|
||||
autoInsertedLineEnd = bracket + line.substr(cursor.column);
|
||||
autoInsertedBrackets++;
|
||||
};
|
||||
|
||||
CstyleBehaviour.isAutoInsertedClosing = function(cursor, line, bracket) {
|
||||
return autoInsertedBrackets > 0 &&
|
||||
cursor.row === autoInsertedRow &&
|
||||
bracket === autoInsertedLineEnd[0] &&
|
||||
line.substr(cursor.column) === autoInsertedLineEnd;
|
||||
};
|
||||
|
||||
CstyleBehaviour.popAutoInsertedClosing = function() {
|
||||
autoInsertedLineEnd = autoInsertedLineEnd.substr(1);
|
||||
autoInsertedBrackets--;
|
||||
};
|
||||
|
||||
this.add("braces", "insertion", function (state, action, editor, session, text) {
|
||||
if (text == '{') {
|
||||
var selection = editor.getSelectionRange();
|
||||
var selected = session.doc.getTextRange(selection);
|
||||
if (selected !== "") {
|
||||
if (selected !== "" && selected !== "{") {
|
||||
return {
|
||||
text: '{' + selected + '}',
|
||||
selection: false
|
||||
};
|
||||
} else {
|
||||
} else if (CstyleBehaviour.isSaneInsertion(editor, session)) {
|
||||
CstyleBehaviour.recordAutoInsert(editor, session, "}");
|
||||
return {
|
||||
text: '{}',
|
||||
selection: [1, 1]
|
||||
|
|
@ -57,7 +108,8 @@ var CstyleBehaviour = function () {
|
|||
var rightChar = line.substring(cursor.column, cursor.column + 1);
|
||||
if (rightChar == '}') {
|
||||
var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row});
|
||||
if (matching !== null) {
|
||||
if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {
|
||||
CstyleBehaviour.popAutoInsertedClosing();
|
||||
return {
|
||||
text: '',
|
||||
selection: [1, 1]
|
||||
|
|
@ -105,7 +157,8 @@ var CstyleBehaviour = function () {
|
|||
text: '(' + selected + ')',
|
||||
selection: false
|
||||
};
|
||||
} else {
|
||||
} else if (CstyleBehaviour.isSaneInsertion(editor, session)) {
|
||||
CstyleBehaviour.recordAutoInsert(editor, session, ")");
|
||||
return {
|
||||
text: '()',
|
||||
selection: [1, 1]
|
||||
|
|
@ -117,7 +170,8 @@ var CstyleBehaviour = function () {
|
|||
var rightChar = line.substring(cursor.column, cursor.column + 1);
|
||||
if (rightChar == ')') {
|
||||
var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row});
|
||||
if (matching !== null) {
|
||||
if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {
|
||||
CstyleBehaviour.popAutoInsertedClosing();
|
||||
return {
|
||||
text: '',
|
||||
selection: [1, 1]
|
||||
|
|
@ -148,7 +202,8 @@ var CstyleBehaviour = function () {
|
|||
text: '[' + selected + ']',
|
||||
selection: false
|
||||
};
|
||||
} else {
|
||||
} else if (CstyleBehaviour.isSaneInsertion(editor, session)) {
|
||||
CstyleBehaviour.recordAutoInsert(editor, session, "]");
|
||||
return {
|
||||
text: '[]',
|
||||
selection: [1, 1]
|
||||
|
|
@ -160,7 +215,8 @@ var CstyleBehaviour = function () {
|
|||
var rightChar = line.substring(cursor.column, cursor.column + 1);
|
||||
if (rightChar == ']') {
|
||||
var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row});
|
||||
if (matching !== null) {
|
||||
if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {
|
||||
CstyleBehaviour.popAutoInsertedClosing();
|
||||
return {
|
||||
text: '',
|
||||
selection: [1, 1]
|
||||
|
|
|
|||
|
|
@ -40,8 +40,8 @@ var oop = require("../lib/oop");
|
|||
var TextMode = require("./text").Mode;
|
||||
var Tokenizer = require("../tokenizer").Tokenizer;
|
||||
var JadeHighlightRules = require("./jade_highlight_rules").JadeHighlightRules;
|
||||
// var JavascriptMode = require("ace/mode/javascript").Mode;
|
||||
// var CssMode = require("ace/mode/css").Mode;
|
||||
// var JavascriptMode = require("../mode/javascript").Mode;
|
||||
// var CssMode = require("../mode/css").Mode;
|
||||
|
||||
var Mode = function() {
|
||||
var highlighter = new JadeHighlightRules();
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
|
|||
var SqlHighlightRules = function() {
|
||||
|
||||
var keywords = (
|
||||
"select|from|where|and|or|group|by|order|limit|offset|having|as|case|" +
|
||||
"select|insert|update|delete|from|where|and|or|group|by|order|limit|offset|having|as|case|" +
|
||||
"when|else|end|type|left|right|join|on|outer|desc|asc"
|
||||
);
|
||||
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@
|
|||
define(function(require, exports, module) {
|
||||
"use strict";
|
||||
|
||||
var Range = require('./range').Range;
|
||||
var Range = require("./range").Range;
|
||||
var EventEmitter = require("./lib/event_emitter").EventEmitter;
|
||||
var oop = require("./lib/oop");
|
||||
|
||||
|
|
|
|||
|
|
@ -41,8 +41,8 @@ var Editor = require("./editor").Editor;
|
|||
var MockRenderer = require("./test/mockrenderer").MockRenderer;
|
||||
var assert = require("./test/assertions");
|
||||
var JavaScriptMode = require("./mode/javascript").Mode;
|
||||
var PlaceHolder = require('./placeholder').PlaceHolder;
|
||||
var UndoManager = require('./undomanager').UndoManager;
|
||||
var PlaceHolder = require("./placeholder").PlaceHolder;
|
||||
var UndoManager = require("./undomanager").UndoManager;
|
||||
|
||||
module.exports = {
|
||||
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ define(function (require, exports, module) {
|
|||
if (globalRequire && globalRequire.nodeRequire)
|
||||
onLoad(globalRequire.nodeRequire('fs').readFileSync(req.toUrl(name), 'utf8'));
|
||||
else
|
||||
require("ace/lib/net").get(req.toUrl(name), onLoad);
|
||||
require("../lib/net").get(req.toUrl(name), onLoad);
|
||||
};
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -66,7 +66,7 @@
|
|||
border-left: 1px solid #7991E8;
|
||||
}
|
||||
|
||||
.ace-ambiance .ace_cursor.ace_overwrite {
|
||||
.ace-ambiance .ace_overwrite-cursors .ace_cursor {
|
||||
border: 1px solid #FFE300;
|
||||
background: #766B13;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ define(function(require, exports, module) {
|
|||
|
||||
exports.isDark = true;
|
||||
exports.cssClass = "ace-ambiance";
|
||||
exports.cssText = require("ace/requirejs/text!./ambiance.css");
|
||||
exports.cssText = require("../requirejs/text!./ambiance.css");
|
||||
|
||||
var dom = require("../lib/dom");
|
||||
dom.importCssString(exports.cssText, exports.cssClass);
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
border-left: 2px solid black;
|
||||
}
|
||||
|
||||
.ace-chrome .ace_cursor.ace_overwrite {
|
||||
.ace-chrome .ace_overwrite-cursors .ace_cursor {
|
||||
border-left: 0px;
|
||||
border-bottom: 1px solid black;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ define(function(require, exports, module) {
|
|||
|
||||
exports.isDark = false;
|
||||
exports.cssClass = "ace-chrome";
|
||||
exports.cssText = require('ace/requirejs/text!./chrome.css');
|
||||
exports.cssText = require("../requirejs/text!./chrome.css");
|
||||
|
||||
var dom = require("../lib/dom");
|
||||
dom.importCssString(exports.cssText, exports.cssClass);
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@
|
|||
border-left: 2px solid #000000
|
||||
}
|
||||
|
||||
.ace-clouds .ace_cursor.ace_overwrite {
|
||||
.ace-clouds .ace_overwrite-cursors .ace_cursor {
|
||||
border-left: 0px;
|
||||
border-bottom: 1px solid #000000
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ define(function(require, exports, module) {
|
|||
|
||||
exports.isDark = false;
|
||||
exports.cssClass = "ace-clouds";
|
||||
exports.cssText = require('ace/requirejs/text!./clouds.css');
|
||||
exports.cssText = require("../requirejs/text!./clouds.css");
|
||||
|
||||
var dom = require("../lib/dom");
|
||||
dom.importCssString(exports.cssText, exports.cssClass);
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@
|
|||
border-left: 2px solid #7DA5DC
|
||||
}
|
||||
|
||||
.ace-clouds-midnight .ace_cursor.ace_overwrite {
|
||||
.ace-clouds-midnight .ace_overwrite-cursors .ace_cursor {
|
||||
border-left: 0px;
|
||||
border-bottom: 1px solid #7DA5DC
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ define(function(require, exports, module) {
|
|||
|
||||
exports.isDark = true;
|
||||
exports.cssClass = "ace-clouds-midnight";
|
||||
exports.cssText = require('ace/requirejs/text!./clouds_midnight.css');
|
||||
exports.cssText = require("../requirejs/text!./clouds_midnight.css");
|
||||
|
||||
var dom = require("../lib/dom");
|
||||
dom.importCssString(exports.cssText, exports.cssClass);
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@
|
|||
border-left: 2px solid #FFFFFF
|
||||
}
|
||||
|
||||
.ace-cobalt .ace_cursor.ace_overwrite {
|
||||
.ace-cobalt .ace_overwrite-cursors .ace_cursor {
|
||||
border-left: 0px;
|
||||
border-bottom: 1px solid #FFFFFF
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ define(function(require, exports, module) {
|
|||
|
||||
exports.isDark = true;
|
||||
exports.cssClass = "ace-cobalt";
|
||||
exports.cssText = require('ace/requirejs/text!./cobalt.css');
|
||||
exports.cssText = require("../requirejs/text!./cobalt.css");
|
||||
|
||||
var dom = require("../lib/dom");
|
||||
dom.importCssString(exports.cssText, exports.cssClass);
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@
|
|||
border-left: 2px solid black;
|
||||
}
|
||||
|
||||
.ace-crimson-editor .ace_cursor.ace_overwrite {
|
||||
.ace-crimson-editor .ace_overwrite-cursors .ace_cursor {
|
||||
border-left: 0px;
|
||||
border-bottom: 1px solid black;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@
|
|||
|
||||
define(function(require, exports, module) {
|
||||
exports.isDark = false;
|
||||
exports.cssText = require('ace/requirejs/text!./crimson_editor.css');
|
||||
exports.cssText = require("../requirejs/text!./crimson_editor.css");
|
||||
|
||||
exports.cssClass = "ace-crimson-editor";
|
||||
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@
|
|||
border-left: 2px solid #000000
|
||||
}
|
||||
|
||||
.ace-dawn .ace_cursor.ace_overwrite {
|
||||
.ace-dawn .ace_overwrite-cursors .ace_cursor {
|
||||
border-left: 0px;
|
||||
border-bottom: 1px solid #000000
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ define(function(require, exports, module) {
|
|||
|
||||
exports.isDark = false;
|
||||
exports.cssClass = "ace-dawn";
|
||||
exports.cssText = require('ace/requirejs/text!./dawn.css');
|
||||
exports.cssText = require("../requirejs/text!./dawn.css");
|
||||
|
||||
var dom = require("../lib/dom");
|
||||
dom.importCssString(exports.cssText, exports.cssClass);
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@
|
|||
border-left: 2px solid black;
|
||||
}
|
||||
|
||||
.ace-dreamweaver .ace_cursor.ace_overwrite {
|
||||
.ace-dreamweaver .ace_overwrite-cursors .ace_cursor {
|
||||
border-left: 0px;
|
||||
border-bottom: 1px solid black;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@
|
|||
define(function(require, exports, module) {
|
||||
exports.isDark = false;
|
||||
exports.cssClass = "ace-dreamweaver";
|
||||
exports.cssText = require('ace/requirejs/text!./dreamweaver.css');
|
||||
exports.cssText = require("../requirejs/text!./dreamweaver.css");
|
||||
|
||||
var dom = require("../lib/dom");
|
||||
dom.importCssString(exports.cssText, exports.cssClass);
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ define(function(require, exports, module) {
|
|||
"use strict";
|
||||
|
||||
exports.isDark = false;
|
||||
exports.cssText = require('ace/requirejs/text!./eclipse.css');
|
||||
exports.cssText = require("../requirejs/text!./eclipse.css");
|
||||
|
||||
exports.cssClass = "ace-eclipse";
|
||||
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@
|
|||
border-left: 2px solid black;
|
||||
}
|
||||
|
||||
.ace-github .ace_cursor.ace_overwrite {
|
||||
.ace-github .ace_overwrite-cursors .ace_cursor {
|
||||
border-left: 0px;
|
||||
border-bottom: 1px solid black;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ define(function(require, exports, module) {
|
|||
|
||||
exports.isDark = false;
|
||||
exports.cssClass = "ace-github";
|
||||
exports.cssText = require('ace/requirejs/text!./github.css');
|
||||
exports.cssText = require("../requirejs/text!./github.css");
|
||||
|
||||
var dom = require("../lib/dom");
|
||||
dom.importCssString(exports.cssText, exports.cssClass);
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@
|
|||
border-left: 2px solid #91FF00
|
||||
}
|
||||
|
||||
.ace-idle-fingers .ace_cursor.ace_overwrite {
|
||||
.ace-idle-fingers .ace_overwrite-cursors .ace_cursor {
|
||||
border-left: 0px;
|
||||
border-bottom: 1px solid #91FF00
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ define(function(require, exports, module) {
|
|||
|
||||
exports.isDark = true;
|
||||
exports.cssClass = "ace-idle-fingers";
|
||||
exports.cssText = require('ace/requirejs/text!./idle_fingers.css');
|
||||
exports.cssText = require("../requirejs/text!./idle_fingers.css");
|
||||
|
||||
var dom = require("../lib/dom");
|
||||
dom.importCssString(exports.cssText, exports.cssClass);
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@
|
|||
border-left: 2px solid #FF9900
|
||||
}
|
||||
|
||||
.ace-kr-theme .ace_cursor.ace_overwrite {
|
||||
.ace-kr-theme .ace_overwrite-cursors .ace_cursor {
|
||||
border-left: 0px;
|
||||
border-bottom: 1px solid #FF9900
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ define(function(require, exports, module) {
|
|||
|
||||
exports.isDark = true;
|
||||
exports.cssClass = "ace-kr-theme";
|
||||
exports.cssText = require('ace/requirejs/text!./kr_theme.css');
|
||||
exports.cssText = require("../requirejs/text!./kr_theme.css");
|
||||
|
||||
var dom = require("../lib/dom");
|
||||
dom.importCssString(exports.cssText, exports.cssClass);
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@
|
|||
border-left: 2px solid #FFFFFF
|
||||
}
|
||||
|
||||
.ace-merbivore .ace_cursor.ace_overwrite {
|
||||
.ace-merbivore .ace_overwrite-cursors .ace_cursor {
|
||||
border-left: 0px;
|
||||
border-bottom: 1px solid #FFFFFF
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ define(function(require, exports, module) {
|
|||
|
||||
exports.isDark = true;
|
||||
exports.cssClass = "ace-merbivore";
|
||||
exports.cssText = require('ace/requirejs/text!./merbivore.css');
|
||||
exports.cssText = require("../requirejs/text!./merbivore.css");
|
||||
|
||||
var dom = require("../lib/dom");
|
||||
dom.importCssString(exports.cssText, exports.cssClass);
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@
|
|||
border-left: 2px solid #FFFFFF
|
||||
}
|
||||
|
||||
.ace-merbivore-soft .ace_cursor.ace_overwrite {
|
||||
.ace-merbivore-soft .ace_overwrite-cursors .ace_cursor {
|
||||
border-left: 0px;
|
||||
border-bottom: 1px solid #FFFFFF
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ define(function(require, exports, module) {
|
|||
|
||||
exports.isDark = true;
|
||||
exports.cssClass = "ace-merbivore-soft";
|
||||
exports.cssText = require('ace/requirejs/text!./merbivore_soft.css');
|
||||
exports.cssText = require("../requirejs/text!./merbivore_soft.css");
|
||||
|
||||
var dom = require("../lib/dom");
|
||||
dom.importCssString(exports.cssText, exports.cssClass);
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@
|
|||
border-left: 2px solid #FFFFFF
|
||||
}
|
||||
|
||||
.ace-mono-industrial .ace_cursor.ace_overwrite {
|
||||
.ace-mono-industrial .ace_overwrite-cursors .ace_cursor {
|
||||
border-left: 0px;
|
||||
border-bottom: 1px solid #FFFFFF
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ define(function(require, exports, module) {
|
|||
|
||||
exports.isDark = true;
|
||||
exports.cssClass = "ace-mono-industrial";
|
||||
exports.cssText = require('ace/requirejs/text!./mono_industrial.css');
|
||||
exports.cssText = require("../requirejs/text!./mono_industrial.css");
|
||||
|
||||
var dom = require("../lib/dom");
|
||||
dom.importCssString(exports.cssText, exports.cssClass);
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@
|
|||
border-left: 2px solid #F8F8F0
|
||||
}
|
||||
|
||||
.ace-monokai .ace_cursor.ace_overwrite {
|
||||
.ace-monokai .ace_overwrite-cursors .ace_cursor {
|
||||
border-left: 0px;
|
||||
border-bottom: 1px solid #F8F8F0
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ define(function(require, exports, module) {
|
|||
|
||||
exports.isDark = true;
|
||||
exports.cssClass = "ace-monokai";
|
||||
exports.cssText = require('ace/requirejs/text!./monokai.css');
|
||||
exports.cssText = require("../requirejs/text!./monokai.css");
|
||||
|
||||
var dom = require("../lib/dom");
|
||||
dom.importCssString(exports.cssText, exports.cssClass);
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@
|
|||
border-left: 2px solid #A7A7A7
|
||||
}
|
||||
|
||||
.ace-pastel-on-dark .ace_cursor.ace_overwrite {
|
||||
.ace-pastel-on-dark .ace_overwrite-cursors .ace_cursor {
|
||||
border-left: 0px;
|
||||
border-bottom: 1px solid #A7A7A7
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ define(function(require, exports, module) {
|
|||
|
||||
exports.isDark = true;
|
||||
exports.cssClass = "ace-pastel-on-dark";
|
||||
exports.cssText = require('ace/requirejs/text!./pastel_on_dark.css');
|
||||
exports.cssText = require("../requirejs/text!./pastel_on_dark.css");
|
||||
|
||||
var dom = require("../lib/dom");
|
||||
dom.importCssString(exports.cssText, exports.cssClass);
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@
|
|||
border-left: 2px solid #D30102
|
||||
}
|
||||
|
||||
.ace-solarized-dark .ace_cursor.ace_overwrite {
|
||||
.ace-solarized-dark .ace_overwrite-cursors .ace_cursor {
|
||||
border-left: 0px;
|
||||
border-bottom: 1px solid #D30102
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ define(function(require, exports, module) {
|
|||
|
||||
exports.isDark = true;
|
||||
exports.cssClass = "ace-solarized-dark";
|
||||
exports.cssText = require('ace/requirejs/text!./solarized_dark.css');
|
||||
exports.cssText = require("../requirejs/text!./solarized_dark.css");
|
||||
|
||||
var dom = require("../lib/dom");
|
||||
dom.importCssString(exports.cssText, exports.cssClass);
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@
|
|||
border-left: 2px solid #000000
|
||||
}
|
||||
|
||||
.ace-solarized-light .ace_cursor.ace_overwrite {
|
||||
.ace-solarized-light .ace_overwrite-cursors .ace_cursor {
|
||||
border-left: 0px;
|
||||
border-bottom: 1px solid #000000
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ define(function(require, exports, module) {
|
|||
|
||||
exports.isDark = false;
|
||||
exports.cssClass = "ace-solarized-light";
|
||||
exports.cssText = require('ace/requirejs/text!./solarized_light.css');
|
||||
exports.cssText = require("../requirejs/text!./solarized_light.css");
|
||||
|
||||
var dom = require("../lib/dom");
|
||||
dom.importCssString(exports.cssText, exports.cssClass);
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@
|
|||
border-left: 2px solid black;
|
||||
}
|
||||
|
||||
.ace-tm .ace_cursor.ace_overwrite {
|
||||
.ace-tm .ace_overwrite-cursors .ace_cursor {
|
||||
border-left: 0px;
|
||||
border-bottom: 1px solid black;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ define(function(require, exports, module) {
|
|||
|
||||
exports.isDark = false;
|
||||
exports.cssClass = "ace-tm";
|
||||
exports.cssText = require('ace/requirejs/text!./textmate.css');
|
||||
exports.cssText = require("../requirejs/text!./textmate.css");
|
||||
|
||||
var dom = require("../lib/dom");
|
||||
dom.importCssString(exports.cssText, exports.cssClass);
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@
|
|||
border-left: 2px solid #AEAFAD
|
||||
}
|
||||
|
||||
.ace-tomorrow .ace_cursor.ace_overwrite {
|
||||
.ace-tomorrow .ace_overwrite-cursors .ace_cursor {
|
||||
border-left: 0px;
|
||||
border-bottom: 1px solid #AEAFAD
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ define(function(require, exports, module) {
|
|||
|
||||
exports.isDark = false;
|
||||
exports.cssClass = "ace-tomorrow";
|
||||
exports.cssText = require('ace/requirejs/text!./tomorrow.css');
|
||||
exports.cssText = require("../requirejs/text!./tomorrow.css");
|
||||
|
||||
var dom = require("../lib/dom");
|
||||
dom.importCssString(exports.cssText, exports.cssClass);
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@
|
|||
border-left: 2px solid #AEAFAD
|
||||
}
|
||||
|
||||
.ace-tomorrow-night .ace_cursor.ace_overwrite {
|
||||
.ace-tomorrow-night .ace_overwrite-cursors .ace_cursor {
|
||||
border-left: 0px;
|
||||
border-bottom: 1px solid #AEAFAD
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ define(function(require, exports, module) {
|
|||
|
||||
exports.isDark = true;
|
||||
exports.cssClass = "ace-tomorrow-night";
|
||||
exports.cssText = require('ace/requirejs/text!./tomorrow_night.css');
|
||||
exports.cssText = require("../requirejs/text!./tomorrow_night.css");
|
||||
|
||||
var dom = require("../lib/dom");
|
||||
dom.importCssString(exports.cssText, exports.cssClass);
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@
|
|||
border-left: 2px solid #FFFFFF
|
||||
}
|
||||
|
||||
.ace-tomorrow-night-blue .ace_cursor.ace_overwrite {
|
||||
.ace-tomorrow-night-blue .ace_overwrite-cursors .ace_cursor {
|
||||
border-left: 0px;
|
||||
border-bottom: 1px solid #FFFFFF
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ define(function(require, exports, module) {
|
|||
|
||||
exports.isDark = true;
|
||||
exports.cssClass = "ace-tomorrow-night-blue";
|
||||
exports.cssText = require('ace/requirejs/text!./tomorrow_night_blue.css');
|
||||
exports.cssText = require("../requirejs/text!./tomorrow_night_blue.css");
|
||||
|
||||
var dom = require("../lib/dom");
|
||||
dom.importCssString(exports.cssText, exports.cssClass);
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@
|
|||
border-left: 2px solid #9F9F9F
|
||||
}
|
||||
|
||||
.ace-tomorrow-night-bright .ace_cursor.ace_overwrite {
|
||||
.ace-tomorrow-night-bright .ace_overwrite-cursors .ace_cursor {
|
||||
border-left: 0px;
|
||||
border-bottom: 1px solid #9F9F9F
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ define(function(require, exports, module) {
|
|||
|
||||
exports.isDark = true;
|
||||
exports.cssClass = "ace-tomorrow-night-bright";
|
||||
exports.cssText = require('ace/requirejs/text!./tomorrow_night_bright.css');
|
||||
exports.cssText = require("../requirejs/text!./tomorrow_night_bright.css");
|
||||
|
||||
var dom = require("../lib/dom");
|
||||
dom.importCssString(exports.cssText, exports.cssClass);
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@
|
|||
border-left: 2px solid #CCCCCC
|
||||
}
|
||||
|
||||
.ace-tomorrow-night-eighties .ace_cursor.ace_overwrite {
|
||||
.ace-tomorrow-night-eighties .ace_overwrite-cursors .ace_cursor {
|
||||
border-left: 0px;
|
||||
border-bottom: 1px solid #CCCCCC
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ define(function(require, exports, module) {
|
|||
|
||||
exports.isDark = true;
|
||||
exports.cssClass = "ace-tomorrow-night-eighties";
|
||||
exports.cssText = require('ace/requirejs/text!./tomorrow_night_eighties.css');
|
||||
exports.cssText = require("../requirejs/text!./tomorrow_night_eighties.css");
|
||||
|
||||
var dom = require("../lib/dom");
|
||||
dom.importCssString(exports.cssText, exports.cssClass);
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@
|
|||
border-left: 2px solid #A7A7A7
|
||||
}
|
||||
|
||||
.ace-twilight .ace_cursor.ace_overwrite {
|
||||
.ace-twilight .ace_overwrite-cursors .ace_cursor {
|
||||
border-left: 0px;
|
||||
border-bottom: 1px solid #A7A7A7
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ define(function(require, exports, module) {
|
|||
|
||||
exports.isDark = true;
|
||||
exports.cssClass = "ace-twilight";
|
||||
exports.cssText = require('ace/requirejs/text!./twilight.css');
|
||||
exports.cssText = require("../requirejs/text!./twilight.css");
|
||||
|
||||
var dom = require("../lib/dom");
|
||||
dom.importCssString(exports.cssText, exports.cssClass);
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@
|
|||
border-left: 2px solid #FFFFFF
|
||||
}
|
||||
|
||||
.ace-vibrant-ink .ace_cursor.ace_overwrite {
|
||||
.ace-vibrant-ink .ace_overwrite-cursors .ace_cursor {
|
||||
border-left: 0px;
|
||||
border-bottom: 1px solid #FFFFFF
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ define(function(require, exports, module) {
|
|||
|
||||
exports.isDark = true;
|
||||
exports.cssClass = "ace-vibrant-ink";
|
||||
exports.cssText = require('ace/requirejs/text!./vibrant_ink.css');
|
||||
exports.cssText = require("../requirejs/text!./vibrant_ink.css");
|
||||
|
||||
var dom = require("../lib/dom");
|
||||
dom.importCssString(exports.cssText, exports.cssClass);
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@
|
|||
border-left: 2px solid #000000
|
||||
}
|
||||
|
||||
.ace-xcode .ace_cursor.ace_overwrite {
|
||||
.ace-xcode .ace_overwrite-cursors .ace_cursor {
|
||||
border-left: 0px;
|
||||
border-bottom: 1px solid #000000
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ define(function(require, exports, module) {
|
|||
|
||||
exports.isDark = false;
|
||||
exports.cssClass = "ace-xcode";
|
||||
exports.cssText = require('ace/requirejs/text!./xcode.css');
|
||||
exports.cssText = require("../requirejs/text!./xcode.css");
|
||||
|
||||
var dom = require("../lib/dom");
|
||||
dom.importCssString(exports.cssText, exports.cssClass);
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ var CursorLayer = require("./layer/cursor").Cursor;
|
|||
var ScrollBar = require("./scrollbar").ScrollBar;
|
||||
var RenderLoop = require("./renderloop").RenderLoop;
|
||||
var EventEmitter = require("./lib/event_emitter").EventEmitter;
|
||||
var editorCss = require("ace/requirejs/text!./css/editor.css");
|
||||
var editorCss = require("./requirejs/text!./css/editor.css");
|
||||
|
||||
dom.importCssString(editorCss, "ace_editor");
|
||||
|
||||
|
|
@ -164,8 +164,8 @@ var VirtualRenderer = function(container, theme) {
|
|||
);
|
||||
this.$loop.schedule(this.CHANGE_FULL);
|
||||
|
||||
this.setPadding(4);
|
||||
this.updateCharacterSize();
|
||||
this.setPadding(4);
|
||||
};
|
||||
|
||||
(function() {
|
||||
|
|
@ -509,13 +509,11 @@ var VirtualRenderer = function(container, theme) {
|
|||
};
|
||||
|
||||
this.$updatePrintMargin = function() {
|
||||
var containerEl;
|
||||
|
||||
if (!this.$showPrintMargin && !this.$printMarginEl)
|
||||
return;
|
||||
|
||||
if (!this.$printMarginEl) {
|
||||
containerEl = dom.createElement("div");
|
||||
var containerEl = dom.createElement("div");
|
||||
containerEl.className = "ace_layer ace_print-margin-layer";
|
||||
this.$printMarginEl = dom.createElement("div");
|
||||
this.$printMarginEl.className = "ace_print-margin";
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@
|
|||
"asyncjs": "0.0.x",
|
||||
"jsdom": "0.2.x",
|
||||
"amd-loader": "~0.0.4",
|
||||
"dryice": ""
|
||||
"dryice": "0.4.7"
|
||||
},
|
||||
"mappings": {
|
||||
"ace": "."
|
||||
|
|
@ -29,7 +29,7 @@
|
|||
},
|
||||
"scripts": {
|
||||
"test": "node lib/ace/test/all.js",
|
||||
"postinstall": "node ./install.js"
|
||||
"postinstall": "node ./install.js -c"
|
||||
},
|
||||
"config": {
|
||||
"github.com/sourcemint/bundler-js/0/-meta/config/0": {
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@
|
|||
border-left: 2px solid %cursor%;
|
||||
}
|
||||
|
||||
.%cssClass% .ace_cursor.ace_overwrite {
|
||||
.%cssClass% .ace_overwrite-cursors .ace_cursor {
|
||||
border-left: 0px;
|
||||
border-bottom: 1px solid %overwrite%;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -278,7 +278,7 @@ function convertTheme(name) {
|
|||
|
||||
var js = fillTemplate(jsTemplate, {
|
||||
name: name,
|
||||
css: "require('ace/requirejs/text!./" + name + ".css')", // quoteString(css), //
|
||||
css: 'require("../requirejs/text!./' + name + '.css")', // quoteString(css), //
|
||||
cssClass: "ace-" + hyphenate(name),
|
||||
isDark: styles.isDark
|
||||
});
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@ var deps = [{
|
|||
path: "mode/css/csslint.js",
|
||||
url: "https://raw.github.com/stubbornella/csslint/master/release/csslint-node.js",
|
||||
needsFixup: true
|
||||
}, {
|
||||
path: "../../demo/kitchen-sink/require.js",
|
||||
url: "https://raw.github.com/jrburke/requirejs/master/require.js",
|
||||
needsFixup: false
|
||||
}]
|
||||
|
||||
var download = function(href, callback) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue