From 599c540c20c084732d5bd905fa826309b69e8b86 Mon Sep 17 00:00:00 2001 From: nightwing Date: Sat, 28 Jul 2012 17:38:04 +0400 Subject: [PATCH] move gutterDecorations to session --- lib/ace/edit_session.js | 27 +++++++++++++++++++++++++++ lib/ace/layer/gutter.js | 26 +++++++++++++------------- lib/ace/virtual_renderer.js | 10 ++-------- 3 files changed, 42 insertions(+), 21 deletions(-) diff --git a/lib/ace/edit_session.js b/lib/ace/edit_session.js index 144f2aff..b9abb59d 100644 --- a/lib/ace/edit_session.js +++ b/lib/ace/edit_session.js @@ -72,6 +72,7 @@ var SearchHighlight = require("./search_highlight").SearchHighlight; var EditSession = function(text, mode) { this.$modified = true; this.$breakpoints = []; + this.$decorations = []; this.$frontMarkers = {}; this.$backMarkers = {}; this.$markerId = 1; @@ -489,7 +490,33 @@ var EditSession = function(text, mode) { this.toggleOverwrite = function() { this.setOverwrite(!this.$overwrite); }; + + /** + * EditSession.addGutterDecoration(row, className) -> Void + * - row (Number): The row number + * - className (String): The class to add + * + * Adds `className` to the `row`, to be used for CSS stylings and whatnot. + **/ + this.addGutterDecoration = function(row, className) { + if (!this.$decorations[row]) + this.$decorations[row] = ""; + this.$decorations[row] += " " + className; + this._emit("changeBreakpoint", {}); + }; + /** + * EditSession.removeGutterDecoration(row, className)-> Void + * - row (Number): The row number + * - className (String): The class to add + * + * Removes `className` from the `row`. + **/ + this.removeGutterDecoration = function(row, className) { + this.$decorations[row] = (this.$decorations[row] || "").replace(" " + className, ""); + this._emit("changeBreakpoint", {}); + }; + /** * EditSession.getBreakpoints() -> Array * diff --git a/lib/ace/layer/gutter.js b/lib/ace/layer/gutter.js index 2bf3bc53..7c70bbd3 100644 --- a/lib/ace/layer/gutter.js +++ b/lib/ace/layer/gutter.js @@ -52,9 +52,7 @@ var Gutter = function(parentEl) { this.gutterWidth = 0; - this.$breakpoints = []; this.$annotations = []; - this.$decorations = []; }; (function() { @@ -66,13 +64,15 @@ var Gutter = function(parentEl) { }; this.addGutterDecoration = function(row, className){ - if (!this.$decorations[row]) - this.$decorations[row] = ""; - this.$decorations[row] += " " + className; + if (window.console) + console.warn && console.warn("deprecated use session.addGutterDecoration"); + this.session.addGutterDecoration(row, className); }; this.removeGutterDecoration = function(row, className){ - this.$decorations[row] = (this.$decorations[row] || "").replace(" " + className, ""); + if (window.console) + console.warn && console.warn("deprecated use session.removeGutterDecoration"); + this.session.removeGutterDecoration(row, className); }; this.setAnnotations = function(annotations) { @@ -103,8 +103,6 @@ var Gutter = function(parentEl) { }; this.update = function(config) { - this.$config = config; - var emptyAnno = {className: "", text: []}; var html = []; var i = config.firstRow; @@ -113,6 +111,7 @@ var Gutter = function(parentEl) { var foldStart = fold ? fold.start.row : Infinity; var foldWidgets = this.$showFoldWidgets && this.session.foldWidgets; var breakpoints = this.session.$breakpoints; + var decorations = this.session.$decorations; while (true) { if(i > foldStart) { @@ -124,12 +123,13 @@ var Gutter = function(parentEl) { break; var annotation = this.$annotations[i] || emptyAnno; - html.push("
", (i)); + "' style='height:", this.session.getRowLength(i) * config.lineHeight, "px;'>", + i + 1 + ); if (foldWidgets) { var c = foldWidgets[i]; diff --git a/lib/ace/virtual_renderer.js b/lib/ace/virtual_renderer.js index 6a6dae4b..db5e5435 100644 --- a/lib/ace/virtual_renderer.js +++ b/lib/ace/virtual_renderer.js @@ -875,26 +875,20 @@ var VirtualRenderer = function(container, theme) { /** * VirtualRenderer.addGutterDecoration(row, className) -> Void - * - row (Number): The row number - * - className (String): The class to add * - * Adds `className` to the `row`, to be used for CSS stylings and whatnot. + * Deprecated (moved to EditSession) **/ this.addGutterDecoration = function(row, className){ this.$gutterLayer.addGutterDecoration(row, className); - this.$loop.schedule(this.CHANGE_GUTTER); }; /** * VirtualRenderer.removeGutterDecoration(row, className)-> Void - * - row (Number): The row number - * - className (String): The class to add * - * Removes `className` from the `row`. + * Deprecated (moved to EditSession) **/ this.removeGutterDecoration = function(row, className){ this.$gutterLayer.removeGutterDecoration(row, className); - this.$loop.schedule(this.CHANGE_GUTTER); }; /**