From 4733421aa834bb1d9bef41259c3db59719fc784e Mon Sep 17 00:00:00 2001 From: Fabian Jakobs Date: Tue, 26 Oct 2010 17:05:03 +0200 Subject: [PATCH 1/2] remove "ace/ace" and replace it by more specific modules --- demo/editor.html | 14 +++++++------- src/ace/Editor.js | 36 ++++++++++++++++++------------------ src/ace/KeyBinding.js | 11 ++++++----- src/ace/ScrollBar.js | 14 ++++++++++---- src/ace/ace.js | 28 ---------------------------- 5 files changed, 41 insertions(+), 62 deletions(-) delete mode 100644 src/ace/ace.js diff --git a/demo/editor.html b/demo/editor.html index 8a0212bd..092815a6 100644 --- a/demo/editor.html +++ b/demo/editor.html @@ -136,6 +136,7 @@ require( {baseUrl: "../src"}, [ + "ace/lib/event", "ace/Editor", "ace/VirtualRenderer", "ace/theme/TextMate", @@ -146,9 +147,8 @@ require( "ace/mode/Xml", "ace/mode/Text", "ace/UndoManager" - ], function(Editor, Renderer, theme, Document, JavaScriptMode, CssMode, HtmlMode, XmlMode, TextMode, UndoManager) { + ], function(event, Editor, Renderer, theme, Document, JavaScriptMode, CssMode, HtmlMode, XmlMode, TextMode, UndoManager) { -var ace = require("ace/ace"); var docs = {} docs.js = new Document(document.getElementById("jstext").innerHTML); @@ -252,15 +252,15 @@ function onResize() { window.onresize = onResize; onResize(); -ace.addListener(container, "dragover", function(e) { - return ace.preventDefault(e); +event.addListener(container, "dragover", function(e) { + return event.preventDefault(e); }); -ace.addListener(container, "drop", function(e) { +event.addListener(container, "drop", function(e) { try { var file = e.dataTransfer.files[0]; } catch(e) { - return ace.stopEvent(); + return event.stopEvent(); } if (window.FileReader) { @@ -287,7 +287,7 @@ ace.addListener(container, "drop", function(e) { reader.readAsText(file); } - return ace.preventDefault(e); + return event.preventDefault(e); }); diff --git a/src/ace/Editor.js b/src/ace/Editor.js index 1bff5b71..99842242 100644 --- a/src/ace/Editor.js +++ b/src/ace/Editor.js @@ -7,7 +7,7 @@ */ require.def("ace/Editor", [ - "ace/ace", + "ace/lib/oop", "ace/lib/event", "ace/lib/lang", "ace/TextInput", @@ -17,7 +17,7 @@ require.def("ace/Editor", "ace/BackgroundTokenizer", "ace/Range", "ace/MEventEmitter" - ], function(ace, event, lang, TextInput, KeyBinding, Document, Search, BackgroundTokenizer, Range, MEventEmitter) { + ], function(oop, event, lang, TextInput, KeyBinding, Document, Search, BackgroundTokenizer, Range, MEventEmitter) { var Editor = function(renderer, doc) { var container = renderer.getContainerElement(); @@ -27,19 +27,19 @@ var Editor = function(renderer, doc) { this.textInput = new TextInput(container, this); this.keyBinding = new KeyBinding(container, this); var self = this; - ace.addListener(container, "mousedown", function(e) { + event.addListener(container, "mousedown", function(e) { setTimeout(function() {self.focus();}); - return ace.preventDefault(e); + return event.preventDefault(e); }); - ace.addListener(container, "selectstart", function(e) { - return ace.preventDefault(e); + event.addListener(container, "selectstart", function(e) { + return event.preventDefault(e); }); var mouseTarget = renderer.getMouseEventTarget(); - ace.addListener(mouseTarget, "mousedown", ace.bind(this.onMouseDown, this)); - ace.addMultiMouseDownListener(mouseTarget, 2, 500, ace.bind(this.onMouseDoubleClick, this)); - ace.addMultiMouseDownListener(mouseTarget, 3, 600, ace.bind(this.onMouseTripleClick, this)); - ace.addMouseWheelListener(mouseTarget, ace.bind(this.onMouseWheel, this)); + event.addListener(mouseTarget, "mousedown", lang.bind(this.onMouseDown, this)); + event.addMultiMouseDownListener(mouseTarget, 2, 500, lang.bind(this.onMouseDoubleClick, this)); + event.addMultiMouseDownListener(mouseTarget, 3, 600, lang.bind(this.onMouseTripleClick, this)); + event.addMouseWheelListener(mouseTarget, lang.bind(this.onMouseWheel, this)); this.$selectionMarker = null; this.$highlightLineMarker = null; @@ -55,7 +55,7 @@ var Editor = function(renderer, doc) { (function(){ - ace.implement(this, MEventEmitter); + oop.implement(this, MEventEmitter); this.$forwardEvents = { gutterclick: 1, @@ -99,26 +99,26 @@ var Editor = function(renderer, doc) { this.doc = doc; - this.$onDocumentChange = ace.bind(this.onDocumentChange, this); + this.$onDocumentChange = lang.bind(this.onDocumentChange, this); doc.addEventListener("change", this.$onDocumentChange); this.renderer.setDocument(doc); - this.$onDocumentModeChange = ace.bind(this.onDocumentModeChange, this); + this.$onDocumentModeChange = lang.bind(this.onDocumentModeChange, this); doc.addEventListener("changeMode", this.$onDocumentModeChange); - this.$onDocumentChangeTabSize = ace.bind(this.renderer.updateText, this.renderer); + this.$onDocumentChangeTabSize = lang.bind(this.renderer.updateText, this.renderer); doc.addEventListener("changeTabSize", this.$onDocumentChangeTabSize); - this.$onDocumentChangeBreakpoint = ace.bind(this.onDocumentChangeBreakpoint, this); + this.$onDocumentChangeBreakpoint = lang.bind(this.onDocumentChangeBreakpoint, this); this.doc.addEventListener("changeBreakpoint", this.$onDocumentChangeBreakpoint); this.selection = doc.getSelection(); this.$desiredColumn = 0; - this.$onCursorChange = ace.bind(this.onCursorChange, this); + this.$onCursorChange = lang.bind(this.onCursorChange, this); this.selection.addEventListener("changeCursor", this.$onCursorChange); - this.$onSelectionChange = ace.bind(this.onSelectionChange, this); + this.$onSelectionChange = lang.bind(this.onSelectionChange, this); this.selection.addEventListener("changeSelection", this.$onSelectionChange); this.onDocumentModeChange(); @@ -255,7 +255,7 @@ var Editor = function(renderer, doc) { var tokenizer = mode.getTokenizer(); if (!this.bgTokenizer) { - var onUpdate = ace.bind(this.onTokenizerUpdate, this); + var onUpdate = lang.bind(this.onTokenizerUpdate, this); this.bgTokenizer = new BackgroundTokenizer(tokenizer, this); this.bgTokenizer.addEventListener("update", onUpdate); } else { diff --git a/src/ace/KeyBinding.js b/src/ace/KeyBinding.js index 808f69cd..e46c420c 100644 --- a/src/ace/KeyBinding.js +++ b/src/ace/KeyBinding.js @@ -6,18 +6,19 @@ * @author Fabian Jakobs */ require.def("ace/KeyBinding", - ["ace/ace", + ["ace/lib/core", + "ace/lib/event", "ace/conf/keybindings/default_mac", "ace/conf/keybindings/default_win", "ace/PluginManager", "ace/commands/DefaultCommands"], - function(ace, default_mac, default_win, PluginManager) { + function(core, event, default_mac, default_win, PluginManager) { var KeyBinding = function(element, editor, config) { this.setConfig(config); var _self = this; - ace.addKeyListener(element, function(e) { + event.addKeyListener(element, function(e) { var hashId = 0 | (e.ctrlKey ? 1 : 0) | (e.altKey ? 2 : 0) | (e.shiftKey ? 4 : 0) | (e.metaKey ? 8 : 0); var key = _self.keyNames[e.keyCode]; @@ -28,7 +29,7 @@ var KeyBinding = function(element, editor, config) { if (command) { command(editor, editor.getSelection()); - return ace.stopEvent(e); + return event.stopEvent(e); } }); }; @@ -109,7 +110,7 @@ var KeyBinding = function(element, editor, config) { } this.setConfig = function(config) { - this.config = config || (ace.isMac + this.config = config || (core.isMac ? default_mac : default_win); if (typeof this.config.reverse == "undefined") diff --git a/src/ace/ScrollBar.js b/src/ace/ScrollBar.js index 4938b582..a0dece62 100644 --- a/src/ace/ScrollBar.js +++ b/src/ace/ScrollBar.js @@ -5,7 +5,13 @@ * @license LGPLv3 * @author Fabian Jakobs */ -require.def("ace/ScrollBar", ["ace/ace", "ace/MEventEmitter"], function(ace, MEventEmitter) { +require.def("ace/ScrollBar", [ + "ace/lib/oop", + "ace/lib/lang", + "ace/lib/dom", + "ace/lib/event", + "ace/MEventEmitter" +], function(oop, lang, dom, event, MEventEmitter) { var ScrollBar = function(parent) { this.element = document.createElement("div"); @@ -16,14 +22,14 @@ var ScrollBar = function(parent) { parent.appendChild(this.element); - this.width = ace.scrollbarWidth(); + this.width = dom.scrollbarWidth(); this.element.style.width = this.width; - ace.addListener(this.element, "scroll", ace.bind(this.onScroll, this)); + event.addListener(this.element, "scroll", lang.bind(this.onScroll, this)); }; (function() { - ace.implement(this, MEventEmitter); + oop.implement(this, MEventEmitter); this.onScroll = function() { this.$dispatchEvent("scroll", {data: this.element.scrollTop}); diff --git a/src/ace/ace.js b/src/ace/ace.js deleted file mode 100644 index 32726e4f..00000000 --- a/src/ace/ace.js +++ /dev/null @@ -1,28 +0,0 @@ -/** - * Ajax.org Code Editor (ACE) - * - * @copyright 2010, Ajax.org Services B.V. - * @license LGPLv3 - * @author Fabian Jakobs - */ - -if (!require.def) require.def = require("requireJS-node")(module); - -require.def("ace/ace", [ - "ace/lib/core", - "ace/lib/dom", - "ace/lib/event", - "ace/lib/lang", - "ace/lib/oop" - ], function(core, dom, evt, lang, oop) { - - var ace = {}; - - oop.mixin(ace, core); - oop.mixin(ace, dom); - oop.mixin(ace, evt); - oop.mixin(ace, lang); - oop.mixin(ace, oop); - - return ace; -}); \ No newline at end of file From 6c284eabab565ecc35ceca3e87a26fa315c0b31e Mon Sep 17 00:00:00 2001 From: Fabian Jakobs Date: Tue, 26 Oct 2010 17:05:44 +0200 Subject: [PATCH 2/2] Marker layer is not responsible for redraws remove sluggishness when moving lines up and down --- src/ace/layer/Marker.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/ace/layer/Marker.js b/src/ace/layer/Marker.js index 2c8ce732..506cec07 100644 --- a/src/ace/layer/Marker.js +++ b/src/ace/layer/Marker.js @@ -30,7 +30,6 @@ var Marker = function(parentEl) { clazz : clazz }; - this.update(); return id; }; @@ -38,7 +37,6 @@ var Marker = function(parentEl) { var marker = this.markers[markerId]; if (marker) { delete (this.markers[markerId]); - this.update(); } };