From 2d12ebb1dff3abba8cdc4495a77b18cf72401a4e Mon Sep 17 00:00:00 2001 From: nightwing Date: Sun, 21 Dec 2014 12:21:05 +0400 Subject: [PATCH 1/5] improve global access warning in the demo --- demo/kitchen-sink/dev_util.js | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) 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"); } } From 7a3257ab58791b8cb6cae96400e7a57318ed6125 Mon Sep 17 00:00:00 2001 From: nightwing Date: Sun, 21 Dec 2014 12:26:35 +0400 Subject: [PATCH 2/5] fix incorrect highlighting in c and haskell modes --- lib/ace/mode/c_cpp_highlight_rules.js | 4 ++-- lib/ace/mode/haskell_highlight_rules.js | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) 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/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]+' }, From fed215d046c9c5eacec6f81bd1f0f19447243b2f Mon Sep 17 00:00:00 2001 From: nightwing Date: Sun, 21 Dec 2014 12:32:08 +0400 Subject: [PATCH 3/5] do not discard modifier info of modifier keys --- lib/ace/lib/event.js | 14 -------------- lib/ace/lib/keys.js | 2 +- 2 files changed, 1 insertion(+), 15 deletions(-) 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; })(); From b46a0fb4f93cd776150c664e6fb32d2937ed9427 Mon Sep 17 00:00:00 2001 From: nightwing Date: Sun, 21 Dec 2014 12:33:16 +0400 Subject: [PATCH 4/5] do not include xml tag attributes in the fold range --- lib/ace/mode/folding/html_test.js | 8 ++++---- lib/ace/mode/folding/xml.js | 4 ++++ 2 files changed, 8 insertions(+), 4 deletions(-) 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); } } From 8ff856186ddb2178d7c530b01537e942ce874845 Mon Sep 17 00:00:00 2001 From: nightwing Date: Mon, 22 Dec 2014 02:24:58 +0400 Subject: [PATCH 5/5] update tests for c mode --- lib/ace/mode/_test/tokens_c_cpp.json | 7 ++++++- lib/ace/mode/_test/tokens_objectivec.json | 3 ++- 2 files changed, 8 insertions(+), 2 deletions(-) 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"],