', 'G', '$');
var selections = cm.getSelections().join();
- eq('123,45,6', selections);
- // Checks that with cursor at Infinity, finding words backwards still works.
- helpers.doKeys('2', 'k', 'b');
- selections = cm.getSelections().join();
- eq('1', selections);
+ eq("123,45,6", selections);
}, {value: '123\n45\n6'});
testVim('visual_block_different_line_lengths', function(cm, vim, helpers) {
// test the block selection with lines of different length
@@ -2820,44 +2803,6 @@ testVim('exCommand_history', function(cm, vim, helpers) {
onKeyDown({keyCode: keyCodes.Up}, input, close);
eq(input, 'sort');
}, {value: ''});
-testVim('search_clear', function(cm, vim, helpers) {
- var onKeyDown;
- var input = '';
- var keyCodes = {
- Ctrl: 17,
- u: 85
- };
- cm.openDialog = function(template, callback, options) {
- onKeyDown = options.onKeyDown;
- };
- var close = function(newVal) {
- if (typeof newVal == 'string') input = newVal;
- }
- helpers.doKeys('/');
- input = 'foo';
- onKeyDown({keyCode: keyCodes.Ctrl}, input, close);
- onKeyDown({keyCode: keyCodes.u, ctrlKey: true}, input, close);
- eq(input, '');
-});
-testVim('exCommand_clear', function(cm, vim, helpers) {
- var onKeyDown;
- var input = '';
- var keyCodes = {
- Ctrl: 17,
- u: 85
- };
- cm.openDialog = function(template, callback, options) {
- onKeyDown = options.onKeyDown;
- };
- var close = function(newVal) {
- if (typeof newVal == 'string') input = newVal;
- }
- helpers.doKeys(':');
- input = 'foo';
- onKeyDown({keyCode: keyCodes.Ctrl}, input, close);
- onKeyDown({keyCode: keyCodes.u, ctrlKey: true}, input, close);
- eq(input, '');
-});
testVim('.', function(cm, vim, helpers) {
cm.setCursor(0, 0);
helpers.doKeys('2', 'd', 'w');
@@ -3808,111 +3753,17 @@ testVim('set_string', function(cm, vim, helpers) {
eq('c', CodeMirror.Vim.getOption('testoption'));
});
testVim('ex_set_string', function(cm, vim, helpers) {
- CodeMirror.Vim.defineOption('testopt', 'a', 'string');
+ CodeMirror.Vim.defineOption('testoption', 'a', 'string');
// Test default value is set.
- eq('a', CodeMirror.Vim.getOption('testopt'));
+ eq('a', CodeMirror.Vim.getOption('testoption'));
try {
- // Test fail to set 'notestopt'
- helpers.doEx('set notestopt=b');
+ // Test fail to set 'notestoption'
+ helpers.doEx('set notestoption=b');
fail();
} catch (expected) {};
// Test setOption
- helpers.doEx('set testopt=c')
- eq('c', CodeMirror.Vim.getOption('testopt'));
- helpers.doEx('set testopt=c')
- eq('c', CodeMirror.Vim.getOption('testopt', cm)); //local || global
- eq('c', CodeMirror.Vim.getOption('testopt', cm, {scope: 'local'})); // local
- eq('c', CodeMirror.Vim.getOption('testopt', cm, {scope: 'global'})); // global
- eq('c', CodeMirror.Vim.getOption('testopt')); // global
- // Test setOption global
- helpers.doEx('setg testopt=d')
- eq('c', CodeMirror.Vim.getOption('testopt', cm));
- eq('c', CodeMirror.Vim.getOption('testopt', cm, {scope: 'local'}));
- eq('d', CodeMirror.Vim.getOption('testopt', cm, {scope: 'global'}));
- eq('d', CodeMirror.Vim.getOption('testopt'));
- // Test setOption local
- helpers.doEx('setl testopt=e')
- eq('e', CodeMirror.Vim.getOption('testopt', cm));
- eq('e', CodeMirror.Vim.getOption('testopt', cm, {scope: 'local'}));
- eq('d', CodeMirror.Vim.getOption('testopt', cm, {scope: 'global'}));
- eq('d', CodeMirror.Vim.getOption('testopt'));
-});
-testVim('ex_set_callback', function(cm, vim, helpers) {
- var global;
-
- function cb(val, cm, cfg) {
- if (val === undefined) {
- // Getter
- if (cm) {
- return cm._local;
- } else {
- return global;
- }
- } else {
- // Setter
- if (cm) {
- cm._local = val;
- } else {
- global = val;
- }
- }
- }
-
- CodeMirror.Vim.defineOption('testopt', 'a', 'string', cb);
- // Test default value is set.
- eq('a', CodeMirror.Vim.getOption('testopt'));
- try {
- // Test fail to set 'notestopt'
- helpers.doEx('set notestopt=b');
- fail();
- } catch (expected) {};
- // Test setOption (Identical to the string tests, but via callback instead)
- helpers.doEx('set testopt=c')
- eq('c', CodeMirror.Vim.getOption('testopt', cm)); //local || global
- eq('c', CodeMirror.Vim.getOption('testopt', cm, {scope: 'local'})); // local
- eq('c', CodeMirror.Vim.getOption('testopt', cm, {scope: 'global'})); // global
- eq('c', CodeMirror.Vim.getOption('testopt')); // global
- // Test setOption global
- helpers.doEx('setg testopt=d')
- eq('c', CodeMirror.Vim.getOption('testopt', cm));
- eq('c', CodeMirror.Vim.getOption('testopt', cm, {scope: 'local'}));
- eq('d', CodeMirror.Vim.getOption('testopt', cm, {scope: 'global'}));
- eq('d', CodeMirror.Vim.getOption('testopt'));
- // Test setOption local
- helpers.doEx('setl testopt=e')
- eq('e', CodeMirror.Vim.getOption('testopt', cm));
- eq('e', CodeMirror.Vim.getOption('testopt', cm, {scope: 'local'}));
- eq('d', CodeMirror.Vim.getOption('testopt', cm, {scope: 'global'}));
- eq('d', CodeMirror.Vim.getOption('testopt'));
-})
-testVim('ex_set_filetype', function(cm, vim, helpers) {
- CodeMirror.defineMode('test_mode', function() {
- return {token: function(stream) {
- stream.match(/^\s+|^\S+/);
- }};
- });
- CodeMirror.defineMode('test_mode_2', function() {
- return {token: function(stream) {
- stream.match(/^\s+|^\S+/);
- }};
- });
- // Test mode is set.
- helpers.doEx('set filetype=test_mode');
- eq('test_mode', cm.getMode().name);
- // Test 'ft' alias also sets mode.
- helpers.doEx('set ft=test_mode_2');
- eq('test_mode_2', cm.getMode().name);
-});
-testVim('ex_set_filetype_null', function(cm, vim, helpers) {
- CodeMirror.defineMode('test_mode', function() {
- return {token: function(stream) {
- stream.match(/^\s+|^\S+/);
- }};
- });
- cm.setOption('mode', 'test_mode');
- // Test mode is set to null.
- helpers.doEx('set filetype=');
- eq('null', cm.getMode().name);
+ helpers.doEx('set testoption=c')
+ eq('c', CodeMirror.Vim.getOption('testoption'));
});
// TODO: Reset key maps after each test.
testVim('ex_map_key2key', function(cm, vim, helpers) {
diff --git a/lib/ace/layer/font_metrics.js b/lib/ace/layer/font_metrics.js
index 715c6cf3..7e71f8a8 100644
--- a/lib/ace/layer/font_metrics.js
+++ b/lib/ace/layer/font_metrics.js
@@ -120,9 +120,9 @@ var FontMetrics = exports.FontMetrics = function(parentEl, interval) {
this.setPolling = function(val) {
if (val) {
this.$pollSizeChanges();
- } else if (this.$pollSizeChangesTimer) {
- clearInterval(this.$pollSizeChangesTimer);
- this.$pollSizeChangesTimer = 0;
+ } else {
+ if (this.$pollSizeChangesTimer)
+ this.$pollSizeChangesTimer;
}
};
diff --git a/lib/ace/layer/gutter.js b/lib/ace/layer/gutter.js
index dc1055c2..13ee8a25 100644
--- a/lib/ace/layer/gutter.js
+++ b/lib/ace/layer/gutter.js
@@ -100,14 +100,16 @@ var Gutter = function(parentEl) {
}
};
- this.$updateAnnotations = function (delta) {
+ this.$updateAnnotations = function (e) {
if (!this.$annotations.length)
return;
- var firstRow = delta.start.row;
- var len = delta.end.row - firstRow;
+ var delta = e.data;
+ var range = delta.range;
+ var firstRow = range.start.row;
+ var len = range.end.row - firstRow;
if (len === 0) {
// do nothing
- } else if (delta.action == 'remove') {
+ } else if (delta.action == "removeText" || delta.action == "removeLines") {
this.$annotations.splice(firstRow, len + 1, null);
} else {
var args = new Array(len + 1);
diff --git a/lib/ace/layer/marker.js b/lib/ace/layer/marker.js
index 9818d225..37e038b5 100644
--- a/lib/ace/layer/marker.js
+++ b/lib/ace/layer/marker.js
@@ -90,7 +90,7 @@ var Marker = function(parentEl) {
else
this.drawMultiLineMarker(html, range, marker.clazz, config);
} else {
- this.drawSingleLineMarker(html, range, marker.clazz + " ace_start" + " ace_br15", config);
+ this.drawSingleLineMarker(html, range, marker.clazz + " ace_start", config);
}
}
this.element.innerHTML = html.join("");
@@ -100,30 +100,27 @@ var Marker = function(parentEl) {
return (row - layerConfig.firstRowScreen) * layerConfig.lineHeight;
};
- function getBorderClass(tl, tr, br, bl) {
- return (tl ? 1 : 0) | (tr ? 2 : 0) | (br ? 4 : 0) | (bl ? 8 : 0);
- }
// Draws a marker, which spans a range of text on multiple lines
this.drawTextMarker = function(stringBuilder, range, clazz, layerConfig, extraStyle) {
- var session = this.session;
- var start = range.start.row;
- var end = range.end.row;
- var row = start;
- var prev = 0;
- var curr = 0;
- var next = session.getScreenLastRowColumn(row);
- var lineRange = new Range(row, range.start.column, row, curr);
- for (; row <= end; row++) {
- lineRange.start.row = lineRange.end.row = row;
- lineRange.start.column = row == start ? range.start.column : session.getRowWrapIndent(row);
- lineRange.end.column = next;
- prev = curr;
- curr = next;
- next = row + 1 < end ? session.getScreenLastRowColumn(row + 1) : row == end ? 0 : range.end.column;
- this.drawSingleLineMarker(stringBuilder, lineRange,
- clazz + (row == start ? " ace_start" : "") + " ace_br"
- + getBorderClass(row == start || row == start + 1 && range.start.column, prev < curr, curr > next, row == end),
- layerConfig, row == end ? 0 : 1, extraStyle);
+ // selection start
+ var row = range.start.row;
+
+ var lineRange = new Range(
+ row, range.start.column,
+ row, this.session.getScreenLastRowColumn(row)
+ );
+ this.drawSingleLineMarker(stringBuilder, lineRange, clazz + " ace_start", layerConfig, 1, extraStyle);
+
+ // selection end
+ row = range.end.row;
+ lineRange = new Range(row, 0, row, range.end.column);
+ this.drawSingleLineMarker(stringBuilder, lineRange, clazz, layerConfig, 0, extraStyle);
+
+ for (row = range.start.row + 1; row < range.end.row; row++) {
+ lineRange.start.row = row;
+ lineRange.end.row = row;
+ lineRange.end.column = this.session.getScreenLastRowColumn(row);
+ this.drawSingleLineMarker(stringBuilder, lineRange, clazz, layerConfig, 1, extraStyle);
}
};
@@ -137,7 +134,7 @@ var Marker = function(parentEl) {
extraStyle = extraStyle || "";
stringBuilder.push(
- ""
- + lang.stringRepeat(this.TAB_CHAR, i)
+ + this.TAB_CHAR
+ + lang.stringRepeat(" ", i - 1)
+ "");
} else {
tabStr.push(lang.stringRepeat(" ", i));
@@ -144,7 +145,7 @@ var Text = function(parentEl) {
spaceClass = " ace_invisible_space";
tabClass = " ace_invisible_tab";
var spaceContent = lang.stringRepeat(this.SPACE_CHAR, this.tabSize);
- var tabContent = lang.stringRepeat(this.TAB_CHAR, this.tabSize);
+ var tabContent = this.TAB_CHAR + lang.stringRepeat(" ", this.tabSize - 1);
} else{
var spaceContent = lang.stringRepeat(" ", this.tabSize);
var tabContent = spaceContent;
@@ -419,8 +420,6 @@ var Text = function(parentEl) {
);
}
- stringBuilder.push(lang.stringRepeat("\xa0", splits.indent));
-
split ++;
screenColumn = 0;
splitChars = splits[split] || Number.MAX_VALUE;
diff --git a/lib/ace/layer/text_test.js b/lib/ace/layer/text_test.js
index 3946ec66..e3403ca4 100644
--- a/lib/ace/layer/text_test.js
+++ b/lib/ace/layer/text_test.js
@@ -91,7 +91,7 @@ module.exports = {
var EOL = "" + textLayer.EOL_CHAR + "";
var SPACE = function(i) {return Array(i+1).join(" ")}
var DOT = function(i) {return Array(i+1).join(textLayer.SPACE_CHAR)}
- var TAB = function(i) {return Array(i+1).join(textLayer.TAB_CHAR)}
+ var TAB = function(i) {return textLayer.TAB_CHAR + SPACE(i-1)}
function testRender(results) {
for (var i = results.length; i--; ) {
var stringBuilder = [];
diff --git a/lib/ace/lib/dom.js b/lib/ace/lib/dom.js
index 2cbfe23e..ef2f7caa 100644
--- a/lib/ace/lib/dom.js
+++ b/lib/ace/lib/dom.js
@@ -91,11 +91,6 @@ exports.toggleCssClass = function(el, name) {
return add;
};
-if (typeof document == "undefined") {
- exports.importCssString = function() {};
- return;
-}
-
/*
* Add or remove a CSS class from the list of classes on the given node
* depending on the value of include
@@ -178,6 +173,9 @@ exports.getInnerHeight = function(element) {
};
+if (typeof document == "undefined")
+ return;
+
if (window.pageYOffset !== undefined) {
exports.getPageScrollTop = function() {
return window.pageYOffset;
diff --git a/lib/ace/lib/event.js b/lib/ace/lib/event.js
index 57924056..06932d3c 100644
--- a/lib/ace/lib/event.js
+++ b/lib/ace/lib/event.js
@@ -244,7 +244,7 @@ function normalizeCommandKeys(callback, e, keyCode) {
if (pressedKeys[keyCode] == 1)
ts = e.timeStamp;
} else if (keyCode === 18 && hashId === 3 && location === 2) {
- var dt = e.timeStamp - ts;
+ var dt = e.timestamp - ts;
if (dt < 50)
pressedKeys.altGr = true;
}
@@ -326,14 +326,13 @@ exports.addCommandKeyListener = function(el, callback) {
});
if (!pressedKeys) {
- resetPressedKeys();
- addListener(window, "focus", resetPressedKeys);
+ pressedKeys = Object.create(null);
+ addListener(window, "focus", function(e) {
+ pressedKeys = Object.create(null);
+ });
}
}
};
-function resetPressedKeys(e) {
- pressedKeys = Object.create(null);
-}
if (window.postMessage && !useragent.isOldIE) {
var postMessageId = 1;
diff --git a/lib/ace/lib/lang.js b/lib/ace/lib/lang.js
index 921dee1d..863bbb55 100644
--- a/lib/ace/lib/lang.js
+++ b/lib/ace/lib/lang.js
@@ -81,24 +81,20 @@ exports.copyArray = function(array){
return copy;
};
-exports.deepCopy = function deepCopy(obj) {
+exports.deepCopy = function (obj) {
if (typeof obj !== "object" || !obj)
return obj;
- var copy;
- if (Array.isArray(obj)) {
- copy = [];
- for (var key = 0; key < obj.length; key++) {
- copy[key] = deepCopy(obj[key]);
- }
- return copy;
- }
var cons = obj.constructor;
if (cons === RegExp)
return obj;
- copy = cons();
+ var copy = cons();
for (var key in obj) {
- copy[key] = deepCopy(obj[key]);
+ if (typeof obj[key] === "object") {
+ copy[key] = exports.deepCopy(obj[key]);
+ } else {
+ copy[key] = obj[key];
+ }
}
return copy;
};
diff --git a/lib/ace/line_widgets.js b/lib/ace/line_widgets.js
index ba87d857..d4080b53 100644
--- a/lib/ace/line_widgets.js
+++ b/lib/ace/line_widgets.js
@@ -113,16 +113,18 @@ function LineWidgets(session) {
});
};
- this.updateOnChange = function(delta) {
+ this.updateOnChange = function(e) {
var lineWidgets = this.session.lineWidgets;
if (!lineWidgets) return;
-
- var startRow = delta.start.row;
- var len = delta.end.row - startRow;
+
+ var delta = e.data;
+ var range = delta.range;
+ var startRow = range.start.row;
+ var len = range.end.row - startRow;
if (len === 0) {
// return
- } else if (delta.action == 'remove') {
+ } else if (delta.action == "removeText" || delta.action == "removeLines") {
var removed = lineWidgets.splice(startRow + 1, len);
removed.forEach(function(w) {
w && this.removeLineWidget(w);
diff --git a/lib/ace/mode/_test/tokens_gherkin.json b/lib/ace/mode/_test/tokens_gherkin.json
index 173d9798..d16ffc6c 100644
--- a/lib/ace/mode/_test/tokens_gherkin.json
+++ b/lib/ace/mode/_test/tokens_gherkin.json
@@ -56,34 +56,34 @@
],[
"start",
["text"," "],
- ["comment","|"],
- ["string"," start "],
- ["comment","|"],
- ["string"," eat "],
- ["comment","|"],
- ["string"," left "],
+ ["comment","| "],
+ ["string","start "],
+ ["comment","| "],
+ ["string","eat "],
+ ["comment","| "],
+ ["string","left "],
["comment","|"]
],[
"start",
["text"," "],
- ["comment","|"],
- ["string"," 12 "],
- ["comment","|"],
- ["string"," 5 "],
- ["comment","|"],
- ["string"," 7 "],
+ ["comment","| "],
+ ["string"," 12 "],
+ ["comment","| "],
+ ["string"," 5 "],
+ ["comment","| "],
+ ["string"," 7 "],
["comment","|"]
],[
"start",
["text"," "],
- ["comment","|"],
- ["string"," 20 "],
- ["comment","|"],
- ["string"," 5 "],
- ["comment","|"],
- ["string"," 15 "],
- ["comment","|"],
- ["string"," "]
+ ["comment","| "],
+ ["string"," 20 "],
+ ["comment","| "],
+ ["string"," 5 "],
+ ["comment","| "],
+ ["string"," 15 "],
+ ["comment","| "],
+ ["string"," "]
],[
"start"
],[
diff --git a/lib/ace/mode/_test/tokens_rust.json b/lib/ace/mode/_test/tokens_rust.json
index 8c59a3aa..6592575b 100644
--- a/lib/ace/mode/_test/tokens_rust.json
+++ b/lib/ace/mode/_test/tokens_rust.json
@@ -10,9 +10,10 @@
],[
"start",
["keyword.source.rust","fn"],
- ["text"," "],
+ ["meta.function.source.rust"," "],
["entity.name.function.source.rust","main"],
- ["text","() {"]
+ ["meta.function.source.rust","("],
+ ["text",") {"]
],[
"start",
["text"," "],
@@ -87,14 +88,10 @@
],[
"start",
["keyword.source.rust","fn"],
- ["text"," "],
- ["entity.name.function.source.rust","map"],
- ["keyword.operator","<"],
- ["text","T"],
- ["keyword.operator",","],
- ["text"," U"],
- ["keyword.operator",">"],
- ["text","(vector: &[T]"],
+ ["meta.function.source.rust"," "],
+ ["entity.name.function.source.rust","map"],
+ ["meta.function.source.rust","("],
+ ["text","vector: &[T]"],
["keyword.operator",","],
["text"," function: &fn(v: &T) "],
["keyword.operator","->"],
diff --git a/lib/ace/mode/_test/tokens_vbscript.json b/lib/ace/mode/_test/tokens_vbscript.json
index 05d5dd22..a49f976d 100644
--- a/lib/ace/mode/_test/tokens_vbscript.json
+++ b/lib/ace/mode/_test/tokens_vbscript.json
@@ -199,5 +199,7 @@
["string.quoted.double.asp"," ... updated.\""]
],[
"start",
- ["storage.type.asp","End Sub"]
+ ["support.function.asp","End"],
+ ["text"," "],
+ ["storage.type.asp","Sub"]
]]
\ No newline at end of file
diff --git a/lib/ace/mode/behaviour/behaviour_test.js b/lib/ace/mode/behaviour/behaviour_test.js
index 245edf99..9dc27bf8 100644
--- a/lib/ace/mode/behaviour/behaviour_test.js
+++ b/lib/ace/mode/behaviour/behaviour_test.js
@@ -144,16 +144,6 @@ module.exports = {
exec("selectleft", 1);
exec("insertstring", 1, '"');
assert.equal(editor.getValue(), '("foo")');
-
- editor.setValue("", 1);
- exec("selectleft", 1);
- exec("insertstring", 1, '"');
- assert.equal(editor.getValue(), '""');
- exec("insertstring", 1, '\\');
- exec("insertstring", 1, 'n');
- exec("insertstring", 1, '"');
- assert.equal(editor.getValue(), '"\\n"');
-
},
"test: xml": function() {
editor = new Editor(new MockRenderer());
diff --git a/lib/ace/mode/behaviour/cstyle.js b/lib/ace/mode/behaviour/cstyle.js
index dd1b0d14..a1dce91e 100644
--- a/lib/ace/mode/behaviour/cstyle.js
+++ b/lib/ace/mode/behaviour/cstyle.js
@@ -269,8 +269,8 @@ var CstyleBehaviour = function() {
if (leftChar == "\\" && token && /escape/.test(token.type))
return null;
- var stringBefore = token && /string|escape/.test(token.type);
- var stringAfter = !rightToken || /string|escape/.test(rightToken.type);
+ var stringBefore = token && /string/.test(token.type);
+ var stringAfter = !rightToken || /string/.test(rightToken.type);
var pair;
if (rightChar == quote) {
diff --git a/lib/ace/mode/folding/cstyle.js b/lib/ace/mode/folding/cstyle.js
index 6a6abca7..a98807ab 100644
--- a/lib/ace/mode/folding/cstyle.js
+++ b/lib/ace/mode/folding/cstyle.js
@@ -53,7 +53,7 @@ oop.inherits(FoldMode, BaseFoldMode);
this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/;
this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/;
this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/;
- this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/;
+ this.startRegionRe = /^\s*(\/\*|\/\/)#region\b/;
//prevent naming conflict with any modes that inherit from cstyle and override this (like csharp)
this._getFoldWidgetBase = this.getFoldWidget;
@@ -69,8 +69,6 @@ oop.inherits(FoldMode, BaseFoldMode);
*
* @example tripleStarFoldingSection
* /*** this folds even though 1 line because it has 3 stars ***[/]
- *
- * @note the pound symbol for region tags is optional
*/
this.getFoldWidget = function(session, foldStyle, row) {
var line = session.getLine(row);
@@ -160,16 +158,12 @@ oop.inherits(FoldMode, BaseFoldMode);
return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);
};
- /**
- * gets comment region block with end region assumed to be start of comment in any cstyle mode or SQL mode (--) which inherits from this.
- * There may optionally be a pound symbol before the region/endregion statement
- */
this.getCommentRegionBlock = function(session, line, row) {
var startColumn = line.search(/\s*$/);
var maxRow = session.getLength();
var startRow = row;
- var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/;
+ var re = /^\s*(?:\/\*|\/\/)#(end)?region\b/;
var depth = 1;
while (++row < maxRow) {
line = session.getLine(row);
diff --git a/lib/ace/mode/folding/sqlserver.js b/lib/ace/mode/folding/sqlserver.js
deleted file mode 100644
index b3fd4e93..00000000
--- a/lib/ace/mode/folding/sqlserver.js
+++ /dev/null
@@ -1,111 +0,0 @@
-/* ***** 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 ***** */
-
-define(function(require, exports, module) {
-"use strict";
-
-var oop = require("../../lib/oop");
-var Range = require("../../range").Range;
-var BaseFoldMode = require("./cstyle").FoldMode;
-
-var FoldMode = exports.FoldMode = function() {};
-
-oop.inherits(FoldMode, BaseFoldMode);
-
-(function() {
- /**
- * Inheriting cstyle folding because it handles the region comment folding
- * and special block comment folding appropriately.
- *
- * Cstyle's getCommentRegionBlock() contains the sql comment characters '--' for end region block.
- */
-
- this.foldingStartMarker = /(\bCASE\b|\bBEGIN\b)|^\s*(\/\*)/i;
- // this.foldingStopMarker = /(\bEND\b)|^[\s\*]*(\*\/)/i;
- this.startRegionRe = /^\s*(\/\*|--)#?region\b/;
-
- this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {
- var line = session.getLine(row);
-
- if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row);
-
- var match = line.match(this.foldingStartMarker);
- if (match) {
- var i = match.index;
- if (match[1]) return this.getBeginEndBlock(session, row, i, match[1]);
-
- var range = session.getCommentFoldRange(row, i + match[0].length, 1);
- if (range && !range.isMultiLine()) {
- if (forceMultiline) {
- range = this.getSectionRange(session, row);
- }
- else if (foldStyle != "all") range = null;
- }
-
- return range;
- }
-
- if (foldStyle === "markbegin") return;
- //TODO: add support for end folding markers
- return;
- };
-
- /**
- * @returns {range} folding block for sequence that starts with 'CASE' or 'BEGIN' and ends with 'END'
- * @param {string} matchSequence - the sequence of charaters that started the fold widget, which should remain visible when the fold widget is folded
- */
- this.getBeginEndBlock = function(session, row, column, matchSequence) {
- var start = {
- row: row,
- column: column + matchSequence.length
- };
- var maxRow = session.getLength();
- var line;
-
- var depth = 1;
- var re = /(\bCASE\b|\bBEGIN\b)|(\bEND\b)/i;
- while (++row < maxRow) {
- line = session.getLine(row);
- var m = re.exec(line);
- if (!m) continue;
- if (m[1]) depth++;
- else depth--;
-
- if (!depth) break;
- }
- var endRow = row;
- if (endRow > start.row) {
- return new Range(start.row, start.column, endRow, line.length);
- }
- };
-
-}).call(FoldMode.prototype);
-
-});
diff --git a/lib/ace/mode/gherkin_highlight_rules.js b/lib/ace/mode/gherkin_highlight_rules.js
index 04ce877c..d54db204 100644
--- a/lib/ace/mode/gherkin_highlight_rules.js
+++ b/lib/ace/mode/gherkin_highlight_rules.js
@@ -36,18 +36,18 @@ var stringEscape = "\\\\(x[0-9A-Fa-f]{2}|[0-7]{3}|[\\\\abfnrtv'\"]|U[0-9A-Fa-f]
var GherkinHighlightRules = function() {
- // need to include constant ints
+ // need to include constant ints
this.$rules = {
- start : [{
+ start : [{
token: 'constant.numeric',
regex: "(?:(?:[1-9]\\d*)|(?:0))"
- }, {
- token : "comment",
- regex : "#.*$"
- }, {
- token : "keyword",
- regex : "Feature:|Background:|Scenario:|Scenario\ Outline:|Examples:|Given|When|Then|And|But|\\*",
- }, {
+ }, {
+ token : "comment",
+ regex : "#.*$"
+ }, {
+ token : "keyword",
+ regex : "Feature:|Background:|Scenario:|Scenario\ Outline:|Examples:|Given|When|Then|And|But|\\*",
+ }, {
token : "string", // multi line """ string start
regex : '"{3}',
next : "qqstring3"
@@ -56,22 +56,22 @@ var GherkinHighlightRules = function() {
regex : '"',
next : "qqstring"
}, {
- token : "comment",
- regex : "@[A-Za-z0-9]+",
- next : "start"
+ token : "comment",
+ regex : "@[A-Za-z0-9]+",
+ next : "start"
}, {
- token : "comment",
- regex : "<.+>"
+ token : "comment",
+ regex : "<.+>"
}, {
- token : "comment",
- regex : "\\|(?=.)",
- next : "table-item"
+ token : "comment",
+ regex : "\\| ",
+ next : "table-item"
}, {
- token : "comment",
- regex : "\\|$",
- next : "start"
+ token : "comment",
+ regex : "\\|$",
+ next : "start"
}],
- "qqstring3" : [ {
+ "qqstring3" : [ {
token : "constant.language.escape",
regex : stringEscape
}, {
@@ -81,7 +81,7 @@ var GherkinHighlightRules = function() {
}, {
defaultToken : "string"
}],
- "qqstring" : [{
+ "qqstring" : [{
token : "constant.language.escape",
regex : stringEscape
}, {
@@ -96,19 +96,15 @@ var GherkinHighlightRules = function() {
defaultToken: "string"
}],
"table-item" : [{
- token : "comment",
- regex : /$/,
- next : "start"
- }, {
- token : "comment",
- regex : /\|/
- }, {
token : "string",
- regex : /\\./
- }, {
- defaultToken : "string"
- }]
+ regex : "[A-Za-z0-9 ]*",
+ next : "start"
+ }],
};
+
+
+ //new TextHighlightRules().getRules();
+
}
oop.inherits(GherkinHighlightRules, TextHighlightRules);
diff --git a/lib/ace/mode/handlebars.js b/lib/ace/mode/handlebars.js
index 164ad43f..3f2e7179 100644
--- a/lib/ace/mode/handlebars.js
+++ b/lib/ace/mode/handlebars.js
@@ -13,6 +13,7 @@ var Mode = function() {
HtmlMode.call(this);
this.HighlightRules = HandlebarsHighlightRules;
this.$behaviour = new HtmlBehaviour();
+
this.foldingRules = new HtmlFoldMode();
};
@@ -20,7 +21,7 @@ var Mode = function() {
oop.inherits(Mode, HtmlMode);
(function() {
- this.blockComment = {start: "{{!--", end: "--}}"};
+ this.blockComment = {start: "{!--", end: "--}"};
this.$id = "ace/mode/handlebars";
}).call(Mode.prototype);
diff --git a/lib/ace/mode/html_highlight_rules.js b/lib/ace/mode/html_highlight_rules.js
index 4effa2aa..9c9cc36f 100644
--- a/lib/ace/mode/html_highlight_rules.js
+++ b/lib/ace/mode/html_highlight_rules.js
@@ -65,7 +65,7 @@ var HtmlHighlightRules = function() {
include : "tag_whitespace"
}, {
token : "entity.other.attribute-name.xml",
- regex : "[-_a-zA-Z0-9:.]+"
+ regex : "[-_a-zA-Z0-9:]+"
}, {
token : "keyword.operator.attribute-equals.xml",
regex : "=",
@@ -89,7 +89,7 @@ var HtmlHighlightRules = function() {
return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml",
"meta.tag" + (group ? "." + group : "") + ".tag-name.xml"];
},
- regex : "(?)([-_a-zA-Z0-9:.]+)",
+ regex : "(?)([-_a-zA-Z0-9:]+)",
next: "tag_stuff"
}],
tag_stuff: [
diff --git a/lib/ace/mode/less_highlight_rules.js b/lib/ace/mode/less_highlight_rules.js
index a0162765..d39bdeae 100644
--- a/lib/ace/mode/less_highlight_rules.js
+++ b/lib/ace/mode/less_highlight_rules.js
@@ -231,7 +231,7 @@ var LessHighlightRules = function() {
regex: "\\.[a-z0-9-_]+"
}, {
token: "variable.language",
- regex: ":[a-z_][a-z0-9-_]*"
+ regex: ":[a-z0-9-_]+"
}, {
token: "constant",
regex: "[a-z0-9-_]+"
diff --git a/lib/ace/mode/nim.js b/lib/ace/mode/nim.js
deleted file mode 100644
index cbf48ef2..00000000
--- a/lib/ace/mode/nim.js
+++ /dev/null
@@ -1,113 +0,0 @@
-/* ***** 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 ***** */
-
-define(function(require, exports, module) {
-"use strict";
-
-var oop = require("../lib/oop");
-var TextMode = require("./text").Mode;
-var NimHighlightRules = require("./nim_highlight_rules").NimHighlightRules;
-var NimFoldMode = require("./folding/pythonic").FoldMode;
-var Range = require("../range").Range;
-
-var Mode = function() {
- this.HighlightRules = NimHighlightRules;
- this.foldingRules = new NimFoldMode("\\:|=");
-};
-oop.inherits(Mode, TextMode);
-
-(function() {
-
- this.lineCommentStart = "#";
-
- this.getNextLineIndent = function(state, line, tab) {
- var indent = this.$getIndent(line);
-
- var tokenizedLine = this.getTokenizer().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;
- };
-
- var outdents = {
- "discard": 1,
- "return": 1,
- "raise": 1,
- "break": 1,
- "continue": 1
- };
-
- this.checkOutdent = function(state, line, input) {
- if (input !== "\r\n" && input !== "\r" && input !== "\n")
- return false;
-
- var tokens = this.getTokenizer().getLineTokens(line.trim(), state).tokens;
-
- if (!tokens)
- return false;
-
- // ignore trailing comments
- do {
- var last = tokens.pop();
- } while (last && (last.type == "comment" || (last.type == "text" && last.value.match(/^\s+$/))));
-
- if (!last)
- return false;
-
- return (last.type == "keyword" && outdents[last.value]);
- };
-
- this.autoOutdent = function(state, doc, row) {
- // outdenting in python is slightly different because it always applies
- // to the next line and only of a new line is inserted
-
- row += 1;
- var indent = this.$getIndent(doc.getLine(row));
- var tab = doc.getTabString();
- if (indent.slice(-tab.length) == tab)
- doc.remove(new Range(row, indent.length-tab.length, row, indent.length));
- };
-
- this.$id = "ace/mode/nim";
-}).call(Mode.prototype);
-
-exports.Mode = Mode;
-});
diff --git a/lib/ace/mode/nim_highlight_rules.js b/lib/ace/mode/nim_highlight_rules.js
deleted file mode 100644
index e762a636..00000000
--- a/lib/ace/mode/nim_highlight_rules.js
+++ /dev/null
@@ -1,238 +0,0 @@
-/* ***** 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 ***** */
-/*
- * TODO: nim delimiters
- */
-
-define(function(require, exports, module) {
-"use strict";
-
-var oop = require("../lib/oop");
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-var num_suffix = "(\'[Ff]32|\'[Ff]64|\'[IiUu]8|\'[IiUu]16|\'[IiUu]32|\'[IiUu]64)";
-
-var NimHighlightRules = function() {
-
- var keywords = (
- "addr|and|as|asm|atomic|bind|block|break|case|cast|const|continue|" +
- "converter|defer|discard|distinct|div|do|elif|else|end|enum|except|" +
- "export|finally|for|from|func|generic|if|import|in|include|interface|" +
- "is|isnot|iterator|let|macro|method|mixin|mod|nil|not|notin|object|of|" +
- "or|out|proc|ptr|raise|ref|return|shl|shr|static|template|try|tuple|" +
- "type|using|var|when|while|with|without|xor|yield"
- );
-
- var builtinConstants = (
- "true|false|nil|NotImplemented|Ellipsis"
- );
-
- var storageType = (
- "string|seq|array|expr|stmt|typed|untyped|any|auto|bool|cdouble|cfloat|"+
- "cchar|clongdouble|clong|clonglong|cshort|csize|cstring|cstringarray|"+
- "culong|culonglong|cushort|guarded|natural|openarray|ordinal|pointer|"+
- "range|set|shared|static|typedesc|varargs|void"
- );
-
- var builtinFunctions = (
- "defined|declared|declaredInScope|echo|$"
- );
-
- //var futureReserved = "";
- var keywordMapper = this.createKeywordMapper({
- "invalid.deprecated": "debugger",
- "support.function": builtinFunctions,
- //"invalid.illegal": futureReserved,
- "constant.language": builtinConstants,
- "storage.type" : storageType,
- "keyword": keywords
- }, "identifier");
-
- var strPre = "(?:r|R)?";
-
- var decimalInteger = "(?:(?:[1-9]\\d*)|(?:0))";
- var octInteger = "(?:0[o]?[0-7]+)";
- var hexInteger = "(?:0[xX][\\dA-Fa-f]+)";
- var binInteger = "(?:0[bB][01]+)";
- var integer = "(?:" + decimalInteger + "|" + octInteger + "|" + hexInteger + "|" + binInteger + ")";
-
- var exponent = "(?:[eE][+-]?\\d+)";
- var fraction = "(?:\\.\\d+)";
- var intPart = "(?:\\d+)";
- var pointFloat = "(?:(?:" + intPart + "?" + fraction + ")|(?:" + intPart + "\\.))";
- var exponentFloat = "(?:(?:" + pointFloat + "|" + intPart + ")" + exponent + ")";
- var floatNumber = "(?:" + exponentFloat + "|" + pointFloat + ")";
-
- var stringEscape = "\\\\(x[0-9A-Fa-f]{2}|[0-7]{3}|[\\\\abfnrtv'\"]|U[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})";
-
- this.$rules = {
- "start" : [ {
- token : "comment",
- regex : "#.*$"
- }, {
- token : "keyword",
- regex : "(proc|method|temdplate|macro|macromethod|converter|func|iterator) ",
- next : "qproc_name"
- }, {
- token : "storage.type",
- regex : "(c|cu|u)?int(8|16|32|64)?",
- }, {
- token : "storage.type",
- regex : "(c|cu|u|cs)?char",
- }, {
- token : "storage.type",
- regex : "float(32|64)?",
- }, {
- token : "docstring",
- regex : "##.*$"
- }, {
- token : "string", // multi line """ string start
- regex : strPre + '"{3}',
- next : "qqstring3"
- }, {
- token : "string", // " string
- regex : strPre + '"(?=.)',
- next : "qqstring"
- }, {
- token : "string", // multi line ''' string start
- regex : strPre + "'{3}",
- next : "qstring3"
- }, {
- token : "backtick", // ` string
- regex : strPre + "`(?=.)",
- next : "qxstring"
- }, {
- token : "string", // ' string
- regex : strPre + "'(?=.)",
- next : "qstring"
- }, {
- token : "constant.numeric", // imaginary
- regex : "(?:" + floatNumber + "|\\d+)[jJ]\\b"
- }, {
- token : "constant.numeric", // float
- regex : floatNumber
- }, {
- token : "constant.numeric", // long integer
- regex : integer + "[lL]\\b"
- }, {
- token : "constant.numeric", // integer
- regex : integer + "\\b"
- }, {
- token : keywordMapper,
- regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
- }, {
- token : "keyword.operator",
- regex : "\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|%|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|="
- }, {
- token : "paren.lparen",
- regex : "[\\[\\(\\{]"
- }, {
- token : "paren.rparen",
- regex : "[\\]\\)\\}]"
- }, {
- token : "text",
- regex : "\\s+"
- } ],
- "qqstring3" : [ {
- token : "constant.language.escape",
- regex : stringEscape
- }, {
- token : "string", // multi line """ string end
- regex : '"{3}',
- next : "start"
- }, {
- defaultToken : "string"
- } ],
- "qstring3" : [ {
- token : "constant.language.escape",
- regex : stringEscape
- }, {
- token : "string", // multi line ''' string end
- regex : "'{3}",
- next : "start"
- }, {
- defaultToken : "string"
- } ],
- "qqstring" : [{
- token : "constant.language.escape",
- regex : stringEscape
- }, {
- token : "string",
- regex : "\\\\$",
- next : "qqstring"
- }, {
- token : "string",
- regex : '"|$',
- next : "start"
- }, {
- defaultToken: "string"
- }],
- "qstring" : [{
- token : "constant.language.escape",
- regex : stringEscape
- }, {
- token : "string",
- regex : "\\\\$",
- next : "qstring"
- }, {
- token : "string",
- regex : "'|$",
- next : "start"
- }, {
- defaultToken: "string"
- }],
- "qxstring" : [{
- token : "constant.language.escape",
- regex : stringEscape
- }, {
- token : "backtick",
- regex : "\\\\$",
- next : "qxstring"
- }, {
- token : "backtick",
- regex : "`|$",
- next : "start"
- }, {
- defaultToken: "backtick"
- }],
- "qproc_name":[{
- token : "proc_name",
- regex : "\\w+",
- },{
- token : "start_bracket",
- regex : "(\\(|=|$)",
- next : "start"
- }],
- };
-};
-
-oop.inherits(NimHighlightRules, TextHighlightRules);
-
-exports.NimHighlightRules = NimHighlightRules;
-});
diff --git a/lib/ace/mode/rust_highlight_rules.js b/lib/ace/mode/rust_highlight_rules.js
index 056e7a55..181cf11a 100644
--- a/lib/ace/mode/rust_highlight_rules.js
+++ b/lib/ace/mode/rust_highlight_rules.js
@@ -84,8 +84,9 @@ var RustHighlightRules = function() {
{ token: 'constant.character.escape.source.rust',
regex: stringEscape },
{ defaultToken: 'string.quoted.double.source.rust' } ] },
- { token: [ 'keyword.source.rust', 'text', 'entity.name.function.source.rust' ],
- regex: '\\b(fn)(\\s+)([a-zA-Z_][a-zA-Z0-9_]*)' },
+ { token: [ 'keyword.source.rust', 'meta.function.source.rust',
+ 'entity.name.function.source.rust', 'meta.function.source.rust' ],
+ regex: '\\b(fn)(\\s+)([a-zA-Z_][a-zA-Z0-9_][\\w\\:,+ \\\'<>]*)(\\s*\\()' },
{ token: 'support.constant', regex: '\\b[a-zA-Z_][\\w\\d]*::' },
{ token: 'keyword.source.rust',
regex: '\\b(?:as|assert|break|claim|const|do|drop|else|extern|fail|for|if|impl|in|let|log|loop|match|mod|module|move|mut|Owned|priv|pub|pure|ref|return|unchecked|unsafe|use|while|mod|Send|static|trait|class|struct|enum|type)\\b' },
diff --git a/lib/ace/mode/scheme.js b/lib/ace/mode/scheme.js
index 2360b3da..aa462a10 100644
--- a/lib/ace/mode/scheme.js
+++ b/lib/ace/mode/scheme.js
@@ -39,92 +39,15 @@ define(function(require, exports, module) {
var oop = require("../lib/oop");
var TextMode = require("./text").Mode;
var SchemeHighlightRules = require("./scheme_highlight_rules").SchemeHighlightRules;
-var MatchingParensOutdent = require("./matching_parens_outdent").MatchingParensOutdent;
var Mode = function() {
this.HighlightRules = SchemeHighlightRules;
- this.$outdent = new MatchingParensOutdent();
};
oop.inherits(Mode, TextMode);
(function() {
this.lineCommentStart = ";";
- this.minorIndentFunctions = ["define", "lambda", "define-macro", "define-syntax", "syntax-rules", "define-record-type", "define-structure"];
-
- this.$toIndent = function(str) {
- return str.split('').map(function(ch) {
- if (/\s/.exec(ch)) {
- return ch;
- } else {
- return ' ';
- }
- }).join('');
- };
-
- this.$calculateIndent = function(line, tab) {
- var baseIndent = this.$getIndent(line);
- var delta = 0;
- var isParen, ch;
- // Walk back from end of line, find matching braces
- for (var i = line.length - 1; i >= 0; i--) {
- ch = line[i];
- if (ch === '(') {
- delta--;
- isParen = true;
- } else if (ch === '(' || ch === '[' || ch === '{') {
- delta--;
- isParen = false;
- } else if (ch === ')' || ch === ']' || ch === '}') {
- delta++;
- }
- if (delta < 0) {
- break;
- }
- }
- if (delta < 0 && isParen) {
- // Were more brackets opened than closed and was a ( left open?
- i += 1;
- var iBefore = i;
- var fn = '';
- while (true) {
- ch = line[i];
- if (ch === ' ' || ch === '\t') {
- if(this.minorIndentFunctions.indexOf(fn) !== -1) {
- return this.$toIndent(line.substring(0, iBefore - 1) + tab);
- } else {
- return this.$toIndent(line.substring(0, i + 1));
- }
- } else if (ch === undefined) {
- return this.$toIndent(line.substring(0, iBefore - 1) + tab);
- }
- fn += line[i];
- i++;
- }
- } else if(delta < 0 && !isParen) {
- // Were more brackets openend than closed and was it not a (?
- return this.$toIndent(line.substring(0, i+1));
- } else if(delta > 0) {
- // Mere more brackets closed than opened? Outdent.
- baseIndent = baseIndent.substring(0, baseIndent.length - tab.length);
- return baseIndent;
- } else {
- // Were they nicely matched? Just indent like line before.
- return baseIndent;
- }
- };
-
- this.getNextLineIndent = function(state, line, tab) {
- return this.$calculateIndent(line, tab);
- };
-
- this.checkOutdent = function(state, line, input) {
- return this.$outdent.checkOutdent(line, input);
- };
-
- this.autoOutdent = function(state, doc, row) {
- this.$outdent.autoOutdent(doc, row);
- };
this.$id = "ace/mode/scheme";
}).call(Mode.prototype);
diff --git a/lib/ace/mode/sql_highlight_rules.js b/lib/ace/mode/sql_highlight_rules.js
index 31e77c82..f9ff39d9 100644
--- a/lib/ace/mode/sql_highlight_rules.js
+++ b/lib/ace/mode/sql_highlight_rules.js
@@ -38,28 +38,21 @@ var SqlHighlightRules = function() {
var keywords = (
"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|union|create|table|primary|key|if|" +
- "foreign|not|references|default|null|inner|cross|natural|database|drop|grant"
+ "when|else|end|type|left|right|join|on|outer|desc|asc|union"
);
var builtinConstants = (
- "true|false"
+ "true|false|null"
);
var builtinFunctions = (
"count|min|max|avg|sum|rank|now|coalesce"
);
- var dataTypes = (
- "int|numeric|decimal|date|varchar|char|bigint|float|double|bit|binary|text|set|timestamp|" +
- "money|real|number|integer"
- );
-
var keywordMapper = this.createKeywordMapper({
"support.function": builtinFunctions,
"keyword": keywords,
- "constant.language": builtinConstants,
- "storage.type": dataTypes
+ "constant.language": builtinConstants
}, "identifier", true);
this.$rules = {
diff --git a/lib/ace/mode/sqlserver.js b/lib/ace/mode/sqlserver.js
deleted file mode 100644
index 5f24730c..00000000
--- a/lib/ace/mode/sqlserver.js
+++ /dev/null
@@ -1,62 +0,0 @@
-/* ***** 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 ***** */
-
-define(function(require, exports, module) {
-"use strict";
-
-var oop = require("../lib/oop");
-var TextMode = require("./text").Mode;
-var SqlServerHighlightRules = require("./sqlserver_highlight_rules").SqlHighlightRules;
-var Range = require("../range").Range;
-var SqlServerFoldMode = require("./folding/sqlserver").FoldMode;
-
-var Mode = function() {
- this.HighlightRules = SqlServerHighlightRules;
- this.foldingRules = new SqlServerFoldMode();
-};
-oop.inherits(Mode, TextMode);
-
-(function() {
- this.lineCommentStart = "--";
- this.blockComment = {start: "/*", end: "*/"};
-
- /**
- * Override keyword completions using list created in highlight rules
- */
- this.getCompletions = function(state, session, pos, prefix) {
- return session.$mode.$highlightRules.completions;
- };
-
- this.$id = "ace/mode/sql";
-}).call(Mode.prototype);
-
-exports.Mode = Mode;
-
-});
diff --git a/lib/ace/mode/sqlserver_highlight_rules.js b/lib/ace/mode/sqlserver_highlight_rules.js
deleted file mode 100644
index c914c0ae..00000000
--- a/lib/ace/mode/sqlserver_highlight_rules.js
+++ /dev/null
@@ -1,232 +0,0 @@
-/* ***** 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 ***** */
-
-define(function(require, exports, module) {
-"use strict";
-
-var oop = require("../lib/oop");
-var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules;
-var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
-
-var SqlServerHighlightRules = function() {
- /**
- * Transact-SQL Syntax Conventions: https://msdn.microsoft.com/en-us/library/ms177563.aspx
- * Goal: make this imitate SSMS (SQL Server Managment Studio)
- */
-
- // https://msdn.microsoft.com/en-us/library/ms189773.aspx
- var logicalOperators = "ALL|AND|ANY|BETWEEN|EXISTS|IN|LIKE|NOT|OR|SOME";
- logicalOperators += "|NULL|IS|APPLY|INNER|OUTER|LEFT|RIGHT|JOIN|CROSS"; //SSMS colors these gray too
- //note: manually removed LEFT and RIGHT from built in functions below to color it same way SSMS does
-
-
- var builtinFunctions = (
- /* https://msdn.microsoft.com/en-us/library/ms187957.aspx */
- "OPENDATASOURCE|OPENQUERY|OPENROWSET|OPENXML|" +
- /* https://msdn.microsoft.com/en-us/library/ms173454.aspx */
- "AVG|CHECKSUM_AGG|COUNT|COUNT_BIG|GROUPING|GROUPING_ID|MAX|MIN|STDEV|STDEVP|SUM|VAR|VARP|" +
- /* https://msdn.microsoft.com/en-us/library/ms189798.aspx */
- "DENSE_RANK|NTILE|RANK|ROW_NUMBER" +
- /* https://msdn.microsoft.com/en-us/library/ms173823.aspx */
- "@@DATEFIRST|@@DBTS|@@LANGID|@@LANGUAGE|@@LOCK_TIMEOUT|@@MAX_CONNECTIONS|@@MAX_PRECISION|@@NESTLEVEL|@@OPTIONS|@@REMSERVER|@@SERVERNAME|@@SERVICENAME|@@SPID|@@TEXTSIZE|@@VERSION|" +
- /* https://msdn.microsoft.com/en-us/library/hh231076.aspx */
- "CAST|CONVERT|PARSE|TRY_CAST|TRY_CONVERT|TRY_PARSE" +
- /* https://msdn.microsoft.com/en-us/library/ms186285.aspx */
- "@@CURSOR_ROWS|@@FETCH_STATUS|CURSOR_STATUS|" +
- /* https://msdn.microsoft.com/en-us/library/ms186724.aspx */
- "@@DATEFIRST|@@LANGUAGE|CURRENT_TIMESTAMP|DATEADD|DATEDIFF|DATEFROMPARTS|DATENAME|DATEPART|DATETIME2FROMPARTS|DATETIMEFROMPARTS|DATETIMEOFFSETFROMPARTS|DAY|EOMONTH|GETDATE|GETUTCDATE|ISDATE|MONTH|SET DATEFIRST|SET DATEFORMAT|SET LANGUAGE|SMALLDATETIMEFROMPARTS|SP_HELPLANGUAGE|SWITCHOFFSET|SYSDATETIME|SYSDATETIMEOFFSET|SYSUTCDATETIME|TIMEFROMPARTS|TODATETIMEOFFSET|YEAR|" +
- /* https://msdn.microsoft.com/en-us/library/hh213226.aspx */
- "CHOOSE|IIF|" +
- /* https://msdn.microsoft.com/en-us/library/ms177516.aspx */
- "ABS|ACOS|ASIN|ATAN|ATN2|CEILING|COS|COT|DEGREES|EXP|FLOOR|LOG|LOG10|PI|POWER|RADIANS|RAND|ROUND|SIGN|SIN|SQRT|SQUARE|TAN|" +
- /* https://msdn.microsoft.com/en-us/library/ms187812.aspx */
- "@@PROCID|APPLOCK_MODE|APPLOCK_TEST|APP_NAME|ASSEMBLYPROPERTY|COLUMNPROPERTY|COL_LENGTH|COL_NAME|DATABASEPROPERTYEX|DATABASE_PRINCIPAL_ID|DB_ID|DB_NAME|FILEGROUPPROPERTY|FILEGROUP_ID|FILEGROUP_NAME|FILEPROPERTY|FILE_ID|FILE_IDEX|FILE_NAME|FULLTEXTCATALOGPROPERTY|FULLTEXTSERVICEPROPERTY|INDEXKEY_PROPERTY|INDEXPROPERTY|INDEX_COL|OBJECTPROPERTY|OBJECTPROPERTYEX|OBJECT_DEFINITION|OBJECT_ID|OBJECT_NAME|OBJECT_SCHEMA_NAME|ORIGINAL_DB_NAME|PARSENAME|SCHEMA_ID|SCHEMA_NAME|SCOPE_IDENTITY|SERVERPROPERTY|STATS_DATE|TYPEPROPERTY|TYPE_ID|TYPE_NAME|" +
- /* https://msdn.microsoft.com/en-us/library/ms186236.aspx */
- "CERTENCODED|CERTPRIVATEKEY|CURRENT_USER|DATABASE_PRINCIPAL_ID|HAS_PERMS_BY_NAME|IS_MEMBER|IS_ROLEMEMBER|IS_SRVROLEMEMBER|ORIGINAL_LOGIN|PERMISSIONS|PWDCOMPARE|PWDENCRYPT|SCHEMA_ID|SCHEMA_NAME|SESSION_USER|SUSER_ID|SUSER_NAME|SUSER_SID|SUSER_SNAME|SYS.FN_BUILTIN_PERMISSIONS|SYS.FN_GET_AUDIT_FILE|SYS.FN_MY_PERMISSIONS|SYSTEM_USER|USER_ID|USER_NAME|" +
- /* https://msdn.microsoft.com/en-us/library/ms181984.aspx */
- "ASCII|CHAR|CHARINDEX|CONCAT|DIFFERENCE|FORMAT|LEN|LOWER|LTRIM|NCHAR|PATINDEX|QUOTENAME|REPLACE|REPLICATE|REVERSE|RTRIM|SOUNDEX|SPACE|STR|STUFF|SUBSTRING|UNICODE|UPPER|" +
- /* https://msdn.microsoft.com/en-us/library/ms187786.aspx */
- "$PARTITION|@@ERROR|@@IDENTITY|@@PACK_RECEIVED|@@ROWCOUNT|@@TRANCOUNT|BINARY_CHECKSUM|CHECKSUM|CONNECTIONPROPERTY|CONTEXT_INFO|CURRENT_REQUEST_ID|ERROR_LINE|ERROR_MESSAGE|ERROR_NUMBER|ERROR_PROCEDURE|ERROR_SEVERITY|ERROR_STATE|FORMATMESSAGE|GETANSINULL|GET_FILESTREAM_TRANSACTION_CONTEXT|HOST_ID|HOST_NAME|ISNULL|ISNUMERIC|MIN_ACTIVE_ROWVERSION|NEWID|NEWSEQUENTIALID|ROWCOUNT_BIG|XACT_STATE|" +
- /* https://msdn.microsoft.com/en-us/library/ms177520.aspx */
- "@@CONNECTIONS|@@CPU_BUSY|@@IDLE|@@IO_BUSY|@@PACKET_ERRORS|@@PACK_RECEIVED|@@PACK_SENT|@@TIMETICKS|@@TOTAL_ERRORS|@@TOTAL_READ|@@TOTAL_WRITE|FN_VIRTUALFILESTATS|" +
- /* https://msdn.microsoft.com/en-us/library/ms188353.aspx */
- "PATINDEX|TEXTPTR|TEXTVALID|" +
- /* other */
- "COALESCE|NULLIF"
- );
-
-
- // https://msdn.microsoft.com/en-us/library/ms187752.aspx
- var dataTypes = ("BIGINT|BINARY|BIT|CHAR|CURSOR|DATE|DATETIME|DATETIME2|DATETIMEOFFSET|DECIMAL|FLOAT|HIERARCHYID|IMAGE|INTEGER|INT|MONEY|NCHAR|NTEXT|NUMERIC|NVARCHAR|REAL|SMALLDATETIME|SMALLINT|SMALLMONEY|SQL_VARIANT|TABLE|TEXT|TIME|TIMESTAMP|TINYINT|UNIQUEIDENTIFIER|VARBINARY|VARCHAR|XML");
-
-
- //https://msdn.microsoft.com/en-us/library/ms176007.aspx (these are lower case!)
- var builtInStoredProcedures = "sp_addextendedproc|sp_addextendedproperty|sp_addmessage|sp_addtype|sp_addumpdevice|sp_add_data_file_recover_suspect_db|sp_add_log_file_recover_suspect_db|sp_altermessage|sp_attach_db|sp_attach_single_file_db|sp_autostats|sp_bindefault|sp_bindrule|sp_bindsession|sp_certify_removable|sp_clean_db_file_free_space|sp_clean_db_free_space|sp_configure|sp_control_plan_guide|sp_createstats|sp_create_plan_guide|sp_create_plan_guide_from_handle|sp_create_removable|sp_cycle_errorlog|sp_datatype_info|sp_dbcmptlevel|sp_dbmmonitoraddmonitoring|sp_dbmmonitorchangealert|sp_dbmmonitorchangemonitoring|sp_dbmmonitordropalert|sp_dbmmonitordropmonitoring|sp_dbmmonitorhelpalert|sp_dbmmonitorhelpmonitoring|sp_dbmmonitorresults|sp_db_increased_partitions|sp_delete_backuphistory|sp_depends|sp_describe_first_result_set|sp_describe_undeclared_parameters|sp_detach_db|sp_dropdevice|sp_dropextendedproc|sp_dropextendedproperty|sp_dropmessage|sp_droptype|sp_execute|sp_executesql|sp_getapplock|sp_getbindtoken|sp_help|sp_helpconstraint|sp_helpdb|sp_helpdevice|sp_helpextendedproc|sp_helpfile|sp_helpfilegroup|sp_helpindex|sp_helplanguage|sp_helpserver|sp_helpsort|sp_helpstats|sp_helptext|sp_helptrigger|sp_indexoption|sp_invalidate_textptr|sp_lock|sp_monitor|sp_prepare|sp_prepexec|sp_prepexecrpc|sp_procoption|sp_recompile|sp_refreshview|sp_releaseapplock|sp_rename|sp_renamedb|sp_resetstatus|sp_sequence_get_range|sp_serveroption|sp_setnetname|sp_settriggerorder|sp_spaceused|sp_tableoption|sp_unbindefault|sp_unbindrule|sp_unprepare|sp_updateextendedproperty|sp_updatestats|sp_validname|sp_who|sys.sp_merge_xtp_checkpoint_files|sys.sp_xtp_bind_db_resource_pool|sys.sp_xtp_checkpoint_force_garbage_collection|sys.sp_xtp_control_proc_exec_stats|sys.sp_xtp_control_query_exec_stats|sys.sp_xtp_unbind_db_resource_pool";
-
-
- // https://msdn.microsoft.com/en-us/library/ms189822.aspx
- var keywords = "ABSOLUTE|ACTION|ADA|ADD|ADMIN|AFTER|AGGREGATE|ALIAS|ALL|ALLOCATE|ALTER|AND|ANY|ARE|ARRAY|AS|ASC|ASENSITIVE|ASSERTION|ASYMMETRIC|AT|ATOMIC|AUTHORIZATION|BACKUP|BEFORE|BEGIN|BETWEEN|BIT_LENGTH|BLOB|BOOLEAN|BOTH|BREADTH|BREAK|BROWSE|BULK|BY|CALL|CALLED|CARDINALITY|CASCADE|CASCADED|CASE|CATALOG|CHARACTER|CHARACTER_LENGTH|CHAR_LENGTH|CHECK|CHECKPOINT|CLASS|CLOB|CLOSE|CLUSTERED|COALESCE|COLLATE|COLLATION|COLLECT|COLUMN|COMMIT|COMPLETION|COMPUTE|CONDITION|CONNECT|CONNECTION|CONSTRAINT|CONSTRAINTS|CONSTRUCTOR|CONTAINS|CONTAINSTABLE|CONTINUE|CORR|CORRESPONDING|COVAR_POP|COVAR_SAMP|CREATE|CROSS|CUBE|CUME_DIST|CURRENT|CURRENT_CATALOG|CURRENT_DATE|CURRENT_DEFAULT_TRANSFORM_GROUP|CURRENT_PATH|CURRENT_ROLE|CURRENT_SCHEMA|CURRENT_TIME|CURRENT_TRANSFORM_GROUP_FOR_TYPE|CYCLE|DATA|DATABASE|DBCC|DEALLOCATE|DEC|DECLARE|DEFAULT|DEFERRABLE|DEFERRED|DELETE|DENY|DEPTH|DEREF|DESC|DESCRIBE|DESCRIPTOR|DESTROY|DESTRUCTOR|DETERMINISTIC|DIAGNOSTICS|DICTIONARY|DISCONNECT|DISK|DISTINCT|DISTRIBUTED|DOMAIN|DOUBLE|DROP|DUMP|DYNAMIC|EACH|ELEMENT|ELSE|END|END-EXEC|EQUALS|ERRLVL|ESCAPE|EVERY|EXCEPT|EXCEPTION|EXEC|EXECUTE|EXISTS|EXIT|EXTERNAL|EXTRACT|FETCH|FILE|FILLFACTOR|FILTER|FIRST|FOR|FOREIGN|FORTRAN|FOUND|FREE|FREETEXT|FREETEXTTABLE|FROM|FULL|FULLTEXTTABLE|FUNCTION|FUSION|GENERAL|GET|GLOBAL|GO|GOTO|GRANT|GROUP|HAVING|HOLD|HOLDLOCK|HOST|HOUR|IDENTITY|IDENTITYCOL|IDENTITY_INSERT|IF|IGNORE|IMMEDIATE|IN|INCLUDE|INDEX|INDICATOR|INITIALIZE|INITIALLY|INNER|INOUT|INPUT|INSENSITIVE|INSERT|INTEGER|INTERSECT|INTERSECTION|INTERVAL|INTO|IS|ISOLATION|ITERATE|JOIN|KEY|KILL|LANGUAGE|LARGE|LAST|LATERAL|LEADING|LESS|LEVEL|LIKE|LIKE_REGEX|LIMIT|LINENO|LN|LOAD|LOCAL|LOCALTIME|LOCALTIMESTAMP|LOCATOR|MAP|MATCH|MEMBER|MERGE|METHOD|MINUTE|MOD|MODIFIES|MODIFY|MODULE|MULTISET|NAMES|NATIONAL|NATURAL|NCLOB|NEW|NEXT|NO|NOCHECK|NONCLUSTERED|NONE|NORMALIZE|NOT|NULL|NULLIF|OBJECT|OCCURRENCES_REGEX|OCTET_LENGTH|OF|OFF|OFFSETS|OLD|ON|ONLY|OPEN|OPERATION|OPTION|OR|ORDER|ORDINALITY|OUT|OUTER|OUTPUT|OVER|OVERLAPS|OVERLAY|PAD|PARAMETER|PARAMETERS|PARTIAL|PARTITION|PASCAL|PATH|PERCENT|PERCENTILE_CONT|PERCENTILE_DISC|PERCENT_RANK|PIVOT|PLAN|POSITION|POSITION_REGEX|POSTFIX|PRECISION|PREFIX|PREORDER|PREPARE|PRESERVE|PRIMARY|PRINT|PRIOR|PRIVILEGES|PROC|PROCEDURE|PUBLIC|RAISERROR|RANGE|READ|READS|READTEXT|RECONFIGURE|RECURSIVE|REF|REFERENCES|REFERENCING|REGR_AVGX|REGR_AVGY|REGR_COUNT|REGR_INTERCEPT|REGR_R2|REGR_SLOPE|REGR_SXX|REGR_SXY|REGR_SYY|RELATIVE|RELEASE|REPLICATION|RESTORE|RESTRICT|RESULT|RETURN|RETURNS|REVERT|REVOKE|ROLE|ROLLBACK|ROLLUP|ROUTINE|ROW|ROWCOUNT|ROWGUIDCOL|ROWS|RULE|SAVE|SAVEPOINT|SCHEMA|SCOPE|SCROLL|SEARCH|SECOND|SECTION|SECURITYAUDIT|SELECT|SEMANTICKEYPHRASETABLE|SEMANTICSIMILARITYDETAILSTABLE|SEMANTICSIMILARITYTABLE|SENSITIVE|SEQUENCE|SESSION|SET|SETS|SETUSER|SHUTDOWN|SIMILAR|SIZE|SOME|SPECIFIC|SPECIFICTYPE|SQL|SQLCA|SQLCODE|SQLERROR|SQLEXCEPTION|SQLSTATE|SQLWARNING|START|STATE|STATEMENT|STATIC|STATISTICS|STDDEV_POP|STDDEV_SAMP|STRUCTURE|SUBMULTISET|SUBSTRING_REGEX|SYMMETRIC|SYSTEM|TABLESAMPLE|TEMPORARY|TERMINATE|TEXTSIZE|THAN|THEN|TIMEZONE_HOUR|TIMEZONE_MINUTE|TO|TOP|TRAILING|TRAN|TRANSACTION|TRANSLATE|TRANSLATE_REGEX|TRANSLATION|TREAT|TRIGGER|TRIM|TRUNCATE|TSEQUAL|UESCAPE|UNDER|UNION|UNIQUE|UNKNOWN|UNNEST|UNPIVOT|UPDATE|UPDATETEXT|USAGE|USE|USER|USING|VALUE|VALUES|VARIABLE|VARYING|VAR_POP|VAR_SAMP|VIEW|WAITFOR|WHEN|WHENEVER|WHERE|WHILE|WIDTH_BUCKET|WINDOW|WITH|WITHIN|WITHIN GROUP|WITHOUT|WORK|WRITE|WRITETEXT|XMLAGG|XMLATTRIBUTES|XMLBINARY|XMLCAST|XMLCOMMENT|XMLCONCAT|XMLDOCUMENT|XMLELEMENT|XMLEXISTS|XMLFOREST|XMLITERATE|XMLNAMESPACES|XMLPARSE|XMLPI|XMLQUERY|XMLSERIALIZE|XMLTABLE|XMLTEXT|XMLVALIDATE|ZONE";
-
-
- // Microsoft's keyword list is missing a lot of things that are located on various other pages
- // https://msdn.microsoft.com/en-us/library/ms187373.aspx, https://msdn.microsoft.com/en-us/library/ms181714.aspx
- keywords += "|KEEPIDENTITY|KEEPDEFAULTS|IGNORE_CONSTRAINTS|IGNORE_TRIGGERS|XLOCK|FORCESCAN|FORCESEEK|HOLDLOCK|NOLOCK|NOWAIT|PAGLOCK|READCOMMITTED|READCOMMITTEDLOCK|READPAST|READUNCOMMITTED|REPEATABLEREAD|ROWLOCK|SERIALIZABLE|SNAPSHOT|SPATIAL_WINDOW_MAX_CELLS|TABLOCK|TABLOCKX|UPDLOCK|XLOCK|IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX|EXPAND|VIEWS|FAST|FORCE|KEEP|KEEPFIXED|MAXDOP|MAXRECURSION|OPTIMIZE|PARAMETERIZATION|SIMPLE|FORCED|RECOMPILE|ROBUST|PLAN|SPATIAL_WINDOW_MAX_CELLS|NOEXPAND|HINT";
- // https://msdn.microsoft.com/en-us/library/ms173815.aspx
- keywords += "|LOOP|HASH|MERGE|REMOTE";
- // https://msdn.microsoft.com/en-us/library/ms175976.aspx
- keywords += "|TRY|CATCH|THROW";
- // highlighted words in SSMS that I'm not even sure where they come from
- keywords += "|TYPE";
-
-
- //remove specific built in types from keyword list
- keywords = keywords.split('|');
- keywords = keywords.filter(function(value, index, self) {
- return logicalOperators.split('|').indexOf(value) === -1 && builtinFunctions.split('|').indexOf(value) === -1 && dataTypes.split('|').indexOf(value) === -1;
- });
- keywords = keywords.sort().join('|');
-
-
- var keywordMapper = this.createKeywordMapper({
- "constant.language": logicalOperators,
- "storage.type": dataTypes,
- "support.function": builtinFunctions,
- "support.storedprocedure": builtInStoredProcedures,
- "keyword": keywords,
- }, "identifier", true);
-
-
- //https://msdn.microsoft.com/en-us/library/ms190356.aspx
- var setStatements = "SET ANSI_DEFAULTS|SET ANSI_NULLS|SET ANSI_NULL_DFLT_OFF|SET ANSI_NULL_DFLT_ON|SET ANSI_PADDING|SET ANSI_WARNINGS|SET ARITHABORT|SET ARITHIGNORE|SET CONCAT_NULL_YIELDS_NULL|SET CURSOR_CLOSE_ON_COMMIT|SET DATEFIRST|SET DATEFORMAT|SET DEADLOCK_PRIORITY|SET FIPS_FLAGGER|SET FMTONLY|SET FORCEPLAN|SET IDENTITY_INSERT|SET IMPLICIT_TRANSACTIONS|SET LANGUAGE|SET LOCK_TIMEOUT|SET NOCOUNT|SET NOEXEC|SET NUMERIC_ROUNDABORT|SET OFFSETS|SET PARSEONLY|SET QUERY_GOVERNOR_COST_LIMIT|SET QUOTED_IDENTIFIER|SET REMOTE_PROC_TRANSACTIONS|SET ROWCOUNT|SET SHOWPLAN_ALL|SET SHOWPLAN_TEXT|SET SHOWPLAN_XML|SET STATISTICS IO|SET STATISTICS PROFILE|SET STATISTICS TIME|SET STATISTICS XML|SET TEXTSIZE|SET XACT_ABORT".split('|');
- var isolationLevels = "READ UNCOMMITTED|READ COMMITTED|REPEATABLE READ|SNAPSHOP|SERIALIZABLE".split('|');
- for (var i = 0; i < isolationLevels.length; i++) {
- setStatements.push('SET TRANSACTION ISOLATION LEVEL ' + isolationLevels[i]);
- }
-
-
- this.$rules = {
- start: [{
- token: "string.start",
- regex: "'",
- next: [{
- token: "constant.language.escape",
- regex: /''/
- }, {
- token: "string.end",
- next: "start",
- regex: "'"
- }, {
- defaultToken: "string"
- }]
- },
- DocCommentHighlightRules.getStartRule("doc-start"), {
- token: "comment",
- regex: "--.*$"
- }, {
- token: "comment",
- start: "/\\*",
- end: "\\*/"
- }, {
- token: "constant.numeric", // float
- regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
- }, {
- token: keywordMapper,
- regex: "@{0,2}[a-zA-Z_$][a-zA-Z0-9_$]*\\b(?!])" //up to 2 @symbols for some built in functions
- }, {
- token: "constant.class",
- regex: "@@?[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
- }, {
- //https://msdn.microsoft.com/en-us/library/ms174986.aspx
- token: "keyword.operator",
- regex: "\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|=|\\*"
- }, {
- token: "paren.lparen",
- regex: "[\\(]"
- }, {
- token: "paren.rparen",
- regex: "[\\)]"
- }, {
- token: "punctuation",
- regex: ",|;"
- }, {
- token: "text",
- regex: "\\s+"
- }],
- comment: [
- DocCommentHighlightRules.getTagRule(), {
- token: "comment",
- regex: "\\*\\/",
- next: "no_regex"
- }, {
- defaultToken: "comment",
- caseInsensitive: true
- }],
- };
-
- //add each set statment as regex at top of rules so that they are processed first because they require multiple words
- //note: this makes the statements not match if they are not upper case.. which is not ideal but I don't know of an easy way to fix this
- for (var i = 0; i < setStatements.length; i++) {
- this.$rules.start.unshift({
- token: "set.statement",
- regex: setStatements[i]
- });
- }
-
- this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("start")]);
- this.normalizeRules();
-
-
- //prepare custom keyword completions used by mode to override default completor
- //this allows for custom 'meta' and proper case of completions
- var completions = [];
- var addCompletions = function(arr, meta) {
- arr.forEach(function(v) {
- completions.push({
- name: v,
- value: v,
- score: 0,
- meta: meta,
- });
- });
- };
- addCompletions(builtInStoredProcedures.split('|'), 'procedure');
- addCompletions(logicalOperators.split('|'), 'operator');
- addCompletions(builtinFunctions.split('|'), 'function');
- addCompletions(dataTypes.split('|'), 'type');
- addCompletions(setStatements, 'statement');
- addCompletions(keywords.split('|'), 'keyword');
-
- this.completions = completions;
-};
-
-oop.inherits(SqlServerHighlightRules, TextHighlightRules);
-
-exports.SqlHighlightRules = SqlServerHighlightRules;
-});
diff --git a/lib/ace/mode/toml_highlight_rules.js b/lib/ace/mode/toml_highlight_rules.js
index 1a7871ab..686ffae2 100644
--- a/lib/ace/mode/toml_highlight_rules.js
+++ b/lib/ace/mode/toml_highlight_rules.js
@@ -57,10 +57,6 @@ var TomlHighlightRules = function() {
regex : '"(?=.)',
next : "qqstring"
},
- {
- token: ["variable.keygroup.toml"],
- regex: "(?:^\\s*)(\\[\\[([^\\]]+)\\]\\])"
- },
{
token: ["variable.keygroup.toml"],
regex: "(?:^\\s*)(\\[([^\\]]+)\\])"
@@ -104,4 +100,4 @@ var TomlHighlightRules = function() {
oop.inherits(TomlHighlightRules, TextHighlightRules);
exports.TomlHighlightRules = TomlHighlightRules;
-});
+});
\ No newline at end of file
diff --git a/lib/ace/mode/vbscript_highlight_rules.js b/lib/ace/mode/vbscript_highlight_rules.js
index ef829922..c706002d 100644
--- a/lib/ace/mode/vbscript_highlight_rules.js
+++ b/lib/ace/mode/vbscript_highlight_rules.js
@@ -3,7 +3,7 @@
*
* Copyright (c) 2012, 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
@@ -14,7 +14,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
@@ -85,35 +85,29 @@ var VBScriptHighlightRules = function() {
{
token: "punctuation.definition.comment.asp",
regex: "'|REM",
- next: "comment",
- caseInsensitive: true
+ next: "comment"
},
{
token: [
"keyword.control.asp"
],
- regex: "\\b(?:If|Then|Else|ElseIf|Else If|End If|While|Wend|For|To|Each|Case|Select|End Select|Return|Continue|Do|Until|Loop|Next|With|Exit Do|Exit For|Exit Function|Exit Property|Exit Sub|IIf)\\b",
- caseInsensitive: true
+ regex: "\\b(?:If|Then|Else|ElseIf|Else If|End If|While|Wend|For|To|Each|Case|Select|End Select|Return|Continue|Do|Until|Loop|Next|With|Exit Do|Exit For|Exit Function|Exit Property|Exit Sub|IIf)\\b"
},
{
token: "keyword.operator.asp",
- regex: "\\b(?:Mod|And|Not|Or|Xor|as)\\b",
- caseInsensitive: true
+ regex: "\\b(?:Mod|And|Not|Or|Xor|as)\\b"
},
{
token: "storage.type.asp",
- regex: "Dim|Call|Class|Const|Dim|Redim|Function|Sub|Private Sub|Public Sub|End sub|End Function|Set|Let|Get|New|Randomize|Option Explicit|On Error Resume Next|On Error GoTo",
- caseInsensitive: true
+ regex: "Dim|Call|Class|Const|Dim|Redim|Function|Sub|Private Sub|Public Sub|End sub|End Function|Set|Let|Get|New|Randomize|Option Explicit|On Error Resume Next|On Error GoTo"
},
{
token: "storage.modifier.asp",
- regex: "\\b(?:Private|Public|Default)\\b",
- caseInsensitive: true
+ regex: "\\b(?:Private|Public|Default)\\b"
},
{
token: "constant.language.asp",
- regex: "\\b(?:Empty|False|Nothing|Null|True)\\b",
- caseInsensitive: true
+ regex: "\\b(?:Empty|False|Nothing|Null|True)\\b"
},
{
token: "punctuation.definition.string.begin.asp",
@@ -128,28 +122,23 @@ var VBScriptHighlightRules = function() {
},
{
token: "support.class.asp",
- regex: "\\b(?:Application|ObjectContext|Request|Response|Server|Session)\\b",
- caseInsensitive: true
+ regex: "\\b(?:Application|ObjectContext|Request|Response|Server|Session)\\b"
},
{
token: "support.class.collection.asp",
- regex: "\\b(?:Contents|StaticObjects|ClientCertificate|Cookies|Form|QueryString|ServerVariables)\\b",
- caseInsensitive: true
+ regex: "\\b(?:Contents|StaticObjects|ClientCertificate|Cookies|Form|QueryString|ServerVariables)\\b"
},
{
token: "support.constant.asp",
- regex: "\\b(?:TotalBytes|Buffer|CacheControl|Charset|ContentType|Expires|ExpiresAbsolute|IsClientConnected|PICS|Status|ScriptTimeout|CodePage|LCID|SessionID|Timeout)\\b",
- caseInsensitive: true
+ regex: "\\b(?:TotalBytes|Buffer|CacheControl|Charset|ContentType|Expires|ExpiresAbsolute|IsClientConnected|PICS|Status|ScriptTimeout|CodePage|LCID|SessionID|Timeout)\\b"
},
{
token: "support.function.asp",
- regex: "\\b(?:Lock|Unlock|SetAbort|SetComplete|BinaryRead|AddHeader|AppendToLog|BinaryWrite|Clear|End|Flush|Redirect|Write|CreateObject|HTMLEncode|MapPath|URLEncode|Abandon|Convert|Regex)\\b",
- caseInsensitive: true
+ regex: "\\b(?:Lock|Unlock|SetAbort|SetComplete|BinaryRead|AddHeader|AppendToLog|BinaryWrite|Clear|End|Flush|Redirect|Write|CreateObject|HTMLEncode|MapPath|URLEncode|Abandon|Convert|Regex)\\b"
},
{
token: "support.function.event.asp",
- regex: "\\b(?:Application_OnEnd|Application_OnStart|OnTransactionAbort|OnTransactionCommit|Session_OnEnd|Session_OnStart)\\b",
- caseInsensitive: true
+ regex: "\\b(?:Application_OnEnd|Application_OnStart|OnTransactionAbort|OnTransactionCommit|Session_OnEnd|Session_OnStart)\\b"
},
// {
// token: [
@@ -159,8 +148,7 @@ var VBScriptHighlightRules = function() {
// },
{
token: "support.function.vb.asp",
- regex: "\\b(?:Array|Add|Asc|Atn|CBool|CByte|CCur|CDate|CDbl|Chr|CInt|CLng|Conversions|Cos|CreateObject|CSng|CStr|Date|DateAdd|DateDiff|DatePart|DateSerial|DateValue|Day|Derived|Math|Escape|Eval|Exists|Exp|Filter|FormatCurrency|FormatDateTime|FormatNumber|FormatPercent|GetLocale|GetObject|GetRef|Hex|Hour|InputBox|InStr|InStrRev|Int|Fix|IsArray|IsDate|IsEmpty|IsNull|IsNumeric|IsObject|Item|Items|Join|Keys|LBound|LCase|Left|Len|LoadPicture|Log|LTrim|RTrim|Trim|Maths|Mid|Minute|Month|MonthName|MsgBox|Now|Oct|Remove|RemoveAll|Replace|RGB|Right|Rnd|Round|ScriptEngine|ScriptEngineBuildVersion|ScriptEngineMajorVersion|ScriptEngineMinorVersion|Second|SetLocale|Sgn|Sin|Space|Split|Sqr|StrComp|String|StrReverse|Tan|Time|Timer|TimeSerial|TimeValue|TypeName|UBound|UCase|Unescape|VarType|Weekday|WeekdayName|Year)\\b",
- caseInsensitive: true
+ regex: "\\b(?:Array|Add|Asc|Atn|CBool|CByte|CCur|CDate|CDbl|Chr|CInt|CLng|Conversions|Cos|CreateObject|CSng|CStr|Date|DateAdd|DateDiff|DatePart|DateSerial|DateValue|Day|Derived|Math|Escape|Eval|Exists|Exp|Filter|FormatCurrency|FormatDateTime|FormatNumber|FormatPercent|GetLocale|GetObject|GetRef|Hex|Hour|InputBox|InStr|InStrRev|Int|Fix|IsArray|IsDate|IsEmpty|IsNull|IsNumeric|IsObject|Item|Items|Join|Keys|LBound|LCase|Left|Len|LoadPicture|Log|LTrim|RTrim|Trim|Maths|Mid|Minute|Month|MonthName|MsgBox|Now|Oct|Remove|RemoveAll|Replace|RGB|Right|Rnd|Round|ScriptEngine|ScriptEngineBuildVersion|ScriptEngineMajorVersion|ScriptEngineMinorVersion|Second|SetLocale|Sgn|Sin|Space|Split|Sqr|StrComp|String|StrReverse|Tan|Time|Timer|TimeSerial|TimeValue|TypeName|UBound|UCase|Unescape|VarType|Weekday|WeekdayName|Year)\\b"
},
{
token: [
@@ -170,8 +158,7 @@ var VBScriptHighlightRules = function() {
},
{
token: "support.type.vb.asp",
- regex: "\\b(?:vbtrue|vbfalse|vbcr|vbcrlf|vbformfeed|vblf|vbnewline|vbnullchar|vbnullstring|int32|vbtab|vbverticaltab|vbbinarycompare|vbtextcomparevbsunday|vbmonday|vbtuesday|vbwednesday|vbthursday|vbfriday|vbsaturday|vbusesystemdayofweek|vbfirstjan1|vbfirstfourdays|vbfirstfullweek|vbgeneraldate|vblongdate|vbshortdate|vblongtime|vbshorttime|vbobjecterror|vbEmpty|vbNull|vbInteger|vbLong|vbSingle|vbDouble|vbCurrency|vbDate|vbString|vbObject|vbError|vbBoolean|vbVariant|vbDataObject|vbDecimal|vbByte|vbArray)\\b",
- caseInsensitive: true
+ regex: "\\b(?:vbtrue|vbfalse|vbcr|vbcrlf|vbformfeed|vblf|vbnewline|vbnullchar|vbnullstring|int32|vbtab|vbverticaltab|vbbinarycompare|vbtextcomparevbsunday|vbmonday|vbtuesday|vbwednesday|vbthursday|vbfriday|vbsaturday|vbusesystemdayofweek|vbfirstjan1|vbfirstfourdays|vbfirstfullweek|vbgeneraldate|vblongdate|vbshortdate|vblongtime|vbshorttime|vbobjecterror|vbEmpty|vbNull|vbInteger|vbLong|vbSingle|vbDouble|vbCurrency|vbDate|vbString|vbObject|vbError|vbBoolean|vbVariant|vbDataObject|vbDecimal|vbByte|vbArray)\\b"
},
{
token: [
diff --git a/lib/ace/mode/xml.js b/lib/ace/mode/xml.js
index 38861eee..8c7033f1 100644
--- a/lib/ace/mode/xml.js
+++ b/lib/ace/mode/xml.js
@@ -53,7 +53,7 @@ oop.inherits(Mode, TextMode);
this.blockComment = {start: ""};
- this.createWorker = function(session) {
+ this.createWorker = function(session) {
var worker = new WorkerClient(["ace"], "ace/mode/xml_worker", "Worker");
worker.attachToDocument(session.getDocument());
diff --git a/lib/ace/mode/xml_highlight_rules.js b/lib/ace/mode/xml_highlight_rules.js
index 8e39cae5..91da0e70 100644
--- a/lib/ace/mode/xml_highlight_rules.js
+++ b/lib/ace/mode/xml_highlight_rules.js
@@ -35,10 +35,8 @@ var oop = require("../lib/oop");
var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
var XmlHighlightRules = function(normalize) {
- // http://www.w3.org/TR/REC-xml/#NT-NameChar
- // NameStartChar ::= ":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]
- // NameChar ::= NameStartChar | "-" | "." | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]
- var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*";
+
+ var tagRegex = "[a-zA-Z][-_a-zA-Z0-9]*";
this.$rules = {
start : [
diff --git a/lib/ace/mouse/multi_select_handler.js b/lib/ace/mouse/multi_select_handler.js
index 649043fa..9b52e237 100644
--- a/lib/ace/mouse/multi_select_handler.js
+++ b/lib/ace/mouse/multi_select_handler.js
@@ -83,15 +83,15 @@ function onMouseDown(e) {
var selectionMode;
if (editor.$mouseHandler.$enableJumpToDef) {
if (ctrl && alt || accel && alt)
- selectionMode = shift ? "block" : "add";
- else if (alt && editor.$blockSelectEnabled)
+ selectionMode = "add";
+ else if (alt)
selectionMode = "block";
} else {
if (accel && !alt) {
selectionMode = "add";
if (!isMultiSelect && shift)
return;
- } else if (alt && editor.$blockSelectEnabled) {
+ } else if (alt) {
selectionMode = "block";
}
}
@@ -117,7 +117,7 @@ function onMouseDown(e) {
if (shift) {
oldRange = null;
- range = selection.ranges[0] || range;
+ range = selection.ranges[0];
editor.removeSelectionMarker(range);
}
editor.once("mouseup", function() {
diff --git a/lib/ace/multi_select.js b/lib/ace/multi_select.js
index 1d0b69e7..0635afc2 100644
--- a/lib/ace/multi_select.js
+++ b/lib/ace/multi_select.js
@@ -754,9 +754,9 @@ var Editor = require("./editor").Editor;
if (fr < 0) fr = 0;
if (lr >= max) lr = max - 1;
}
- var lines = this.session.removeFullLines(fr, lr);
+ var lines = this.session.doc.removeLines(fr, lr);
lines = this.$reAlignText(lines, guessRange);
- this.session.insert({row: fr, column: 0}, lines.join("\n") + "\n");
+ this.session.doc.insert({row: fr, column: 0}, lines.join("\n") + "\n");
if (!guessRange) {
range.start.column = 0;
range.end.column = lines[lines.length - 1].length;
@@ -924,8 +924,7 @@ function addAltCursorListeners(editor){
var el = editor.textInput.getElement();
var altCursor = false;
event.addListener(el, "keydown", function(e) {
- var altDown = e.keyCode == 18 && !(e.ctrlKey || e.shiftKey || e.metaKey);
- if (editor.$blockSelectEnabled && altDown) {
+ if (e.keyCode == 18 && !(e.ctrlKey || e.shiftKey || e.metaKey)) {
if (!altCursor) {
editor.renderer.setMouseCursor("crosshair");
altCursor = true;
@@ -963,12 +962,6 @@ require("./config").defineOptions(Editor.prototype, "editor", {
}
},
value: true
- },
- enableBlockSelect: {
- set: function(val) {
- this.$blockSelectEnabled = val;
- },
- value: true
}
});
diff --git a/lib/ace/multi_select_test.js b/lib/ace/multi_select_test.js
index 7fd504fb..1eccc4ce 100644
--- a/lib/ace/multi_select_test.js
+++ b/lib/ace/multi_select_test.js
@@ -30,7 +30,6 @@
if (typeof process !== "undefined") {
require("amd-loader");
- require("./test/mockdom");
}
define(function(require, exports, module) {
@@ -42,7 +41,6 @@ var Range = require("./range").Range;
var Editor = require("./editor").Editor;
var EditSession = require("./edit_session").EditSession;
var MockRenderer = require("./test/mockrenderer").MockRenderer;
-var UndoManager = require("./undomanager").UndoManager;
var editor;
var exec = function(name, times, args) {
@@ -84,11 +82,11 @@ function setSelection(editor, data) {
return isBackwards ? {
start: end,
end: start,
- isBackwards: isBackwards
+ isBackwards: true
} : {
start: start,
end: end,
- isBackwards: isBackwards
+ isBackwards: true
};
}));
}
@@ -225,19 +223,19 @@ module.exports = {
assert.equal(editor.getValue(),"l1\nl1\nl2\nl2\nl3\nl3\nl4\nl4");
testSelection(editor, [[1,0],[3,0],[5,0],[7,0]]);
- setSelection(editor, [[1,2],[1,1,1,0],[3,0,3,1],[5,0,5,1],[7,0,7,1]]);
+ setSelection(editor, [[1,2],[1,0,1,1],[3,0,3,1],[5,0,5,1],[7,0,7,1]]);
exec("copylinesdown");
exec("copylinesup");
assert.equal(editor.getValue(),"l1\nl1\nl1\nl1\nl2\nl2\nl2\nl2\nl3\nl3\nl3\nl3\nl4\nl4\nl4\nl4");
- testSelection(editor, [[2,2],[2,1,2,0],[6,0,6,1],[10,0,10,1],[14,0,14,1]]);
+ testSelection(editor, [[2,2],[2,0,2,1],[6,0,6,1],[10,0,10,1],[14,0,14,1]]);
exec("movelinesdown", 12);
assert.equal(editor.getValue(),"l1\nl1\nl1\nl2\nl2\nl2\nl3\nl3\nl3\nl4\nl4\nl4\nl1\nl2\nl3\nl4");
- testSelection(editor, [[12,2],[12,1,12,0],[13,0,13,1],[14,0,14,1],[15,0,15,1]]);
+ testSelection(editor, [[12,2],[12,0,12,1],[13,0,13,1],[14,0,14,1],[15,0,15,1]]);
exec("movelinesup", 12);
assert.equal(editor.getValue(),"l1\nl2\nl3\nl4\nl1\nl1\nl1\nl2\nl2\nl2\nl3\nl3\nl3\nl4\nl4\nl4");
- testSelection(editor, [[0,2],[0,1,0,0],[1,0,1,1],[2,0,2,1],[3,0,3,1]]);
+ testSelection(editor, [[0,2],[0,0,0,1],[1,0,1,1],[2,0,2,1],[3,0,3,1]]);
},
"test multiselect fromJSON/toJSON": function() {
@@ -261,20 +259,6 @@ module.exports = {
selection.fromJSON(after);
assert.ok(!selection.isEqual(before));
assert.ok(selection.isEqual(after));
- },
-
- "test multiselect align": function() {
- var doc = new EditSession(["l1", "l2", "l3"]);
- doc.setUndoManager(new UndoManager());
- editor = new Editor(new MockRenderer(), doc);
- var selection = editor.selection;
- selection.addRange(new Range(1,0,1,0))
- selection.addRange(new Range(2,2,2,2))
- editor.execCommand("alignCursors");
- assert.equal(' l1\n l2\nl3', editor.getValue());
- doc.markUndoGroup();
- editor.execCommand("undo");
- assert.equal('l1\nl2\nl3', editor.getValue());
}
};
diff --git a/lib/ace/placeholder.js b/lib/ace/placeholder.js
index 0e299594..582e2c2b 100644
--- a/lib/ace/placeholder.js
+++ b/lib/ace/placeholder.js
@@ -150,27 +150,28 @@ var PlaceHolder = function(session, length, pos, others, mainClass, othersClass)
* Emitted when the place holder updates.
*
**/
- this.onUpdate = function(delta) {
- var range = delta;
+ this.onUpdate = function(event) {
+ var delta = event.data;
+ var range = delta.range;
if(range.start.row !== range.end.row) return;
if(range.start.row !== this.pos.row) return;
if (this.$updating) return;
this.$updating = true;
- var lengthDiff = delta.action === "insert" ? range.end.column - range.start.column : range.start.column - range.end.column;
+ var lengthDiff = delta.action === "insertText" ? range.end.column - range.start.column : range.start.column - range.end.column;
if(range.start.column >= this.pos.column && range.start.column <= this.pos.column + this.length + 1) {
var distanceFromStart = range.start.column - this.pos.column;
this.length += lengthDiff;
if(!this.session.$fromUndo) {
- if(delta.action === 'insert') {
+ if(delta.action === "insertText") {
for (var i = this.others.length - 1; i >= 0; i--) {
var otherPos = this.others[i];
var newPos = {row: otherPos.row, column: otherPos.column + distanceFromStart};
if(otherPos.row === range.start.row && range.start.column < otherPos.column)
newPos.column += lengthDiff;
- this.doc.insertMergedLines(newPos, delta.lines);
+ this.doc.insert(newPos, delta.text);
}
- } else if(delta.action === 'remove') {
+ } else if(delta.action === "removeText") {
for (var i = this.others.length - 1; i >= 0; i--) {
var otherPos = this.others[i];
var newPos = {row: otherPos.row, column: otherPos.column + distanceFromStart};
@@ -180,7 +181,7 @@ var PlaceHolder = function(session, length, pos, others, mainClass, othersClass)
}
}
// Special case: insert in beginning
- if(range.start.column === this.pos.column && delta.action === 'insert') {
+ if(range.start.column === this.pos.column && delta.action === "insertText") {
setTimeout(function() {
this.pos.setPosition(this.pos.row, this.pos.column - lengthDiff);
for (var i = 0; i < this.others.length; i++) {
@@ -192,7 +193,7 @@ var PlaceHolder = function(session, length, pos, others, mainClass, othersClass)
}
}.bind(this), 0);
}
- else if(range.start.column === this.pos.column && delta.action === 'remove') {
+ else if(range.start.column === this.pos.column && delta.action === "removeText") {
setTimeout(function() {
for (var i = 0; i < this.others.length; i++) {
var other = this.others[i];
diff --git a/lib/ace/range_list.js b/lib/ace/range_list.js
index 326bc41b..0cbcc394 100644
--- a/lib/ace/range_list.js
+++ b/lib/ace/range_list.js
@@ -180,13 +180,14 @@ var RangeList = function() {
this.session = null;
};
- this.$onChange = function(delta) {
- if (delta.action == "insert"){
- var start = delta.start;
- var end = delta.end;
+ this.$onChange = function(e) {
+ var changeRange = e.data.range;
+ if (e.data.action[0] == "i"){
+ var start = changeRange.start;
+ var end = changeRange.end;
} else {
- var end = delta.start;
- var start = delta.end;
+ var end = changeRange.start;
+ var start = changeRange.end;
}
var startRow = start.row;
var endRow = end.row;
diff --git a/lib/ace/selection.js b/lib/ace/selection.js
index ed57682f..b712fc6b 100644
--- a/lib/ace/selection.js
+++ b/lib/ace/selection.js
@@ -923,7 +923,7 @@ var Selection = function(session) {
this.toSingleRange(data[0]);
for (var i = data.length; i--; ) {
var r = Range.fromPoints(data[i].start, data[i].end);
- if (data[i].isBackwards)
+ if (data.isBackwards)
r.cursor = r.start;
this.addRange(r, true);
}
diff --git a/lib/ace/snippets.js b/lib/ace/snippets.js
index 699cd6e9..10c34bf0 100644
--- a/lib/ace/snippets.js
+++ b/lib/ace/snippets.js
@@ -667,11 +667,11 @@ var TabstopManager = function(editor) {
this.editor = null;
};
- this.onChange = function(delta) {
- var changeRange = delta;
- var isRemove = delta.action[0] == "r";
- var start = delta.start;
- var end = delta.end;
+ this.onChange = function(e) {
+ var changeRange = e.data.range;
+ var isRemove = e.data.action[0] == "r";
+ var start = changeRange.start;
+ var end = changeRange.end;
var startRow = start.row;
var endRow = end.row;
var lineDif = endRow - startRow;
diff --git a/lib/ace/snippets/mask.js b/lib/ace/snippets/mask.js
deleted file mode 100644
index 7fbca678..00000000
--- a/lib/ace/snippets/mask.js
+++ /dev/null
@@ -1,7 +0,0 @@
-define(function(require, exports, module) {
-"use strict";
-
-exports.snippetText = require("../requirejs/text!./mask.snippets");
-exports.scope = "mask";
-
-});
diff --git a/lib/ace/snippets/mask.snippets b/lib/ace/snippets/mask.snippets
deleted file mode 100644
index e69de29b..00000000
diff --git a/lib/ace/snippets/nim.js b/lib/ace/snippets/nim.js
deleted file mode 100644
index 6e6d02bb..00000000
--- a/lib/ace/snippets/nim.js
+++ /dev/null
@@ -1,7 +0,0 @@
-define(function(require, exports, module) {
-"use strict";
-
-exports.snippetText = require("../requirejs/text!./nim.snippets");
-exports.scope = "nim";
-
-});
diff --git a/lib/ace/snippets/nim.snippets b/lib/ace/snippets/nim.snippets
deleted file mode 100644
index a8a20a00..00000000
--- a/lib/ace/snippets/nim.snippets
+++ /dev/null
@@ -1,130 +0,0 @@
-snippet #!
- #!/usr/bin/env nim
-snippet imp
- import ${1:module}
-snippet from
- from ${1:package} import ${2:module}
-# Module Docstring
-snippet docs
- ## File: ${1:FILENAME:file_name}
- ## Author: ${2:author}
- ## Description: ${3}
-snippet wh
- while ${1:condition}:
- ${2:# TODO: write code...}
-# dowh - does the same as do...while in other languages
-snippet dowh
- while true:
- ${1:# TODO: write code...}
- if ${2:condition}:
- break
-snippet with
- with ${1:expr} as ${2:var}:
- ${3:# TODO: write code...}
-# New Function
-snippet proc
- proc ${1:fname}(${2:`indent('.') ? 'self' : ''`}): ${3: return type} =
- ##${4:docstring for $1}
- ${5:# TODO: write code...}
-snippet deff
- def ${1:fname}(${2:`indent('.') ? 'self' : ''`}):
- ${3:# TODO: write code...}
-# New Method
-snippet defs
- def ${1:mname}(self, ${2:arg}):
- ${3:# TODO: write code...}
-# New Property
-snippet property
- def ${1:foo}():
- doc = "${2:The $1 property.}"
- def fget(self):
- ${3:return self._$1}
- def fset(self, value):
- ${4:self._$1 = value}
-# Ifs
-snippet if
- if ${1:condition}:
- ${2:# TODO: write code...}
-snippet el
- else:
- ${1:# TODO: write code...}
-snippet ei
- elif ${1:condition}:
- ${2:# TODO: write code...}
-# For
-snippet for
- for ${1:item} in ${2:items}:
- ${3:# TODO: write code...}
-# Encodes
-snippet cutf8
- # -*- coding: utf-8 -*-
-snippet clatin1
- # -*- coding: latin-1 -*-
-snippet cascii
- # -*- coding: ascii -*-
-# Lambda
-snippet ld
- ${1:var} = lambda ${2:vars} : ${3:action}
-snippet .
- self.
-snippet try Try/Except
- try:
- ${1:# TODO: write code...}
- except ${2:Exception}, ${3:e}:
- ${4:raise $3}
-snippet try Try/Except/Else
- try:
- ${1:# TODO: write code...}
- except ${2:Exception}, ${3:e}:
- ${4:raise $3}
- else:
- ${5:# TODO: write code...}
-snippet try Try/Except/Finally
- try:
- ${1:# TODO: write code...}
- except ${2:Exception}, ${3:e}:
- ${4:raise $3}
- finally:
- ${5:# TODO: write code...}
-snippet try Try/Except/Else/Finally
- try:
- ${1:# TODO: write code...}
- except ${2:Exception}, ${3:e}:
- ${4:raise $3}
- else:
- ${5:# TODO: write code...}
- finally:
- ${6:# TODO: write code...}
-# if __name__ == '__main__':
-snippet ifmain
- if isMainModule:
- ${1:main()}
-snippet "
- ## ${1:doc}
-# test function/method
-snippet test
- def test_${1:description}(${2:self}):
- ${3:# TODO: write code...}
-# test case
-snippet testcase
- class ${1:ExampleCase}(unittest.TestCase):
-
- def test_${2:description}(self):
- ${3:# TODO: write code...}
-#getopt
-snippet getopt
- try:
- # Short option syntax: "hv:"
- # Long option syntax: "help" or "verbose="
- opts, args = getopt.getopt(sys.argv[1:], "${1:short_options}", [${2:long_options}])
-
- except getopt.GetoptError, err:
- # Print debug info
- print str(err)
- ${3:error_action}
-
- for option, argument in opts:
- if option in ("-h", "--help"):
- ${4}
- elif option in ("-v", "--verbose"):
- verbose = argument
diff --git a/lib/ace/snippets/sqlserver.js b/lib/ace/snippets/sqlserver.js
deleted file mode 100644
index f84694dc..00000000
--- a/lib/ace/snippets/sqlserver.js
+++ /dev/null
@@ -1,7 +0,0 @@
-define(function(require, exports, module) {
-"use strict";
-
-exports.snippetText = require("../requirejs/text!./sqlserver.snippets");
-exports.scope = "sqlserver";
-
-});
diff --git a/lib/ace/snippets/sqlserver.snippets b/lib/ace/snippets/sqlserver.snippets
deleted file mode 100644
index 403bd6bc..00000000
--- a/lib/ace/snippets/sqlserver.snippets
+++ /dev/null
@@ -1,70 +0,0 @@
-# ISNULL
-snippet isnull
- ISNULL(${1:check_expression}, ${2:replacement_value})
-# FORMAT
-snippet format
- FORMAT(${1:value}, ${2:format})
-# CAST
-snippet cast
- CAST(${1:expression} AS ${2:data_type})
-# CONVERT
-snippet convert
- CONVERT(${1:data_type}, ${2:expression})
-# DATEPART
-snippet datepart
- DATEPART(${1:datepart}, ${2:date})
-# DATEDIFF
-snippet datediff
- DATEDIFF(${1:datepart}, ${2:startdate}, ${3:enddate})
-# DATEADD
-snippet dateadd
- DATEADD(${1:datepart}, ${2:number}, ${3:date})
-# DATEFROMPARTS
-snippet datefromparts
- DATEFROMPARTS(${1:year}, ${2:month}, ${3:day})
-# OBJECT_DEFINITION
-snippet objectdef
- SELECT OBJECT_DEFINITION(OBJECT_ID('${1:sys.server_permissions /*object name*/}'))
-# STUFF XML
-snippet stuffxml
- STUFF((SELECT ', ' + ${1:ColumnName}
- FROM ${2:TableName}
- WHERE ${3:WhereClause}
- FOR XML PATH('')), 1, 1, '') AS ${4:Alias}
- ${5:/*https://msdn.microsoft.com/en-us/library/ms188043.aspx*/}
-# Create Procedure
-snippet createproc
- -- =============================================
- -- Author: ${1:Author}
- -- Create date: ${2:Date}
- -- Description: ${3:Description}
- -- =============================================
- CREATE PROCEDURE ${4:Procedure_Name}
- ${5:/*Add the parameters for the stored procedure here*/}
- AS
- BEGIN
- -- SET NOCOUNT ON added to prevent extra result sets from interfering with SELECT statements.
- SET NOCOUNT ON;
-
- ${6:/*Add the T-SQL statements to compute the return value here*/}
-
- END
- GO
-# Create Scalar Function
-snippet createfn
- -- =============================================
- -- Author: ${1:Author}
- -- Create date: ${2:Date}
- -- Description: ${3:Description}
- -- =============================================
- CREATE FUNCTION ${4:Scalar_Function_Name}
- -- Add the parameters for the function here
- RETURNS ${5:Function_Data_Type}
- AS
- BEGIN
- DECLARE @Result ${5:Function_Data_Type}
-
- ${6:/*Add the T-SQL statements to compute the return value here*/}
-
- END
- GO
\ No newline at end of file
diff --git a/lib/ace/theme/clouds.css b/lib/ace/theme/clouds.css
index c11308d4..e3884e02 100644
--- a/lib/ace/theme/clouds.css
+++ b/lib/ace/theme/clouds.css
@@ -23,6 +23,7 @@
.ace-clouds.ace_multiselect .ace_selection.ace_start {
box-shadow: 0 0 3px 0px #FFFFFF;
+ border-radius: 2px
}
.ace-clouds .ace_marker-layer .ace_step {
diff --git a/lib/ace/theme/clouds_midnight.css b/lib/ace/theme/clouds_midnight.css
index 08ee089d..3b932996 100644
--- a/lib/ace/theme/clouds_midnight.css
+++ b/lib/ace/theme/clouds_midnight.css
@@ -23,6 +23,7 @@
.ace-clouds-midnight.ace_multiselect .ace_selection.ace_start {
box-shadow: 0 0 3px 0px #191919;
+ border-radius: 2px
}
.ace-clouds-midnight .ace_marker-layer .ace_step {
diff --git a/lib/ace/theme/cobalt.css b/lib/ace/theme/cobalt.css
index b883ba97..16568fc3 100644
--- a/lib/ace/theme/cobalt.css
+++ b/lib/ace/theme/cobalt.css
@@ -5,7 +5,7 @@
.ace-cobalt .ace_print-margin {
width: 1px;
- background: #555555
+ background: #011e3a
}
.ace-cobalt {
@@ -23,6 +23,7 @@
.ace-cobalt.ace_multiselect .ace_selection.ace_start {
box-shadow: 0 0 3px 0px #002240;
+ border-radius: 2px
}
.ace-cobalt .ace_marker-layer .ace_step {
@@ -130,4 +131,4 @@
.ace-cobalt .ace_indent-guide {
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYHCLSvkPAAP3AgSDTRd4AAAAAElFTkSuQmCC) right repeat-y
-}
+}
\ No newline at end of file
diff --git a/lib/ace/theme/dawn.css b/lib/ace/theme/dawn.css
index 3c2884e1..719f4877 100644
--- a/lib/ace/theme/dawn.css
+++ b/lib/ace/theme/dawn.css
@@ -23,6 +23,7 @@
.ace-dawn.ace_multiselect .ace_selection.ace_start {
box-shadow: 0 0 3px 0px #F9F9F9;
+ border-radius: 2px
}
.ace-dawn .ace_marker-layer .ace_step {
diff --git a/lib/ace/theme/idle_fingers.css b/lib/ace/theme/idle_fingers.css
index b5e1bff2..f507ec10 100644
--- a/lib/ace/theme/idle_fingers.css
+++ b/lib/ace/theme/idle_fingers.css
@@ -23,6 +23,7 @@
.ace-idle-fingers.ace_multiselect .ace_selection.ace_start {
box-shadow: 0 0 3px 0px #323232;
+ border-radius: 2px
}
.ace-idle-fingers .ace_marker-layer .ace_step {
diff --git a/lib/ace/theme/iplastic.css b/lib/ace/theme/iplastic.css
deleted file mode 100644
index b07dc8f9..00000000
--- a/lib/ace/theme/iplastic.css
+++ /dev/null
@@ -1,140 +0,0 @@
-.ace-iplastic .ace_gutter {
- background: #dddddd;
- color: #666666
-}
-
-.ace-iplastic .ace_print-margin {
- width: 1px;
- background: #bbbbbb
-}
-
-.ace-iplastic {
- background-color: #eeeeee;
- color: #333333
-}
-
-.ace-iplastic .ace_cursor {
- color: #333
-}
-
-.ace-iplastic .ace_marker-layer .ace_selection {
- background: #BAD6FD;
-}
-
-.ace-iplastic.ace_multiselect .ace_selection.ace_start {
- border-radius: 4px
-}
-
-.ace-iplastic .ace_marker-layer .ace_step {
- background: #444444
-}
-
-.ace-iplastic .ace_marker-layer .ace_bracket {
- margin: -1px 0 0 -1px;
- border: 1px solid #49483E;
- background: #FFF799
-}
-
-.ace-iplastic .ace_marker-layer .ace_active-line {
- background: #e5e5e5
-}
-
-.ace-iplastic .ace_gutter-active-line {
- background-color: #eeeeee
-}
-
-.ace-iplastic .ace_marker-layer .ace_selected-word {
- border: 1px solid #555555;
- border-radius:4px
-}
-
-.ace-iplastic .ace_invisible {
- color: #999999
-}
-
-.ace-iplastic .ace_entity.ace_name.ace_tag,
-.ace-iplastic .ace_keyword,
-.ace-iplastic .ace_meta.ace_tag,
-.ace-iplastic .ace_storage {
- color: #0000FF
-}
-
-.ace-iplastic .ace_punctuation,
-.ace-iplastic .ace_punctuation.ace_tag {
- color: #000
-}
-
-.ace-iplastic .ace_constant {
- color: #333333;
- font-weight: 700
-}
-
-.ace-iplastic .ace_constant.ace_character,
-.ace-iplastic .ace_constant.ace_language,
-.ace-iplastic .ace_constant.ace_numeric,
-.ace-iplastic .ace_constant.ace_other {
- color: #0066FF;
- font-weight: 700
-}
-
-.ace-iplastic .ace_constant.ace_numeric{
- font-weight: 100
-}
-
-.ace-iplastic .ace_invalid {
- color: #F8F8F0;
- background-color: #F92672
-}
-
-.ace-iplastic .ace_invalid.ace_deprecated {
- color: #F8F8F0;
- background-color: #AE81FF
-}
-
-.ace-iplastic .ace_support.ace_constant,
-.ace-iplastic .ace_support.ace_function {
- color: #333333;
- font-weight: 700
-}
-
-.ace-iplastic .ace_fold {
- background-color: #464646;
- border-color: #F8F8F2
-}
-
-.ace-iplastic .ace_storage.ace_type,
-.ace-iplastic .ace_support.ace_class,
-.ace-iplastic .ace_support.ace_type {
- color: #3333fc;
- font-weight: 700
-}
-
-.ace-iplastic .ace_entity.ace_name.ace_function,
-.ace-iplastic .ace_entity.ace_other,
-.ace-iplastic .ace_entity.ace_other.ace_attribute-name,
-.ace-iplastic .ace_variable {
- color: #3366cc;
- font-style: italic
-}
-
-.ace-iplastic .ace_variable.ace_parameter {
- font-style: italic;
- color: #2469E0
-}
-
-.ace-iplastic .ace_string {
- color: #a55f03
-}
-
-.ace-iplastic .ace_comment {
- color: #777777;
- font-style: italic
-}
-
-.ace-iplastic .ace_fold-widget {
- background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==);
-}
-
-.ace-iplastic .ace_indent-guide {
- background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAABlJREFUeNpi+P//PwMzMzPzfwAAAAD//wMAGRsECSML/RIAAAAASUVORK5CYII=) right repeat-y
-}
\ No newline at end of file
diff --git a/lib/ace/theme/iplastic.js b/lib/ace/theme/iplastic.js
deleted file mode 100644
index ff784196..00000000
--- a/lib/ace/theme/iplastic.js
+++ /dev/null
@@ -1,40 +0,0 @@
-
-/* ***** 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 ***** */
-
-define(function(require, exports, module) {
-
-exports.isDark = false;
-exports.cssClass = "ace-iplastic";
-exports.cssText = require("../requirejs/text!./iplastic.css");
-
-var dom = require("../lib/dom");
-dom.importCssString(exports.cssText, exports.cssClass);
-});
diff --git a/lib/ace/theme/katzenmilch.css b/lib/ace/theme/katzenmilch.css
index bf1569fb..0b5a7a23 100644
--- a/lib/ace/theme/katzenmilch.css
+++ b/lib/ace/theme/katzenmilch.css
@@ -31,6 +31,7 @@
.ace-katzenmilch.ace_multiselect .ace_selection.ace_start {
box-shadow: 0 0 3px 0px #f3f2f3;
+ border-radius: 2px
}
.ace-katzenmilch .ace_marker-layer .ace_step {
diff --git a/lib/ace/theme/kr_theme.css b/lib/ace/theme/kr_theme.css
index e232de47..339786ad 100644
--- a/lib/ace/theme/kr_theme.css
+++ b/lib/ace/theme/kr_theme.css
@@ -23,6 +23,7 @@
.ace-kr-theme.ace_multiselect .ace_selection.ace_start {
box-shadow: 0 0 3px 0px #0B0A09;
+ border-radius: 2px
}
.ace-kr-theme .ace_marker-layer .ace_step {
diff --git a/lib/ace/theme/merbivore.css b/lib/ace/theme/merbivore.css
index 9be25c66..a84ec3a6 100644
--- a/lib/ace/theme/merbivore.css
+++ b/lib/ace/theme/merbivore.css
@@ -23,6 +23,7 @@
.ace-merbivore.ace_multiselect .ace_selection.ace_start {
box-shadow: 0 0 3px 0px #161616;
+ border-radius: 2px
}
.ace-merbivore .ace_marker-layer .ace_step {
diff --git a/lib/ace/theme/merbivore_soft.css b/lib/ace/theme/merbivore_soft.css
index 0d615376..f0ad0bac 100644
--- a/lib/ace/theme/merbivore_soft.css
+++ b/lib/ace/theme/merbivore_soft.css
@@ -23,6 +23,7 @@
.ace-merbivore-soft.ace_multiselect .ace_selection.ace_start {
box-shadow: 0 0 3px 0px #1C1C1C;
+ border-radius: 2px
}
.ace-merbivore-soft .ace_marker-layer .ace_step {
diff --git a/lib/ace/theme/mono_industrial.css b/lib/ace/theme/mono_industrial.css
index 6630e4a2..7e40a3b9 100644
--- a/lib/ace/theme/mono_industrial.css
+++ b/lib/ace/theme/mono_industrial.css
@@ -23,6 +23,7 @@
.ace-mono-industrial.ace_multiselect .ace_selection.ace_start {
box-shadow: 0 0 3px 0px #222C28;
+ border-radius: 2px
}
.ace-mono-industrial .ace_marker-layer .ace_step {
diff --git a/lib/ace/theme/monokai.css b/lib/ace/theme/monokai.css
index bcc26ef4..a3a063df 100644
--- a/lib/ace/theme/monokai.css
+++ b/lib/ace/theme/monokai.css
@@ -23,6 +23,7 @@
.ace-monokai.ace_multiselect .ace_selection.ace_start {
box-shadow: 0 0 3px 0px #272822;
+ border-radius: 2px
}
.ace-monokai .ace_marker-layer .ace_step {
diff --git a/lib/ace/theme/pastel_on_dark.css b/lib/ace/theme/pastel_on_dark.css
index 0b637174..8cab16a1 100644
--- a/lib/ace/theme/pastel_on_dark.css
+++ b/lib/ace/theme/pastel_on_dark.css
@@ -23,6 +23,7 @@
.ace-pastel-on-dark.ace_multiselect .ace_selection.ace_start {
box-shadow: 0 0 3px 0px #2C2828;
+ border-radius: 2px
}
.ace-pastel-on-dark .ace_marker-layer .ace_step {
diff --git a/lib/ace/theme/solarized_dark.css b/lib/ace/theme/solarized_dark.css
index 09740e69..ea8ec8aa 100644
--- a/lib/ace/theme/solarized_dark.css
+++ b/lib/ace/theme/solarized_dark.css
@@ -30,6 +30,7 @@
.ace-solarized-dark.ace_multiselect .ace_selection.ace_start {
box-shadow: 0 0 3px 0px #002B36;
+ border-radius: 2px
}
.ace-solarized-dark .ace_marker-layer .ace_step {
diff --git a/lib/ace/theme/solarized_light.css b/lib/ace/theme/solarized_light.css
index 65399fda..64c4bac9 100644
--- a/lib/ace/theme/solarized_light.css
+++ b/lib/ace/theme/solarized_light.css
@@ -23,6 +23,7 @@
.ace-solarized-light.ace_multiselect .ace_selection.ace_start {
box-shadow: 0 0 3px 0px #FDF6E3;
+ border-radius: 2px
}
.ace-solarized-light .ace_marker-layer .ace_step {
diff --git a/lib/ace/theme/sqlserver.css b/lib/ace/theme/sqlserver.css
deleted file mode 100644
index ff6d1e1c..00000000
--- a/lib/ace/theme/sqlserver.css
+++ /dev/null
@@ -1,171 +0,0 @@
-.ace_line {
- font-family: Consolas;
-}
-
-.ace-sqlserver .ace_gutter {
- background: #ebebeb;
- color: #333;
- overflow: hidden;
-}
-
-.ace-sqlserver .ace_print-margin {
- width: 1px;
- background: #e8e8e8;
-}
-
-.ace-sqlserver {
- background-color: #FFFFFF;
- color: black;
-}
-
-.ace-sqlserver .ace_identifier {
- color: black;
-}
-
-.ace-sqlserver .ace_keyword {
- color: #0000FF;
-}
-
-.ace-sqlserver .ace_numeric {
- color: black;
-}
-
-.ace-sqlserver .ace_storage {
- color: #11B7BE;
-}
-
-.ace-sqlserver .ace_keyword.ace_operator,
-.ace-sqlserver .ace_lparen,
-.ace-sqlserver .ace_rparen,
-.ace-sqlserver .ace_punctuation {
- color: #808080;
-}
-
-.ace-sqlserver .ace_set.ace_statement {
- color: #0000FF;
- text-decoration: underline;
-}
-
-.ace-sqlserver .ace_cursor {
- color: black;
-}
-
-.ace-sqlserver .ace_invisible {
- color: rgb(191, 191, 191);
-}
-
-.ace-sqlserver .ace_constant.ace_buildin {
- color: rgb(88, 72, 246);
-}
-
-.ace-sqlserver .ace_constant.ace_language {
- color: #979797;
-}
-
-.ace-sqlserver .ace_constant.ace_library {
- color: rgb(6, 150, 14);
-}
-
-.ace-sqlserver .ace_invalid {
- background-color: rgb(153, 0, 0);
- color: white;
-}
-
-.ace-sqlserver .ace_support.ace_function {
- color: #FF00FF;
-}
-
-.ace-sqlserver .ace_support.ace_constant {
- color: rgb(6, 150, 14);
-}
-
-.ace-sqlserver .ace_class {
- color: #008080;
-}
-
-.ace-sqlserver .ace_support.ace_other {
- color: #6D79DE;
-}
-
-.ace-sqlserver .ace_variable.ace_parameter {
- font-style: italic;
- color: #FD971F;
-}
-
-.ace-sqlserver .ace_comment {
- color: #008000;
-}
-
-.ace-sqlserver .ace_constant.ace_numeric {
- color: black;
-}
-
-.ace-sqlserver .ace_variable {
- color: rgb(49, 132, 149);
-}
-
-.ace-sqlserver .ace_xml-pe {
- color: rgb(104, 104, 91);
-}
-
-.ace-sqlserver .ace_support.ace_storedprocedure {
- color: #800000;
-}
-
-.ace-sqlserver .ace_heading {
- color: rgb(12, 7, 255);
-}
-
-.ace-sqlserver .ace_list {
- color: rgb(185, 6, 144);
-}
-
-.ace-sqlserver .ace_marker-layer .ace_selection {
- background: rgb(181, 213, 255);
-}
-
-.ace-sqlserver .ace_marker-layer .ace_step {
- background: rgb(252, 255, 0);
-}
-
-.ace-sqlserver .ace_marker-layer .ace_stack {
- background: rgb(164, 229, 101);
-}
-
-.ace-sqlserver .ace_marker-layer .ace_bracket {
- margin: -1px 0 0 -1px;
- border: 1px solid rgb(192, 192, 192);
-}
-
-.ace-sqlserver .ace_marker-layer .ace_active-line {
- background: rgba(0, 0, 0, 0.07);
-}
-
-.ace-sqlserver .ace_gutter-active-line {
- background-color: #dcdcdc;
-}
-
-.ace-sqlserver .ace_marker-layer .ace_selected-word {
- background: rgb(250, 250, 255);
- border: 1px solid rgb(200, 200, 250);
-}
-
-.ace-sqlserver .ace_meta.ace_tag {
- color: #0000FF;
-}
-
-.ace-sqlserver .ace_string.ace_regex {
- color: #FF0000;
-}
-
-.ace-sqlserver .ace_string {
- color: #FF0000;
-}
-
-.ace-sqlserver .ace_entity.ace_other.ace_attribute-name {
- color: #994409;
-}
-
-.ace-sqlserver .ace_indent-guide {
- background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;
-}
diff --git a/lib/ace/theme/sqlserver.js b/lib/ace/theme/sqlserver.js
deleted file mode 100644
index ab657483..00000000
--- a/lib/ace/theme/sqlserver.js
+++ /dev/null
@@ -1,39 +0,0 @@
-/* ***** 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 ***** */
-
-define(function(require, exports, module) {
-
-exports.isDark = false;
-exports.cssClass = "ace-sqlserver";
-exports.cssText = require("../requirejs/text!./sqlserver.css");
-
-var dom = require("../lib/dom");
-dom.importCssString(exports.cssText, exports.cssClass);
-});
diff --git a/lib/ace/theme/terminal.css b/lib/ace/theme/terminal.css
index f23a9ad6..3636a03d 100644
--- a/lib/ace/theme/terminal.css
+++ b/lib/ace/theme/terminal.css
@@ -23,6 +23,7 @@
.ace-terminal-theme.ace_multiselect .ace_selection.ace_start {
box-shadow: 0 0 3px 0px black;
+ border-radius: 2px
}
.ace-terminal-theme .ace_marker-layer .ace_step {
diff --git a/lib/ace/theme/textmate.css b/lib/ace/theme/textmate.css
index 18e2b4ee..6cb159ba 100644
--- a/lib/ace/theme/textmate.css
+++ b/lib/ace/theme/textmate.css
@@ -122,6 +122,7 @@
}
.ace-tm.ace_multiselect .ace_selection.ace_start {
box-shadow: 0 0 3px 0px white;
+ border-radius: 2px;
}
.ace-tm .ace_marker-layer .ace_step {
background: rgb(252, 255, 0);
diff --git a/lib/ace/theme/the_night_after_tomorrow.css b/lib/ace/theme/the_night_after_tomorrow.css
deleted file mode 100644
index 48d2602c..00000000
--- a/lib/ace/theme/the_night_after_tomorrow.css
+++ /dev/null
@@ -1,139 +0,0 @@
-.ace-tomorrow-night .ace_gutter {
- background: #25282c;
- color: #C5C8C6
-}
-
-.ace-tomorrow-night .ace_print-margin {
- width: 1px;
- background: #25282c
-}
-
-.ace-tomorrow-night {
- background-color: #1D1F21;
- color: #C5C8C6
-}
-
-.ace-tomorrow-night .ace_cursor {
- color: #FFFFFF
-}
-
-.ace-tomorrow-night .ace_marker-layer .ace_selection {
- background: #373B41
-}
-
-.ace-tomorrow-night.ace_multiselect .ace_selection.ace_start {
- box-shadow: 0 0 3px 0px #1D1F21;
- border-radius: 2px
-}
-
-.ace-tomorrow-night .ace_marker-layer .ace_step {
- background: rgb(102, 82, 0)
-}
-
-.ace-tomorrow-night .ace_marker-layer .ace_bracket {
- margin: -1px 0 0 -1px;
- border: 1px solid #4B4E55
-}
-
-.ace-tomorrow-night .ace_marker-layer .ace_active-line {
- background: #282A2E
-}
-
-.ace-tomorrow-night .ace_gutter-active-line {
- background-color: #282A2E
-}
-
-.ace-tomorrow-night .ace_marker-layer .ace_selected-word {
- border: 1px solid #373B41
-}
-
-.ace-tomorrow-night .ace_invisible {
- color: #4B4E55
-}
-
-.ace-tomorrow-night .ace_keyword,
-.ace-tomorrow-night .ace_meta,
-.ace-tomorrow-night .ace_support.ace_type {
- color: #C4A400
-}
-
-.ace-tomorrow-night .ace_storage,
-.ace-tomorrow-night .ace_storage.ace_type {
- color: #327FD7
-}
-
-.ace-tomorrow-night .ace_keyword.ace_operator {
- color: #8ABEB7
-}
-
-.ace-tomorrow-night .ace_constant.ace_language{
- color: #934B9F
-}
-
-.ace-tomorrow-night .ace_constant.ace_character,
-.ace-tomorrow-night .ace_constant.ace_numeric,
-.ace-tomorrow-night .ace_keyword.ace_other.ace_unit,
-.ace-tomorrow-night .ace_support.ace_constant,
-.ace-tomorrow-night .ace_variable.ace_parameter {
- color: #37BC9B
-}
-
-.ace-tomorrow-night .ace_constant.ace_other {
- color: #CED1CF
-}
-
-.ace-tomorrow-night .ace_invalid {
- color: #CED2CF;
- background-color: #DF5F5F
-}
-
-.ace-tomorrow-night .ace_invalid.ace_deprecated {
- color: #CED2CF;
- background-color: #B798BF
-}
-
-.ace-tomorrow-night .ace_fold {
- background-color: #62A5D6;
- border-color: #C5C8C6
-}
-
-.ace-tomorrow-night .ace_entity.ace_name.ace_function,
-.ace-tomorrow-night .ace_support.ace_function,
-.ace-tomorrow-night .ace_variable {
- color: #62A5D6
-}
-
-.ace-tomorrow-night .ace_support.ace_class,
-.ace-tomorrow-night .ace_support.ace_type {
- color: #F0C674
-}
-
-.ace-tomorrow-night .ace_heading,
-.ace-tomorrow-night .ace_markup.ace_heading,
-.ace-tomorrow-night .ace_string {
- color: #CD0000
-}
-
-.ace-tomorrow-night .ace_proc_name {
- color: #04939A
-}
-
-.ace-tomorrow-night .ace_backtick {
- color: #1DAA49
-}
-
-.ace-tomorrow-night .ace_entity.ace_name.ace_tag,
-.ace-tomorrow-night .ace_entity.ace_other.ace_attribute-name,
-.ace-tomorrow-night .ace_meta.ace_tag,
-.ace-tomorrow-night .ace_string.ace_regexp,
-.ace-tomorrow-night .ace_variable {
- color: #FFFFFF
-}
-
-.ace-tomorrow-night .ace_comment {
- color: #3465A4
-}
-
-.ace-tomorrow-night .ace_indent-guide {
- background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYHB3d/8PAAOIAdULw8qMAAAAAElFTkSuQmCC) right repeat-y
-}
diff --git a/lib/ace/theme/the_night_after_tomorrow.js b/lib/ace/theme/the_night_after_tomorrow.js
deleted file mode 100644
index 3108e2a9..00000000
--- a/lib/ace/theme/the_night_after_tomorrow.js
+++ /dev/null
@@ -1,39 +0,0 @@
-/* ***** 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 ***** */
-
-define(function(require, exports, module) {
-
-exports.isDark = true;
-exports.cssClass = "ace-tomorrow-night";
-exports.cssText = require("../requirejs/text!./the_night_after_tomorrow.css");
-
-var dom = require("../lib/dom");
-dom.importCssString(exports.cssText, exports.cssClass);
-});
diff --git a/lib/ace/theme/tomorrow.css b/lib/ace/theme/tomorrow.css
index 77407e66..20975004 100644
--- a/lib/ace/theme/tomorrow.css
+++ b/lib/ace/theme/tomorrow.css
@@ -23,6 +23,7 @@
.ace-tomorrow.ace_multiselect .ace_selection.ace_start {
box-shadow: 0 0 3px 0px #FFFFFF;
+ border-radius: 2px
}
.ace-tomorrow .ace_marker-layer .ace_step {
diff --git a/lib/ace/theme/tomorrow_night.css b/lib/ace/theme/tomorrow_night.css
index e98a6580..aafceab6 100644
--- a/lib/ace/theme/tomorrow_night.css
+++ b/lib/ace/theme/tomorrow_night.css
@@ -23,6 +23,7 @@
.ace-tomorrow-night.ace_multiselect .ace_selection.ace_start {
box-shadow: 0 0 3px 0px #1D1F21;
+ border-radius: 2px
}
.ace-tomorrow-night .ace_marker-layer .ace_step {
diff --git a/lib/ace/theme/tomorrow_night_blue.css b/lib/ace/theme/tomorrow_night_blue.css
index 907eef35..e717be0a 100644
--- a/lib/ace/theme/tomorrow_night_blue.css
+++ b/lib/ace/theme/tomorrow_night_blue.css
@@ -24,6 +24,7 @@
.ace-tomorrow-night-blue.ace_multiselect .ace_selection.ace_start {
box-shadow: 0 0 3px 0px #002451;
+ border-radius: 2px
}
.ace-tomorrow-night-blue .ace_marker-layer .ace_step {
diff --git a/lib/ace/theme/tomorrow_night_bright.css b/lib/ace/theme/tomorrow_night_bright.css
index c0c33739..5c896fb9 100644
--- a/lib/ace/theme/tomorrow_night_bright.css
+++ b/lib/ace/theme/tomorrow_night_bright.css
@@ -23,6 +23,7 @@
.ace-tomorrow-night-bright.ace_multiselect .ace_selection.ace_start {
box-shadow: 0 0 3px 0px #000000;
+ border-radius: 2px
}
.ace-tomorrow-night-bright .ace_marker-layer .ace_step {
diff --git a/lib/ace/theme/tomorrow_night_eighties.css b/lib/ace/theme/tomorrow_night_eighties.css
index 69277fb1..85d7b089 100644
--- a/lib/ace/theme/tomorrow_night_eighties.css
+++ b/lib/ace/theme/tomorrow_night_eighties.css
@@ -24,6 +24,7 @@
.ace-tomorrow-night-eighties.ace_multiselect .ace_selection.ace_start {
box-shadow: 0 0 3px 0px #2D2D2D;
+ border-radius: 2px
}
.ace-tomorrow-night-eighties .ace_marker-layer .ace_step {
diff --git a/lib/ace/theme/twilight.css b/lib/ace/theme/twilight.css
index ae353dae..0ca694fb 100644
--- a/lib/ace/theme/twilight.css
+++ b/lib/ace/theme/twilight.css
@@ -23,6 +23,7 @@
.ace-twilight.ace_multiselect .ace_selection.ace_start {
box-shadow: 0 0 3px 0px #141414;
+ border-radius: 2px
}
.ace-twilight .ace_marker-layer .ace_step {
diff --git a/lib/ace/theme/vibrant_ink.css b/lib/ace/theme/vibrant_ink.css
index a3a89402..e2901156 100644
--- a/lib/ace/theme/vibrant_ink.css
+++ b/lib/ace/theme/vibrant_ink.css
@@ -23,6 +23,7 @@
.ace-vibrant-ink.ace_multiselect .ace_selection.ace_start {
box-shadow: 0 0 3px 0px #0F0F0F;
+ border-radius: 2px
}
.ace-vibrant-ink .ace_marker-layer .ace_step {
diff --git a/lib/ace/theme/xcode.css b/lib/ace/theme/xcode.css
index a22bd169..56eb9a89 100644
--- a/lib/ace/theme/xcode.css
+++ b/lib/ace/theme/xcode.css
@@ -25,6 +25,7 @@
.ace-xcode.ace_multiselect .ace_selection.ace_start {
box-shadow: 0 0 3px 0px #FFFFFF;
+ border-radius: 2px
}
.ace-xcode .ace_marker-layer .ace_step {
diff --git a/lib/ace/undomanager.js b/lib/ace/undomanager.js
index 6da50a8b..4411ae8b 100644
--- a/lib/ace/undomanager.js
+++ b/lib/ace/undomanager.js
@@ -61,19 +61,15 @@ var UndoManager = function() {
*
**/
this.execute = function(options) {
- // Normalize deltas for storage.
- // var deltaSets = this.$serializeDeltas(options.args[0]);
- var deltaSets = options.args[0];
- // Add deltas to undo stack.
+ var deltas = options.args[0];
this.$doc = options.args[1];
if (options.merge && this.hasUndo()){
this.dirtyCounter--;
- deltaSets = this.$undoStack.pop().concat(deltaSets);
+ deltas = this.$undoStack.pop().concat(deltas);
}
- this.$undoStack.push(deltaSets);
-
- // Reset redo stack.
+ this.$undoStack.push(deltas);
this.$redoStack = [];
+
if (this.dirtyCounter < 0) {
// The user has made a change after undoing past the last clean state.
// We can never get back to a clean state now until markClean() is called.
@@ -90,11 +86,12 @@ var UndoManager = function() {
* @returns {Range} The range of the undo.
**/
this.undo = function(dontSelect) {
- var deltaSets = this.$undoStack.pop();
+ var deltas = this.$undoStack.pop();
var undoSelectionRange = null;
- if (deltaSets) {
- undoSelectionRange = this.$doc.undoChanges(this.$deserializeDeltas(deltaSets), dontSelect);
- this.$redoStack.push(deltaSets);
+ if (deltas) {
+ undoSelectionRange =
+ this.$doc.undoChanges(deltas, dontSelect);
+ this.$redoStack.push(deltas);
this.dirtyCounter--;
}
@@ -108,14 +105,15 @@ var UndoManager = function() {
*
**/
this.redo = function(dontSelect) {
- var deltaSets = this.$redoStack.pop();
+ var deltas = this.$redoStack.pop();
var redoSelectionRange = null;
- if (deltaSets) {
+ if (deltas) {
redoSelectionRange =
- this.$doc.redoChanges(this.$deserializeDeltas(deltaSets), dontSelect);
- this.$undoStack.push(deltaSets);
+ this.$doc.redoChanges(deltas, dontSelect);
+ this.$undoStack.push(deltas);
this.dirtyCounter++;
}
+
return redoSelectionRange;
};
@@ -163,52 +161,7 @@ var UndoManager = function() {
this.isClean = function() {
return this.dirtyCounter === 0;
};
-
- // Serializes deltaSets to reduce memory usage.
- this.$serializeDeltas = function(deltaSets) {
- return cloneDeltaSetsObj(deltaSets, $serializeDelta);
- };
-
- // Deserializes deltaSets to allow application to the document.
- this.$deserializeDeltas = function(deltaSets) {
- return cloneDeltaSetsObj(deltaSets, $deserializeDelta);
- };
-
- function $serializeDelta(delta){
- return {
- action: delta.action,
- start: delta.start,
- end: delta.end,
- lines: delta.lines.length == 1 ? null : delta.lines,
- text: delta.lines.length == 1 ? delta.lines[0] : null,
- };
- }
-
- function $deserializeDelta(delta) {
- return {
- action: delta.action,
- start: delta.start,
- end: delta.end,
- lines: delta.lines || [delta.text]
- };
- }
-
- function cloneDeltaSetsObj(deltaSets_old, fnGetModifiedDelta) {
- var deltaSets_new = new Array(deltaSets_old.length);
- for (var i = 0; i < deltaSets_old.length; i++) {
- var deltaSet_old = deltaSets_old[i];
- var deltaSet_new = { group: deltaSet_old.group, deltas: new Array(deltaSet_old.length)};
-
- for (var j = 0; j < deltaSet_old.deltas.length; j++) {
- var delta_old = deltaSet_old.deltas[j];
- deltaSet_new.deltas[j] = fnGetModifiedDelta(delta_old);
- }
-
- deltaSets_new[i] = deltaSet_new;
- }
- return deltaSets_new;
- }
-
+
}).call(UndoManager.prototype);
exports.UndoManager = UndoManager;
diff --git a/lib/ace/virtual_renderer.js b/lib/ace/virtual_renderer.js
index 45226a1d..5696745c 100644
--- a/lib/ace/virtual_renderer.js
+++ b/lib/ace/virtual_renderer.js
@@ -615,7 +615,7 @@ var VirtualRenderer = function(container, theme) {
* @returns {DOMElement}
**/
this.getMouseEventTarget = function() {
- return this.scroller;
+ return this.content;
};
/**
@@ -919,8 +919,6 @@ var VirtualRenderer = function(container, theme) {
(this.$minLines||1) * this.lineHeight,
Math.min(maxHeight, height)
) + this.scrollMargin.v + (this.$extraHeight || 0);
- if (this.$horizScroll)
- desiredHeight += this.scrollBarH.getHeight();
var vScroll = height > maxHeight;
if (desiredHeight != this.desiredHeight ||
@@ -941,6 +939,9 @@ var VirtualRenderer = function(container, theme) {
};
this.$computeLayerConfig = function() {
+ if (this.$maxLines && this.lineHeight > 1)
+ this.$autosize();
+
var session = this.session;
var size = this.$size;
@@ -948,6 +949,9 @@ var VirtualRenderer = function(container, theme) {
var screenLines = this.session.getScreenLength();
var maxHeight = screenLines * this.lineHeight;
+ var offset = this.scrollTop % this.lineHeight;
+ var minHeight = size.scrollerHeight + this.lineHeight;
+
var longestLine = this.$getLongestLine();
var horizScroll = !hideScrollbars && (this.$hScrollBarAlwaysVisible ||
@@ -958,27 +962,20 @@ var VirtualRenderer = function(container, theme) {
this.$horizScroll = horizScroll;
this.scrollBarH.setVisible(horizScroll);
}
- // autoresize only after updating hscroll to include scrollbar height in desired height
- if (this.$maxLines && this.lineHeight > 1)
- this.$autosize();
-
- var offset = this.scrollTop % this.lineHeight;
- var minHeight = size.scrollerHeight + this.lineHeight;
var scrollPastEnd = !this.$maxLines && this.$scrollPastEnd
? (size.scrollerHeight - this.lineHeight) * this.$scrollPastEnd
: 0;
maxHeight += scrollPastEnd;
- var sm = this.scrollMargin;
- this.session.setScrollTop(Math.max(-sm.top,
- Math.min(this.scrollTop, maxHeight - size.scrollerHeight + sm.bottom)));
+ this.session.setScrollTop(Math.max(-this.scrollMargin.top,
+ Math.min(this.scrollTop, maxHeight - size.scrollerHeight + this.scrollMargin.bottom)));
- this.session.setScrollLeft(Math.max(-sm.left, Math.min(this.scrollLeft,
- longestLine + 2 * this.$padding - size.scrollerWidth + sm.right)));
+ this.session.setScrollLeft(Math.max(-this.scrollMargin.left, Math.min(this.scrollLeft,
+ longestLine + 2 * this.$padding - size.scrollerWidth + this.scrollMargin.right)));
var vScroll = !hideScrollbars && (this.$vScrollBarAlwaysVisible ||
- size.scrollerHeight - maxHeight + scrollPastEnd < 0 || this.scrollTop > sm.top);
+ size.scrollerHeight - maxHeight + scrollPastEnd < 0 || this.scrollTop);
var vScrollChanged = this.$vScroll !== vScroll;
if (vScrollChanged) {
this.$vScroll = vScroll;
diff --git a/lib/ace/virtual_renderer_test.js b/lib/ace/virtual_renderer_test.js
index 9b1ed866..e8a8fcbd 100644
--- a/lib/ace/virtual_renderer_test.js
+++ b/lib/ace/virtual_renderer_test.js
@@ -36,40 +36,26 @@ if (typeof process !== "undefined") {
define(function(require, exports, module) {
"use strict";
-var Editor = require("./edit_session").Editor;
var EditSession = require("./edit_session").EditSession;
var VirtualRenderer = require("./virtual_renderer").VirtualRenderer;
var assert = require("./test/assertions");
-var editor = null;
module.exports = {
- setUp: function() {
- if (editor)
- editor.destroy()
+ "test: screen2text the column should be rounded to the next character edge" : function() {
var el = document.createElement("div");
+
if (!el.getBoundingClientRect) {
console.log("Skipping test: This test only runs in the browser");
return;
}
+
el.style.left = "20px";
el.style.top = "30px";
el.style.width = "300px";
el.style.height = "100px";
document.body.appendChild(el);
- var renderer = new VirtualRenderer(el);
- var editor = new Editor(renderer);
- editor.on("destroy", function() {
- document.body.removeChild(el);
- });
- },
- tearDown: function() {
- editor && editor.destroy();
- editor = null;
- },
- "test: screen2text the column should be rounded to the next character edge" : function(done) {
- if (!editor) return done();
- var renderer = editor.renderer;
+ var renderer = new VirtualRenderer(el);
renderer.setPadding(0);
renderer.setSession(new EditSession("1234"));
@@ -87,23 +73,7 @@ module.exports = {
testPixelToText(10, 0, 0, 1);
testPixelToText(14, 0, 0, 1);
testPixelToText(15, 0, 0, 2);
- done();
- },
-
- "test scrollmargin + autosize": function(done) {
- if (!editor) return done();
- editor.setOptions({
- maxLines: 100,
- useWrapMode: true
- });
- editor.renderer.setScrollMargin(10, 10);
- editor.setValue("\n\n");
- editor.setValue("\n\n\n\n");
- editor.renderer.once("afterRender", function() {
- setTimeout(function() {
- done();
- }, 0);
- });
+ document.body.removeChild(el);
}
// change tab size after setDocument (for text layer)
diff --git a/lib/ace/worker/mirror.js b/lib/ace/worker/mirror.js
index ef6e2aa3..7a3318fb 100644
--- a/lib/ace/worker/mirror.js
+++ b/lib/ace/worker/mirror.js
@@ -1,7 +1,6 @@
define(function(require, exports, module) {
"use strict";
-var Range = require("../range").Range;
var Document = require("../document").Document;
var lang = require("../lib/lang");
@@ -13,19 +12,7 @@ var Mirror = exports.Mirror = function(sender) {
var _self = this;
sender.on("change", function(e) {
- var data = e.data;
- if (data[0].start) {
- doc.applyDeltas(data);
- } else {
- for (var i = 0; i < data.length; i += 2) {
- if (Array.isArray(data[i+1])) {
- var d = {action: "insert", start: data[i], lines: data[i+1]};
- } else {
- var d = {action: "remove", start: data[i], end: data[i+1]};
- }
- doc.applyDelta(d, true);
- }
- }
+ doc.applyDeltas(e.data);
if (_self.$timeout)
return deferredUpdate.schedule(_self.$timeout);
_self.onUpdate();
diff --git a/lib/ace/worker/worker.js b/lib/ace/worker/worker.js
index 28fc0fe2..928000dd 100644
--- a/lib/ace/worker/worker.js
+++ b/lib/ace/worker/worker.js
@@ -1,9 +1,8 @@
"no use strict";
;(function(window) {
-if (typeof window.window != "undefined" && window.document)
- return;
-if (window.require && window.define)
+if (typeof window.window != "undefined" && window.document) {
return;
+}
window.console = function() {
var msgs = Array.prototype.slice.call(arguments, 0);
@@ -20,7 +19,6 @@ window.ace = window;
window.onerror = function(message, file, line, col, err) {
postMessage({type: "error", data: {
message: message,
- data: err.data,
file: file,
line: line,
col: col,
@@ -39,7 +37,7 @@ window.normalizeModule = function(parentId, moduleName) {
var base = parentId.split("/").slice(0, -1).join("/");
moduleName = (base ? base + "/" : "") + moduleName;
- while (moduleName.indexOf(".") !== -1 && previous != moduleName) {
+ while(moduleName.indexOf(".") !== -1 && previous != moduleName) {
var previous = moduleName;
moduleName = moduleName.replace(/^\.\//, "").replace(/\/\.\//, "/").replace(/[^\/]+\/\.\.\//, "");
}
@@ -48,7 +46,7 @@ window.normalizeModule = function(parentId, moduleName) {
return moduleName;
};
-window.require = function require(parentId, id) {
+window.require = function(parentId, id) {
if (!id) {
id = parentId;
parentId = null;
@@ -66,36 +64,17 @@ window.require = function require(parentId, id) {
}
return module.exports;
}
-
+
+ var chunks = id.split("/");
if (!window.require.tlns)
return console.log("unable to load " + id);
-
- var path = resolveModuleId(id, window.require.tlns);
- if (path.slice(-3) != ".js") path += ".js";
+ chunks[0] = window.require.tlns[chunks[0]] || chunks[0];
+ var path = chunks.join("/") + ".js";
window.require.id = id;
- window.require.modules[id] = {}; // prevent infinite loop on broken modules
importScripts(path);
return window.require(parentId, id);
};
-function resolveModuleId(id, paths) {
- var testPath = id, tail = "";
- while (testPath) {
- var alias = paths[testPath];
- if (typeof alias == "string") {
- return alias + tail;
- } else if (alias) {
- return alias.location.replace(/\/*$/, "/") + (tail || alias.main || alias.name);
- } else if (alias === false) {
- return "";
- }
- var i = testPath.lastIndexOf("/");
- if (i === -1) break;
- tail = testPath.substr(i) + tail;
- testPath = testPath.slice(0, i);
- }
- return id;
-}
window.require.modules = {};
window.require.tlns = {};
@@ -121,9 +100,9 @@ window.define = function(id, deps, factory) {
}
if (!deps.length)
- // If there is no dependencies, we inject "require", "exports" and
- // "module" as dependencies, to provide CommonJS compatibility.
- deps = ["require", "exports", "module"];
+ // If there is no dependencies, we inject 'require', 'exports' and
+ // 'module' as dependencies, to provide CommonJS compatibility.
+ deps = ['require', 'exports', 'module'];
var req = function(childId) {
return window.require(id, childId);
@@ -134,16 +113,16 @@ window.define = function(id, deps, factory) {
factory: function() {
var module = this;
var returnExports = factory.apply(this, deps.map(function(dep) {
- switch (dep) {
- // Because "require", "exports" and "module" aren't actual
- // dependencies, we must handle them seperately.
- case "require": return req;
- case "exports": return module.exports;
- case "module": return module;
- // But for all other dependencies, we can just go ahead and
- // require them.
- default: return req(dep);
- }
+ switch(dep) {
+ // Because 'require', 'exports' and 'module' aren't actual
+ // dependencies, we must handle them seperately.
+ case 'require': return req;
+ case 'exports': return module.exports;
+ case 'module': return module;
+ // But for all other dependencies, we can just go ahead and
+ // require them.
+ default: return req(dep);
+ }
}));
if (returnExports)
module.exports = returnExports;
@@ -152,10 +131,9 @@ window.define = function(id, deps, factory) {
};
};
window.define.amd = {};
-require.tlns = {};
+
window.initBaseUrls = function initBaseUrls(topLevelNamespaces) {
- for (var i in topLevelNamespaces)
- require.tlns[i] = topLevelNamespaces[i];
+ require.tlns = topLevelNamespaces;
};
window.initSender = function initSender() {
@@ -195,23 +173,21 @@ var sender = window.sender = null;
window.onmessage = function(e) {
var msg = e.data;
- if (msg.event && sender) {
- sender._signal(msg.event, msg.data);
- }
- else if (msg.command) {
+ if (msg.command) {
if (main[msg.command])
main[msg.command].apply(main, msg.args);
- else if (window[msg.command])
- window[msg.command].apply(window, msg.args);
else
throw new Error("Unknown command:" + msg.command);
}
- else if (msg.init) {
- window.initBaseUrls(msg.tlns);
+ else if (msg.init) {
+ initBaseUrls(msg.tlns);
require("ace/lib/es5-shim");
- sender = window.sender = window.initSender();
+ sender = window.sender = initSender();
var clazz = require(msg.module)[msg.classname];
main = window.main = new clazz(sender);
+ }
+ else if (msg.event && sender) {
+ sender._signal(msg.event, msg.data);
}
};
})(this);
\ No newline at end of file
diff --git a/lib/ace/worker/worker_client.js b/lib/ace/worker/worker_client.js
index ba4f20a0..ad445287 100644
--- a/lib/ace/worker/worker_client.js
+++ b/lib/ace/worker/worker_client.js
@@ -162,22 +162,19 @@ var WorkerClient = function(topLevelNamespaces, mod, classname, workerUrl) {
doc.on("change", this.changeListener);
};
- this.changeListener = function(delta) {
+ this.changeListener = function(e) {
if (!this.deltaQueue) {
- this.deltaQueue = [];
+ this.deltaQueue = [e.data];
setTimeout(this.$sendDeltaQueue, 0);
- }
- if (delta.action == "insert")
- this.deltaQueue.push(delta.start, delta.lines);
- else
- this.deltaQueue.push(delta.start, delta.end);
+ } else
+ this.deltaQueue.push(e.data);
};
this.$sendDeltaQueue = function() {
var q = this.deltaQueue;
if (!q) return;
this.deltaQueue = null;
- if (q.length > 50 && q.length > this.$doc.getLength() >> 1) {
+ if (q.length > 20 && q.length > this.$doc.getLength() >> 1) {
this.call("setValue", [this.$doc.getValue()]);
} else
this.emit("change", {data: q});
diff --git a/static.js b/static.js
index 3b75c2b6..a711715e 100755
--- a/static.js
+++ b/static.js
@@ -21,7 +21,7 @@ http.createServer(function(req, res) {
if (req.method == "PUT") {
if (!allowSave)
return error(res, 404, "Saving not allowed pass --allow-save to enable");
- return save(req, res, filename);
+ save(req, res, filename);
}
fs.exists(filename, function(exists) {
@@ -86,7 +86,6 @@ function save(req, res, filePath) {
}
res.statusCode = 200;
res.end("OK");
- console.log("saved ", filePath);
});
}
diff --git a/tool/lib.js b/tool/lib.js
index 3d57b6e0..e72194d7 100644
--- a/tool/lib.js
+++ b/tool/lib.js
@@ -1,7 +1,6 @@
var plist = require("plist");
var util = require("util");
var url = require("url");
-var cson = require("cson");
var https = require("https");
var http = require("http");
@@ -13,120 +12,17 @@ exports.parsePlist = function(xmlOrJSON, callback) {
json = result[0];
});
} else {
- try {
- xmlOrJSON = xmlOrJSON.replace(
- /("(?:\\.|[^"])*")|(?:,\s*)+([\]\}])|(\w+)\s*:|([\]\}]\s*[\[\{])|(\/\/.*|\/\*(?:[^\*]|\*(?=[^\/]))*?\*\/)/g,
- function(_, str, extraComma, noQuote, missingComma, comment) {
- if (comment)
- return "";
- if (missingComma)
- return missingComma[0] + "," + missingComma.slice(1);
- return str || extraComma || '"' + noQuote + '":';
- });
- json = JSON.parse(xmlOrJSON);
- } catch(e) {
- json = cson.parse(xmlOrJSON);
- }
+ xmlOrJSON = xmlOrJSON.replace(/^\s*\/\/.*/gm, "");
+ json = JSON.parse(xmlOrJSON)
}
callback && callback(json);
return json;
};
-
exports.formatJSON = function(object, initialIndent) {
- return JSON.stringify(object, null, 4).replace(/^/gm, initialIndent||"");
+ return util.inspect(object, false, 40).replace(/^/gm, initialIndent||"");
};
-exports.formatJS = function(object, initialIndent) {
- return formatJS(object, 4, initialIndent);
-};
-
-function formatJS(object, indent, initialIndent) {
- if (typeof indent == "number")
- indent = Array(indent + 1).join(" ");
-
- function $format(buffer, totalIndent, state, o) {
- if (typeof o != "object" || !o) {
- if (typeof o == "string")
- buffer.push(JSON.stringify(o));
- else
- buffer.push("" + o);
- }
- else if (Array.isArray(o)) {
- buffer.push("[")
-
- var len = totalIndent.length
- var oneLine = true;
- for (var i = 0; i < o.length; i++) {
- if (typeof o[i] == "string") {
- len += o[i].length + 2
- } else if (!o[i]) {
- len += (o[i] + "").length
- } else {
- oneLine = false;
- break;
- }
- len += 2;
- if (len > 60) {
- oneLine = false;
- break;
- }
- }
-
- for (var i = 0; i < o.length; i++) {
- if (o[i] && typeof o[i] == "object") {
- $format(buffer, totalIndent, state, o[i]);
- if (i < o.length - 1)
- buffer.push(", ");
- } else {
- if (oneLine)
- i && buffer.push(" ");
- else
- buffer.push("\n", totalIndent + indent)
- $format(buffer, totalIndent + indent, state, o[i]);
- if (i < o.length - 1)
- buffer.push(",");
- }
-
- }
- if (!oneLine && buffer[buffer.length - 1] != "}")
- buffer.push("\n" + totalIndent)
- buffer.push("]")
- }
- else {
- var keys = Object.keys(o);
- buffer.push("{", "\n");
- for (var i = 0; i < keys.length; i++) {
- buffer.push(totalIndent + indent);
- if (/^\w+$/.test(keys[i]))
- buffer.push(keys[i]);
- else
- buffer.push(JSON.stringify(keys[i]));
- buffer.push(": ")
-
- if (keys[i] == "regex" && typeof o[keys[i]] == "string") {
- try {
- var re = new RegExp(o[keys[i]]);
- buffer.push("/" + re.source.replace(/\\.|\//g, function(f) {
- return f.length == 1 ? "\\" + f : f;
- }) + "/");
- } catch(e) {
- $format(buffer, totalIndent + indent, state, o[keys[i]]);
- }
- } else {
- $format(buffer, totalIndent + indent, state, o[keys[i]]);
- }
-
- if (i < keys.length - 1)
- buffer.push(",", "\n");
- }
- buffer.push("\n", totalIndent, "}");
- }
- }
- var buffer = [];
- $format(buffer, initialIndent || "", {}, object);
- return buffer.join("");
-}
exports.fillTemplate = function(template, replacements) {
return template.replace(/%(.+?)%/g, function(str, m) {
diff --git a/tool/mode_creator.js b/tool/mode_creator.js
index 44aa67d0..7a2aea59 100644
--- a/tool/mode_creator.js
+++ b/tool/mode_creator.js
@@ -126,8 +126,8 @@ function handleSaveResult(err, editor) {
return log(
"Write access to this file is disabled.\n"+
"To enable saving your changes to disk, clone the Ace repository\n"+
- "and run the included web server with the --allow-save option\n"+
- "`node static.js --allow-save` or `static.py --puttable=*`"
+ "and run the included web server with the --allow-write option\n"+
+ "`node static.js --allow-write` or `static.py --puttable=*`"
);
}
editor.session.getUndoManager().markClean();
diff --git a/tool/package.json b/tool/package.json
index 974673c6..2d33713a 100644
--- a/tool/package.json
+++ b/tool/package.json
@@ -1,10 +1,9 @@
{
- "name": "ace-tools",
- "version": "0.1.0",
- "dependencies": {
- "cson": "^3.0.1",
- "css-parse": "1.0.3",
- "css-stringify": "1.0.3",
- "plist": ""
- }
+ "name": "ace-tools",
+ "version": "0.1.0",
+ "dependencies": {
+ "plist": "",
+ "css-parse": "1.0.3",
+ "css-stringify": "1.0.3"
+ }
}
diff --git a/tool/tmlanguage.js b/tool/tmlanguage.js
index b5d8b851..0e458330 100644
--- a/tool/tmlanguage.js
+++ b/tool/tmlanguage.js
@@ -662,10 +662,10 @@ function convertTmLanguage(name, langStr) {
var languageHighlightRules = lib.fillTemplate(modeHighlightTemplate, {
language: languageNameSanitized,
- languageTokens: lib.formatJS(patterns, " ").trim(),
+ languageTokens: lib.formatJSON(patterns, " ").trim(),
uuid: language.uuid,
name: name,
- metaData: lib.formatJS(language, "").trim()
+ metaData: lib.formatJSON(language, " ").trim()
});
if (devMode) {