From e6e01a3ed1396358ebea0b648580c2a1c4eaaff1 Mon Sep 17 00:00:00 2001 From: Julian Viereck Date: Fri, 28 Jan 2011 19:33:48 +0800 Subject: [PATCH] Add editor.html dropdown Soft Wrap --- demo/startup.js | 35 ++++++++++++++++++++++++++++------- editor.html | 13 ++++++++----- lib/ace/edit_session.js | 1 + lib/ace/virtual_renderer.js | 8 ++++---- 4 files changed, 41 insertions(+), 16 deletions(-) diff --git a/demo/startup.js b/demo/startup.js index 60db99a7..c56a8dc6 100644 --- a/demo/startup.js +++ b/demo/startup.js @@ -150,7 +150,11 @@ exports.launch = function(env) { modeEl.value = "text"; } - wrapModeEl.checked = doc.getUseWrapMode() ? "checked" : ""; + if (!doc.getUseWrapMode()) { + wrapModeEl.value = "off"; + } else { + wrapModeEl.value = doc.getWrapLimit(); + } env.editor.focus(); }); @@ -163,11 +167,32 @@ exports.launch = function(env) { }); bindDropdown("keybinding", function(value) { - env.editor.setKeyboardHandler(keybindings[value]); + env.editor.setKeyboardHandler(keybindings[value]); }); bindDropdown("fontsize", function(value) { - document.getElementById("editor").style["font-size"] = value; + document.getElementById("editor").style["font-size"] = value; + }); + + bindDropdown("soft_wrap", function(value) { + var session = env.editor.getSession(); + var renderer = env.editor.renderer; + switch (value) { + case "off": + session.setUseWrapMode(false); + renderer.setPrintMarginColumn(80); + break; + case "40": + session.setUseWrapMode(true); + session.setWrapLimit(40); + renderer.setPrintMarginColumn(40); + break; + case "80": + session.setUseWrapMode(true); + session.setWrapLimit(80); + renderer.setPrintMarginColumn(80); + break; + } }); bindCheckbox("select_style", function(checked) { @@ -190,10 +215,6 @@ exports.launch = function(env) { env.editor.renderer.setShowPrintMargin(checked); }); - bindCheckbox("soft_wrap", function(checked) { - env.editor.getSession().setUseWrapMode(checked); - }); - function bindCheckbox(id, callback) { var el = document.getElementById(id); var onCheck = function() { diff --git a/editor.html b/editor.html index c45c9de2..be7968b2 100644 --- a/editor.html +++ b/editor.html @@ -74,7 +74,6 @@ - + + + + @@ -92,10 +99,6 @@ - - - - diff --git a/lib/ace/edit_session.js b/lib/ace/edit_session.js index 6cc84fc2..9245b32d 100644 --- a/lib/ace/edit_session.js +++ b/lib/ace/edit_session.js @@ -656,6 +656,7 @@ var EditSession = function(text, mode) { if (wrapLimit != this.$wrapLimit) { this.$wrapLimit = wrapLimit; this.$updateWrapData(0, this.getLength() - 1); + this._dispatchEvent("changeWrapMode"); } }; diff --git a/lib/ace/virtual_renderer.js b/lib/ace/virtual_renderer.js index f1a5d669..6478b0f1 100644 --- a/lib/ace/virtual_renderer.js +++ b/lib/ace/virtual_renderer.js @@ -293,18 +293,18 @@ var VirtualRenderer = function(container, theme) { this.getMouseEventTarget = function() { return this.content; }; - + this.getTextAreaContainer = function() { return this.scroller; }; - + this.moveTextAreaToCursor = function(textarea) { var pos = this.$cursorLayer.getPixelPosition(); if (!pos) return; - + textarea.style.left = (pos.left + this.$padding) + "px"; - textarea.style.top = pos.top + "px"; + textarea.style.top = pos.top + "px"; }; this.getFirstVisibleRow = function() {