From 2c9e4f747694559ee61b15536e6ef8242cf5f652 Mon Sep 17 00:00:00 2001 From: Julian Viereck Date: Thu, 28 Apr 2011 21:14:01 +0200 Subject: [PATCH] Doing some small tiedy up. Unstructured Code Folding should be done. --- demo/demo.js | 22 ++-------- lib/ace/edit_session.js | 70 +++++++++++++------------------ lib/ace/edit_session/fold_line.js | 16 ------- lib/ace/test/all_browser.js | 40 +++++++++--------- 4 files changed, 53 insertions(+), 95 deletions(-) diff --git a/demo/demo.js b/demo/demo.js index e0fca7a4..8d57481e 100644 --- a/demo/demo.js +++ b/demo/demo.js @@ -43,6 +43,7 @@ define(function(require, exports, module) { exports.launch = function(env) { var canon = require("pilot/canon"); var event = require("pilot/event"); + var Range = require("ace/range").Range; var Editor = require("ace/editor").Editor; var Renderer = require("ace/virtual_renderer").VirtualRenderer; var theme = require("ace/theme/textmate"); @@ -96,6 +97,9 @@ exports.launch = function(env) { docs.js = new EditSession(document.getElementById("jstext").innerHTML); docs.js.setMode(new JavaScriptMode()); docs.js.setUndoManager(new UndoManager()); + docs.js.addFold("args...", new Range(0, 13, 0, 18)); + docs.js.addFold("bar...", new Range(2, 20, 2, 25)); + docs.js.addFold("foo...", new Range(1, 10, 2, 10)); docs.css = new EditSession(document.getElementById("csstext").innerHTML); docs.css.setMode(new CssMode()); @@ -148,24 +152,6 @@ exports.launch = function(env) { var container = document.getElementById("editor"); env.editor = new Editor(new Renderer(container, theme)); - // BEGING TESTING - var Range = require("ace/range").Range; - docs.js.addFold("args...", new Range(0, 13, 0, 18)); - docs.js.addFold("bar...", new Range(2, 20, 2, 25)); - docs.js.addFold("foo...", new Range(1, 10, 2, 10)); - - docs.svg.addFold("fold...", new Range(1, 0, 7, 0)); - - docs.plain.addFold("fold", new Range(0, 90, 2, 30)); - window.s = docs.js; - window.e = env.editor; - setTimeout(function() { - env.editor.selection.addEventListener("changeCursor", function() { - console.log(env.editor.selection.getRange() + ""); - }) - }, 500) - // END TESTING - var modes = { text: new TextMode(), textile: new TextileMode(), diff --git a/lib/ace/edit_session.js b/lib/ace/edit_session.js index 99ea0468..6cd8361e 100644 --- a/lib/ace/edit_session.js +++ b/lib/ace/edit_session.js @@ -1324,7 +1324,15 @@ var EditSession = function(text, mode) { return this.$tabSize - screenColumn % this.$tabSize; }; - this.screen2Doc = function(screenRow, screenColumn) { + this.screenToDocumentRow = function(screenRow, screenColumn) { + return this.screenToDocumentPosition(screenRow, screenColumn).row; + }; + + this.screenToDocumentColumn = function(screenRow, screenColumn) { + return this.screenToDocumentPosition(screenRow, screenColumn).column; + }; + + this.screenToDocumentPosition = function(screenRow, screenColumn) { var line; var docRow = 0; var docColumn = 0; @@ -1373,39 +1381,34 @@ var EditSession = function(text, mode) { } if (foldLine) { - var position = foldLine.idxToPosition(docColumn); - return [position.row, position.column]; + return foldLine.idxToPosition(docColumn); } - return [docRow, docColumn, screenRow, row] - } - - this.screenToDocumentRow = function(screenRow, screenColumn) { - return this.screenToDocumentPosition(screenRow, screenColumn).row; - }; - - this.screenToDocumentColumn = function(screenRow, screenColumn) { - return this.screenToDocumentPosition(screenRow, screenColumn).column; - }; - - this.screenToDocumentPosition = function(row, column) { - var ret = this.screen2Doc(row, column); return { - row: ret[0], - column: ret[1] - }; + row: docRow, + column: docColumn + } }; - this.doc2Screen = function(docRow, docColumn) { + this.documentToScreenPosition = function(docRow, docColumn) { + // Normalize the passed in arguments. + if (docColumn == null) { + docColumn = docRow.column; + docRow = docRow.row; + } + var wrapData; + // Special case in wrapMode if the doc is at the end of the document. if (this.$useWrapMode) { wrapData = this.$wrapData; if (docRow > wrapData.length - 1) { - return [ - this.getScreenLength(), - wrapData.length == 0 ? 0 : (wrapData[wrapData.length - 1].length - 1) - ]; + return { + row: this.getScreenLength(), + column: wrapData.length == 0 + ? 0 + : (wrapData[wrapData.length - 1].length - 1) + }; } } @@ -1458,24 +1461,9 @@ var EditSession = function(text, mode) { wrapRow[screenRowOffset - 1] || 0, textLine.length); } - return [screenRow, this.$getStringScreenWidth(textLine)[0], textLine]; - } - - this.documentToScreenPosition = function(pos, column) { - // Normalize the passed in arguments. - var row; - if (column != null) { - row = pos; - } else { - row = pos.row; - column = pos.column; - } - - // NEW CODE PATH: - var res = this.doc2Screen(row, column); return { - row: res[0], - column: res[1] + row: screenRow, + column: this.$getStringScreenWidth(textLine)[0] }; }; diff --git a/lib/ace/edit_session/fold_line.js b/lib/ace/edit_session/fold_line.js index 9bde99a5..51024142 100644 --- a/lib/ace/edit_session/fold_line.js +++ b/lib/ace/edit_session/fold_line.js @@ -267,22 +267,6 @@ function FoldLine(foldData, folds) { column: this.end.column + idx }; } - -// this.positionToIdx = function(pos) { -// var row = pos.row; -// var column = pos.column; -// var idx = 0; -// -// this.walk(function(placeholder, row, column, lastColumn) { -// if (placeholder -// var range = new Range(row, lastColumn, row, column); -// var cmp = range.compareEnd(row, column); -// -// if (cmp == 0) { -// idx += -// } -// }); -// } }).call(FoldLine.prototype); exports.FoldLine = FoldLine; diff --git a/lib/ace/test/all_browser.js b/lib/ace/test/all_browser.js index 698d3907..97a28a16 100644 --- a/lib/ace/test/all_browser.js +++ b/lib/ace/test/all_browser.js @@ -10,27 +10,27 @@ var failed = 0 var log = document.getElementById("log") var tests = [ - // require("ace/editor_change_document_test"), - // require("ace/editor_navigation_test"), - // require("ace/editor_highlight_selected_word_test"), - // require("ace/editor_text_edit_test"), - // require("ace/document_test"), + require("ace/editor_change_document_test"), + require("ace/editor_navigation_test"), + require("ace/editor_highlight_selected_word_test"), + require("ace/editor_text_edit_test"), + require("ace/document_test"), require("ace/edit_session_test"), -// require("ace/test/event_emitter_test"), -// require("ace/range_test"), -// require("ace/search_test"), - require("ace/selection_test"), -// require("ace/virtual_renderer_test"), -// require("ace/anchor_test"), -// require("ace/mode/css_test"), -// require("ace/mode/css_tokenizer_test"), -// require("ace/mode/html_test"), -// require("ace/mode/html_tokenizer_test"), -// require("ace/mode/javascript_test"), -// require("ace/mode/javascript_tokenizer_test"), -// require("ace/mode/text_test"), -// require("ace/mode/xml_test"), -// require("ace/mode/xml_tokenizer_test") + require("ace/test/event_emitter_test"), + require("ace/range_test"), + require("ace/search_test"), + require("ace/selection_test"), + require("ace/virtual_renderer_test"), + require("ace/anchor_test"), + require("ace/mode/css_test"), + require("ace/mode/css_tokenizer_test"), + require("ace/mode/html_test"), + require("ace/mode/html_tokenizer_test"), + require("ace/mode/javascript_test"), + require("ace/mode/javascript_tokenizer_test"), + require("ace/mode/text_test"), + require("ace/mode/xml_test"), + require("ace/mode/xml_tokenizer_test") ] async.list(tests)