diff --git a/demo/kitchen-sink/dev_util.js b/demo/kitchen-sink/dev_util.js index ae9200b7..8dab857c 100644 --- a/demo/kitchen-sink/dev_util.js +++ b/demo/kitchen-sink/dev_util.js @@ -31,13 +31,15 @@ define(function(require, exports, module) { var dom = require("ace/lib/dom"); var Range = require("ace/range").Range; -// allow easy access to ace in console, but not in ace code which uses strict -function isStrict() { - try { return !arguments.callee.caller.caller.caller} - catch(e){ return true } -} function warn() { - if (isStrict()) { + var s = (new Error()).stack || ""; + s = s.split("\n"); + if (s[1] == "Error") s.shift(); // remove error description on chrome + s.shift(); // remove warn + s.shift(); // remove the getter + s = s.join("\n"); + // allow easy access to ace in console, but not in ace code + if (!/at Object.InjectedScript.|@debugger eval|snippets:\/{3}/.test(s)) { console.error("trying to access to global variable"); } } diff --git a/lib/ace/lib/event.js b/lib/ace/lib/event.js index d067edf1..b9f3ebe4 100644 --- a/lib/ace/lib/event.js +++ b/lib/ace/lib/event.js @@ -253,20 +253,6 @@ function normalizeCommandKeys(callback, e, keyCode) { } if (keyCode in keys.MODIFIER_KEYS) { - switch (keys.MODIFIER_KEYS[keyCode]) { - case "Alt": - hashId = 2; - break; - case "Shift": - hashId = 4; - break; - case "Ctrl": - hashId = 1; - break; - default: - hashId = 8; - break; - } keyCode = -1; } diff --git a/lib/ace/lib/keys.js b/lib/ace/lib/keys.js index 722c544d..9a8d7f58 100644 --- a/lib/ace/lib/keys.js +++ b/lib/ace/lib/keys.js @@ -146,7 +146,7 @@ var Keys = (function() { })(); ret.KEY_MODS[0] = ""; - ret.KEY_MODS[-1] = "input"; + ret.KEY_MODS[-1] = "input-"; return ret; })(); diff --git a/lib/ace/mode/_test/tokens_c_cpp.json b/lib/ace/mode/_test/tokens_c_cpp.json index 2818526f..a8668b0b 100644 --- a/lib/ace/mode/_test/tokens_c_cpp.json +++ b/lib/ace/mode/_test/tokens_c_cpp.json @@ -137,7 +137,12 @@ "start", ["text"," "], ["keyword","#if"], - ["constant.other"," VERBOSE >= 2"] + ["text"," "], + ["identifier","VERBOSE"], + ["text"," "], + ["keyword.operator",">="], + ["text"," "], + ["constant.numeric","2"] ],[ "start", ["text"," "], diff --git a/lib/ace/mode/_test/tokens_objectivec.json b/lib/ace/mode/_test/tokens_objectivec.json index c6582d20..cdfd1196 100644 --- a/lib/ace/mode/_test/tokens_objectivec.json +++ b/lib/ace/mode/_test/tokens_objectivec.json @@ -727,7 +727,8 @@ ],[ "start", ["keyword","#ifndef"], - ["constant.other"," Nil"] + ["text"," "], + ["constant.language.objc","Nil"] ],[ "start", ["keyword","#define"], diff --git a/lib/ace/mode/c_cpp_highlight_rules.js b/lib/ace/mode/c_cpp_highlight_rules.js index 8aad5046..b5a29799 100644 --- a/lib/ace/mode/c_cpp_highlight_rules.js +++ b/lib/ace/mode/c_cpp_highlight_rules.js @@ -84,11 +84,11 @@ var c_cppHighlightRules = function() { regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b" }, { token : "keyword", // pre-compiler directives - regex : "#\\s*(?:include|import|pragma|line|define|undef|if|ifdef|else|elif|ifndef)\\b", + regex : "#\\s*(?:include|import|pragma|line|define|undef)\\b", next : "directive" }, { token : "keyword", // special case pre-compiler directive - regex : "(?:#\\s*endif)\\b" + regex : "#\\s*(?:endif|if|ifdef|else|elif|ifndef)\\b" }, { token : "support.function.C99.c", regex : cFunctions diff --git a/lib/ace/mode/folding/html_test.js b/lib/ace/mode/folding/html_test.js index 3471ee57..8291eae1 100644 --- a/lib/ace/mode/folding/html_test.js +++ b/lib/ace/mode/folding/html_test.js @@ -59,8 +59,8 @@ module.exports = { assert.equal(session.getFoldWidget(3), "end"); assert.equal(session.getFoldWidget(4), "end"); - assert.range(session.getFoldWidgetRange(0), 0, 8, 4, 0); - assert.range(session.getFoldWidgetRange(4), 0, 8, 4, 0); + assert.range(session.getFoldWidgetRange(0), 0, 31, 4, 0); + assert.range(session.getFoldWidgetRange(4), 0, 31, 4, 0); assert.range(session.getFoldWidgetRange(1), 1, 16, 3, 0); assert.range(session.getFoldWidgetRange(3), 1, 16, 3, 0); @@ -85,8 +85,8 @@ module.exports = { assert.equal(session.getFoldWidget(3), "end"); assert.equal(session.getFoldWidget(4), "end"); - assert.range(session.getFoldWidgetRange(0), 0, 7, 4, 0); - assert.range(session.getFoldWidgetRange(4), 0, 7, 4, 0); + assert.range(session.getFoldWidgetRange(0), 0, 23, 4, 0); + assert.range(session.getFoldWidgetRange(4), 0, 23, 4, 0); assert.range(session.getFoldWidgetRange(1), 1, 17, 3, 4); assert.range(session.getFoldWidgetRange(3), 1, 17, 3, 4); diff --git a/lib/ace/mode/folding/xml.js b/lib/ace/mode/folding/xml.js index 27f57a8c..7565bf15 100644 --- a/lib/ace/mode/folding/xml.js +++ b/lib/ace/mode/folding/xml.js @@ -217,6 +217,8 @@ function is(token, type) { row: row, column: firstTag.start.column + firstTag.tagName.length + 2 }; + if (firstTag.start.row == firstTag.end.row) + start.column = firstTag.end.column; while (tag = this._readTagForward(iterator)) { if (tag.selfClosing) { if (!stack.length) { @@ -258,6 +260,8 @@ function is(token, type) { this._pop(stack, tag); if (stack.length == 0) { tag.start.column += tag.tagName.length + 2; + if (tag.start.row == tag.end.row && tag.start.column < tag.end.column) + tag.start.column = tag.end.column; return Range.fromPoints(tag.start, end); } } diff --git a/lib/ace/mode/haskell_highlight_rules.js b/lib/ace/mode/haskell_highlight_rules.js index fdfaa53e..04343ae9 100644 --- a/lib/ace/mode/haskell_highlight_rules.js +++ b/lib/ace/mode/haskell_highlight_rules.js @@ -55,9 +55,9 @@ var HaskellHighlightRules = function() { { token: 'constant.language.empty-list.haskell', regex: '\\[\\]' }, { token: 'keyword.other.haskell', - regex: 'module', + regex: '\\bmodule\\b', push: - [ { token: 'keyword.other.haskell', regex: 'where', next: 'pop' }, + [ { token: 'keyword.other.haskell', regex: '\\bwhere\\b', next: 'pop' }, { include: '#module_name' }, { include: '#module_exports' }, { token: 'invalid', regex: '[a-z]+' },