diff --git a/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/commands/default_commands.js b/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/commands/default_commands.js
index d12478a3..a64b61cf 100644
--- a/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/commands/default_commands.js
+++ b/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/commands/default_commands.js
@@ -72,22 +72,22 @@ exports.commands = [{
readOnly: true
}, {
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); },
readOnly: true
}, {
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); },
readOnly: true
}, {
name: "foldall",
- bindKey: bindKey("Alt-0", "Alt-0"),
+ bindKey: bindKey("Alt-0", "Command-Option-0"),
exec: function(editor) { editor.session.foldAll(); },
readOnly: true
}, {
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(); },
readOnly: true
}, {
@@ -110,17 +110,17 @@ exports.commands = [{
readOnly: true
}, {
name: "overwrite",
- bindKey: bindKey("Insert", "Insert"),
+ bindKey: "Insert",
exec: function(editor) { editor.toggleOverwrite(); },
readOnly: true
}, {
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(); },
readOnly: true
}, {
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(); },
readOnly: true
}, {
@@ -137,13 +137,13 @@ exports.commands = [{
readOnly: true
}, {
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(); },
multiSelectAction: "forEach",
readOnly: true
}, {
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(); },
multiSelectAction: "forEach",
readOnly: true
@@ -233,43 +233,53 @@ exports.commands = [{
readOnly: true
}, {
name: "selectpagedown",
- bindKey: bindKey("Shift-PageDown", "Shift-PageDown"),
+ bindKey: "Shift-PageDown",
exec: function(editor) { editor.selectPageDown(); },
readOnly: true
}, {
name: "pagedown",
- bindKey: bindKey(null, "PageDown"),
+ bindKey: bindKey(null, "Option-PageDown"),
exec: function(editor) { editor.scrollPageDown(); },
readOnly: true
}, {
name: "gotopagedown",
- bindKey: bindKey("PageDown", "Option-PageDown|Ctrl-V"),
+ bindKey: bindKey("PageDown", "PageDown|Ctrl-V"),
exec: function(editor) { editor.gotoPageDown(); },
readOnly: true
}, {
name: "selectpageup",
- bindKey: bindKey("Shift-PageUp", "Shift-PageUp"),
+ bindKey: "Shift-PageUp",
exec: function(editor) { editor.selectPageUp(); },
readOnly: true
}, {
name: "pageup",
- bindKey: bindKey(null, "PageUp"),
+ bindKey: bindKey(null, "Option-PageUp"),
exec: function(editor) { editor.scrollPageUp(); },
readOnly: true
}, {
name: "gotopageup",
- bindKey: bindKey("PageUp", "Option-PageUp"),
+ bindKey: "PageUp",
exec: function(editor) { editor.gotoPageUp(); },
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",
- bindKey: bindKey("Shift-Home", "Shift-Home"),
+ bindKey: "Shift-Home",
exec: function(editor) { editor.getSelection().selectLineStart(); },
multiSelectAction: "forEach",
readOnly: true
}, {
name: "selectlineend",
- bindKey: bindKey("Shift-End", "Shift-End"),
+ bindKey: "Shift-End",
exec: function(editor) { editor.getSelection().selectLineEnd(); },
multiSelectAction: "forEach",
readOnly: true
@@ -285,10 +295,15 @@ exports.commands = [{
readOnly: true
}, {
name: "jumptomatching",
- bindKey: bindKey("Ctrl-Shift-P", "Ctrl-Shift-P"),
+ bindKey: bindKey("Ctrl-P", "Ctrl-P"),
exec: function(editor) { editor.jumpToMatching(); },
multiSelectAction: "forEach",
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
@@ -309,6 +324,11 @@ exports.commands = [{
bindKey: bindKey("Ctrl-D", "Command-D"),
exec: function(editor) { editor.removeLines(); },
multiSelectAction: "forEach"
+}, {
+ name: "duplicateSelection",
+ bindKey: bindKey("Ctrl-Shift-D", "Command-Shift-D"),
+ exec: function(editor) { editor.duplicateSelection(); },
+ multiSelectAction: "forEach"
}, {
name: "togglecomment",
bindKey: bindKey("Ctrl-/", "Command-/"),
@@ -348,7 +368,7 @@ exports.commands = [{
exec: function(editor) { editor.redo(); }
}, {
name: "copylinesup",
- bindKey: bindKey("Ctrl-Alt-Up", "Command-Option-Up"),
+ bindKey: bindKey("Alt-Shift-Up", "Command-Option-Up"),
exec: function(editor) { editor.copyLinesUp(); }
}, {
name: "movelinesup",
@@ -356,7 +376,7 @@ exports.commands = [{
exec: function(editor) { editor.moveLinesUp(); }
}, {
name: "copylinesdown",
- bindKey: bindKey("Ctrl-Alt-Down", "Command-Option-Down"),
+ bindKey: bindKey("Alt-Shift-Down", "Command-Option-Down"),
exec: function(editor) { editor.copyLinesDown(); }
}, {
name: "movelinesdown",
diff --git a/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/edit_session.js b/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/edit_session.js
index 81e17227..b7b0dead 100644
--- a/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/edit_session.js
+++ b/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/edit_session.js
@@ -827,7 +827,8 @@ var EditSession = function(text, mode) {
try {
module = require(mode);
} 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);
// set mode to text until loading is finished
diff --git a/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/edit_session/bracket_match.js b/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/edit_session/bracket_match.js
index 86400214..83c8f572 100644
--- a/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/edit_session/bracket_match.js
+++ b/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/edit_session/bracket_match.js
@@ -40,6 +40,7 @@ define(function(require, exports, module) {
"use strict";
var TokenIterator = require("../token_iterator").TokenIterator;
+var Range = require("../range").Range;
/**
* class BracketMatch
@@ -76,15 +77,56 @@ function BracketMatch() {
if (charBeforeCursor == "") return null;
var match = charBeforeCursor.match(/([\(\[\{])|([\)\]\}])/);
- if (!match) {
+ if (!match)
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]) {
- 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 {
- 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 = {
diff --git a/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/editor.js b/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/editor.js
index e6d30eca..1efac5fc 100644
--- a/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/editor.js
+++ b/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/editor.js
@@ -1348,6 +1348,24 @@ var Editor = function(renderer, session) {
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
* Editor.moveLinesDown() -> Number
* + (Number): On success, it returns -1.
@@ -1660,8 +1678,11 @@ var Editor = function(renderer, session) {
**/
this.centerSelection = function() {
var range = this.getSelectionRange();
- var line = Math.floor(range.start.row + (range.end.row - range.start.row) / 2);
- this.renderer.scrollToLine(line, true);
+ var pos = {
+ 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
@@ -1746,21 +1767,34 @@ var Editor = function(renderer, session) {
* Moves the cursor's row and column to the next matching bracket.
*
**/
- this.jumpToMatching = function() {
+ this.jumpToMatching = function(select) {
var cursor = this.getCursorPosition();
- var pos = this.session.findMatchingBracket(cursor);
- if (!pos) {
- cursor.column += 1;
- pos = this.session.findMatchingBracket(cursor);
- }
- if (!pos) {
- cursor.column -= 2;
- pos = this.session.findMatchingBracket(cursor);
- }
+ var range = this.session.getBracketRange(cursor);
+ if (!range) {
+ range = editor.find({
+ needle: /[{}()\[\]]/g,
+ preventScroll:true,
+ start: {row: cursor.row, column: cursor.column - 1}
+ });
+ 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) {
- this.clearSelection();
- this.moveCursorTo(pos.row, pos.column);
+ if (select) {
+ 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);
+ }
}
};
diff --git a/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/ext/static_highlight.js b/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/ext/static_highlight.js
index 8687e047..aca3fd9e 100644
--- a/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/ext/static_highlight.js
+++ b/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/ext/static_highlight.js
@@ -52,7 +52,7 @@ var baseStyles = require("../requirejs/text!./static.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);
var session = new EditSession("");
@@ -74,7 +74,8 @@ exports.render = function(input, mode, theme, lineStart) {
for(var ix = 0; ix < length; ix++) {
var lineTokens = session.getTokens(ix);
stringBuilder.push("
");
- // stringBuilder.push("" + (ix + lineStart) + "");
+ if (!disableGutter)
+ stringBuilder.push("" + (ix + lineStart) + "");
textLayer.$renderLine(stringBuilder, 0, lineTokens, true);
stringBuilder.push("
");
}
diff --git a/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/keyboard/textinput.js b/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/keyboard/textinput.js
index d39b13e3..e4ba3e1c 100644
--- a/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/keyboard/textinput.js
+++ b/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/keyboard/textinput.js
@@ -246,7 +246,6 @@ var TextInput = function(parentNode, host) {
});
this.focus = function() {
- host.onFocus();
reset();
text.focus();
};
@@ -281,10 +280,12 @@ var TextInput = function(parentNode, host) {
if (host.renderer.$keepTextAreaAtCursor)
host.renderer.$keepTextAreaAtCursor = null;
- event.capture(host.container, function(e) {
- text.style.left = e.clientX - 2 + "px";
- text.style.top = e.clientY - 2 + "px";
- }, onContextMenuClose);
+ // on windows context menu is opened after mouseup
+ if (useragent.isGecko && useragent.isWin)
+ event.capture(host.container, function(e) {
+ text.style.left = e.clientX - 2 + "px";
+ text.style.top = e.clientY - 2 + "px";
+ }, onContextMenuClose);
};
function onContextMenuClose() {
diff --git a/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/keyboard/vim/maps/motions.js b/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/keyboard/vim/maps/motions.js
index ec97b298..9ae7bfc1 100644
--- a/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/keyboard/vim/maps/motions.js
+++ b/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/keyboard/vim/maps/motions.js
@@ -300,27 +300,27 @@ module.exports = {
case "(":
case "{":
case "[":
- var cursor = editor.getCursorPosition()
- var end = editor.session.$findClosingBracket(param, cursor, /paren/)
+ var cursor = editor.getCursorPosition();
+ var end = editor.session.$findClosingBracket(param, cursor, /paren/);
if (!end)
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)
return;
start.column ++;
- editor.selection.setSelectionRange(Range.fromPoints(start, end))
- break
+ editor.selection.setSelectionRange(Range.fromPoints(start, end));
+ break;
case "'":
- case "\"":
+ case '"':
case "/":
- var end = find(editor, param, 1)
+ var end = find(editor, param, 1);
if (!end)
return;
- var start = find(editor, param, -1)
+ var start = find(editor, param, -1);
if (!start)
return;
- editor.selection.setSelectionRange(Range.fromPoints(start.end, end.start))
- break
+ editor.selection.setSelectionRange(Range.fromPoints(start.end, end.start));
+ break;
}
}
},
diff --git a/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/lib/event.js b/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/lib/event.js
index aad5ddd4..c4fff32a 100644
--- a/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/lib/event.js
+++ b/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/lib/event.js
@@ -93,7 +93,7 @@ exports.preventDefault = function(e) {
exports.getButton = function(e) {
if (e.type == "dblclick")
return 0;
- else if (e.type == "contextmenu")
+ if (e.type == "contextmenu" || (e.ctrlKey && useragent.isMac))
return 2;
// DOM Event
diff --git a/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/javascript_highlight_rules.js b/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/javascript_highlight_rules.js
index 18100423..63348303 100644
--- a/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/javascript_highlight_rules.js
+++ b/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/javascript_highlight_rules.js
@@ -191,6 +191,22 @@ var JavaScriptHighlightRules = function() {
],
regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
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) { }
token : [
"storage.type",
diff --git a/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/jsx.js b/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/jsx.js
new file mode 100644
index 00000000..1031e9dc
--- /dev/null
+++ b/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/jsx.js
@@ -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;
+});
diff --git a/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/jsx_highlight_rules.js b/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/jsx_highlight_rules.js
new file mode 100644
index 00000000..0700b011
--- /dev/null
+++ b/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/jsx_highlight_rules.js
@@ -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;
+});
\ No newline at end of file
diff --git a/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/luapage.js b/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/luapage.js
new file mode 100644
index 00000000..03ee19d1
--- /dev/null
+++ b/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/luapage.js
@@ -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;
+});
\ No newline at end of file
diff --git a/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/luapage_highlight_rules.js b/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/luapage_highlight_rules.js
new file mode 100644
index 00000000..d79581c3
--- /dev/null
+++ b/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/luapage_highlight_rules.js
@@ -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;
+
+});
\ No newline at end of file
diff --git a/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/markdown_highlight_rules.js b/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/markdown_highlight_rules.js
index 09fcdff0..8961ff65 100644
--- a/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/markdown_highlight_rules.js
+++ b/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/markdown_highlight_rules.js
@@ -80,7 +80,7 @@ var MarkdownHighlightRules = function() {
return "markup.heading." + value.length;
},
regex : "^#{1,6}"
- }, github_embed("javascript", "js-"),
+ }, github_embed("(?:javascript|js)", "js-"),
github_embed("xml", "xml-"),
github_embed("html", "html-"),
github_embed("css", "css-"),
diff --git a/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mouse/default_handlers.js b/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mouse/default_handlers.js
index e5568881..1b916801 100644
--- a/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mouse/default_handlers.js
+++ b/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mouse/default_handlers.js
@@ -90,7 +90,7 @@ function DefaultHandlers(mouseHandler) {
// 2: contextmenu, 1: linux paste
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
@@ -109,13 +109,8 @@ function DefaultHandlers(mouseHandler) {
// a selection.
this.startSelect(pos);
} else if (inSelection) {
- var e = ev.domEvent;
- if ((e.ctrlKey || e.altKey)) {
- this.startDrag();
- } else {
- this.mousedownEvent.time = (new Date()).getTime();
- this.setState("dragWait");
- }
+ this.mousedownEvent.time = (new Date()).getTime();
+ this.setState("dragWait");
}
this.captureMouse(ev);
@@ -146,8 +141,9 @@ function DefaultHandlers(mouseHandler) {
} else if (cmp == 1) {
anchor = this.$clickSelection.start;
} else {
- cursor = this.$clickSelection.end;
- anchor = this.$clickSelection.start;
+ var orientedRange = calcRangeOrientation(this.$clickSelection, cursor);
+ cursor = orientedRange.cursor;
+ anchor = orientedRange.anchor;
}
editor.selection.setSelectionAnchor(anchor.row, anchor.column);
}
@@ -175,8 +171,9 @@ function DefaultHandlers(mouseHandler) {
cursor = range.end;
anchor = range.start;
} else {
- cursor = this.$clickSelection.end;
- anchor = this.$clickSelection.start;
+ var orientedRange = calcRangeOrientation(this.$clickSelection, cursor);
+ cursor = orientedRange.cursor;
+ anchor = orientedRange.anchor;
}
editor.selection.setSelectionAnchor(anchor.row, anchor.column);
}
@@ -221,7 +218,7 @@ function DefaultHandlers(mouseHandler) {
this.startSelect();
};
- this.dragWait = function() {
+ this.dragWait = function(e) {
var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);
var time = (new Date()).getTime();
var editor = this.editor;
@@ -229,7 +226,7 @@ function DefaultHandlers(mouseHandler) {
if (distance > DRAG_OFFSET) {
this.startSelect();
} else if (time - this.mousedownEvent.time > editor.getDragDelay()) {
- this.startDrag()
+ this.startDrag();
}
};
@@ -277,12 +274,21 @@ function DefaultHandlers(mouseHandler) {
this.onDoubleClick = function(ev) {
var pos = ev.getDocumentPosition();
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");
-
- editor.moveCursorToPosition(pos);
- editor.selection.selectWord();
- this.$clickSelection = editor.getSelectionRange();
};
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));
}
+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};
+}
+
});
diff --git a/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mouse/mouse_event.js b/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mouse/mouse_event.js
index 2c813cde..59ed98fe 100644
--- a/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mouse/mouse_event.js
+++ b/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mouse/mouse_event.js
@@ -40,6 +40,7 @@ define(function(require, exports, module) {
"use strict";
var event = require("../lib/event");
+var useragent = require("../lib/useragent");
/*
* Custom Ace mouse event
@@ -130,9 +131,9 @@ var MouseEvent = exports.MouseEvent = function(domEvent, editor) {
return this.domEvent.shiftKey;
};
- this.getAccelKey = function() {
- return this.domEvent.ctrlKey || this.domEvent.metaKey ;
- };
+ this.getAccelKey = useragent.isMac
+ ? function() { return this.domEvent.metaKey; }
+ : function() { return this.domEvent.ctrlKey; };
}).call(MouseEvent.prototype);
diff --git a/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mouse/mouse_handler.js b/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mouse/mouse_handler.js
index e1e7a2a1..f108a7dc 100644
--- a/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mouse/mouse_handler.js
+++ b/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mouse/mouse_handler.js
@@ -130,12 +130,12 @@ var MouseHandler = function(editor) {
renderer.$keepTextAreaAtCursor = null;
var self = this;
- var onMouseSelection = function(e) {
+ var onMouseMove = function(e) {
self.x = e.clientX;
self.y = e.clientY;
};
- var onMouseSelectionEnd = function(e) {
+ var onCaptureEnd = function(e) {
clearInterval(timerId);
self[self.state + "End"] && self[self.state + "End"](e);
self.$clickSelection = null;
@@ -145,12 +145,12 @@ var MouseHandler = function(editor) {
}
};
- var onSelectionInterval = function() {
+ var onCaptureInterval = function() {
self[self.state] && self[self.state]();
}
- event.capture(this.editor.container, onMouseSelection, onMouseSelectionEnd);
- var timerId = setInterval(onSelectionInterval, 20);
+ event.capture(this.editor.container, onMouseMove, onCaptureEnd);
+ var timerId = setInterval(onCaptureInterval, 20);
};
}).call(MouseHandler.prototype);
diff --git a/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mouse/multi_select_handler.js b/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mouse/multi_select_handler.js
index 880bc13c..f14e8e99 100644
--- a/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mouse/multi_select_handler.js
+++ b/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mouse/multi_select_handler.js
@@ -53,18 +53,14 @@ function onMouseDown(e) {
var ctrl = e.getAccelKey();
var button = e.getButton();
+ if (e.editor.inMultiSelectMode && button == 2) {
+ e.editor.textInput.onContextMenu(e.domEvent);
+ return;
+ }
+
if (!ctrl && !alt) {
- if (e.editor.inMultiSelectMode) {
- if (button == 0) {
- 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();
- }
- }
+ if (button == 0 && e.editor.inMultiSelectMode)
+ e.editor.exitMultiSelectMode();
return;
}
diff --git a/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/range.js b/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/range.js
index e09b850d..fd27dcbc 100644
--- a/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/range.js
+++ b/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/range.js
@@ -90,7 +90,6 @@ var Range = function(startRow, startColumn, endRow, endColumn) {
* [start.row/start.column] -> [end.row/end.column]
*
**/
-
this.toString = function() {
return ("Range: [" + this.start.row + "/" + this.start.column +
"] -> [" + this.end.row + "/" + this.end.column + "]");
@@ -424,7 +423,7 @@ var Range = function(startRow, startColumn, endRow, endColumn) {
}
}
- /**
+ /**
* Range.compareInside(row, column) -> Number
* - row (Number): A row 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
* - firstRow (Number): The starting 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);
};
- /**
+ /**
* Range.extend(row, column) -> Range
* - row (Number): A new row 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);
};
- /**
+ /**
* Range.isMultiLine() -> Boolean
*
* 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);
};
- /**
+ /**
* Range.clone() -> 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);
};
- /**
+ /**
* Range.collapseRows() -> Range
*
* 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)
};
- /**
+ /**
* Range.toScreenRange(session) -> Range
* - session (EditSession): The `EditSession` to retrieve coordinates from
*
diff --git a/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/theme/github.css b/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/theme/github.css
index 91a79180..5f1ab474 100644
--- a/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/theme/github.css
+++ b/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/theme/github.css
@@ -1,127 +1,57 @@
-/* CSS style content from github's default pygments highlighter template. */
+/* 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;
- /* Must use font and not font-family and font-size or the body
- font property will override. Also requires important to override ace sty le.*/
font: 13px 'Bitstream Vera Sans Mono', Courier, monospace !important;
- /* needs !important to set line hight given conflicting ace styles. */
line-height: 19px !important;
overflow: auto;
padding: 6px 10px;
border-radius: 3px;
- /* defaults to absolute which causes all code to overlap. */
position: relative;
margin-bottom: 15px;
}
-/* k = keyword */
.ace-github .ace_keyword {
font-weight: bold;
}
-/*
- ss = ace_string
- - example ':initial' in example.rb
- - Ace is unable to differentiate between
- ruby symbols and strings.
- s2 = ace_string
-*/
.ace-github .ace_string {
color: #D14;
}
-/*
- nn = ace_variable ace_class
- nc = ace_variable ace_class
- no = ace_variable ace_class
- Ace does not differentiate between nc and no
- although pygments does.
- see: ruby_func_def.rb
-
- teal from 'no' seems most common so
- use that color.
-*/
.ace-github .ace_variable.ace_class {
color: teal;
}
-/* mi = ace_constant ace_numeric */
.ace-github .ace_constant.ace_numeric {
color: #099;
}
-/*
- n = ace_identifier
- nf = ace_identifier
- nn = ace_identifer
-
- Ace thinks java imports are identifiers...
-
- Ace identifies many more identifiers than pygments tags as 'nf'.
- Pygments is much better at recognizing individual elements.
- Only highlight identifier if it's after a keyword or paren.
- - prevents highlighting arguments as functions
- - see 'argh, aaahaa' in ruby_func_def.rb
- - prevents highlighting methods within method bodies
- - see 'ruby!' in ruby_func_def.rb
-*/
-/*.ace-github .ace_keyword + .ace_identifier,
-.ace-github .ace_paren + .ace_identifier {
- color: #900;
- font-weight: bold;
-} */
-
-/* c1 = ace_comment
- condensed_ruby.rb */
.ace-github .ace_comment {
color: #998;
font-style: italic;
}
-/*
-nb = ace_support ace_function
-condensed_ruby.rb
-
-nb = ace_variable ace_language
-'self' in condensed_ruby.rb
-*/
-/*.ace-github .ace_support.ace_function,
-
-ace_support ace_function highlights strange things such as 'Short' in java.
-*/
.ace-github .ace_variable.ace_language {
color: #0086B3;
}
-/* o = ace_paren ace_rparen
- o = ace_paren ace_lparen
- '[]' in condensed_ruby.rb
-*/
.ace-github .ace_paren.ace_lparen,
.ace-github .ace_paren.ace_rparen {
font-weight: bold;
}
-/*
- kp = ace_constant ace_language ace_boolean
-*/
-
.ace-github .ace_constant.ace_language.ace_boolean {
font-weight: bold;
}
-/*
- sr = ace_string ace_regexp
- Sometimes ace will fail to recognize regexps.
-*/
.ace-github .ace_string.ace_regexp {
color: #009926;
font-weight: normal;
}
-/* vi = ace_variable ace_instancce */
.ace-github .ace_variable.ace_instancce {
color: teal;
}
@@ -129,3 +59,24 @@ ace_support ace_function highlights strange things such as 'Short' in java.
.ace-github .ace_constant.ace_language {
font-weight: bold;
}
+
+.ace-github .ace_text-layer {
+ cursor: text;
+}
+
+.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;
+}
\ No newline at end of file
diff --git a/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/virtual_renderer.js b/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/virtual_renderer.js
index 88719079..18408b98 100644
--- a/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/virtual_renderer.js
+++ b/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/virtual_renderer.js
@@ -467,14 +467,14 @@ var VirtualRenderer = function(container, theme) {
return;
if (!gutterReady) {
- var ch = this.$gutterLayer.element.children
- var oldEl = ch[this.$gutterLineHighlight - this.layerConfig.firstRow];
- if (oldEl)
- dom.removeCssClass(oldEl, "ace_gutter_active_line");
+ var lineEl, ch = this.$gutterLayer.element.children;
+ var index = this.$gutterLineHighlight - this.layerConfig.firstRow;
+ if (index >= 0 && (lineEl = ch[index]))
+ dom.removeCssClass(lineEl, "ace_gutter_active_line");
- var newEl = ch[i - this.layerConfig.firstRow];
- if (newEl)
- dom.addCssClass(newEl, "ace_gutter_active_line");
+ index = i - this.layerConfig.firstRow;
+ if (index >= 0 && (lineEl = ch[index]))
+ dom.addCssClass(lineEl, "ace_gutter_active_line");
}
this.$gutterLayer.removeGutterDecoration(this.$gutterLineHighlight, "ace_gutter_active_line");
diff --git a/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/worker/worker_client.js b/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/worker/worker_client.js
index a992db8f..609e981c 100644
--- a/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/worker/worker_client.js
+++ b/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/worker/worker_client.js
@@ -56,14 +56,17 @@ var WorkerClient = function(topLevelNamespaces, packagedJs, mod, classname) {
workerUrl = require.nameToUrl("ace/worker/worker_sourcemint");
} else {
// 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);
var tlns = {};
for (var i=0; i