Doing some small tiedy up. Unstructured Code Folding should be done.

This commit is contained in:
Julian Viereck 2011-04-28 21:14:01 +02:00
commit 2c9e4f7476
4 changed files with 53 additions and 95 deletions

View file

@ -43,6 +43,7 @@ define(function(require, exports, module) {
exports.launch = function(env) { exports.launch = function(env) {
var canon = require("pilot/canon"); var canon = require("pilot/canon");
var event = require("pilot/event"); var event = require("pilot/event");
var Range = require("ace/range").Range;
var Editor = require("ace/editor").Editor; var Editor = require("ace/editor").Editor;
var Renderer = require("ace/virtual_renderer").VirtualRenderer; var Renderer = require("ace/virtual_renderer").VirtualRenderer;
var theme = require("ace/theme/textmate"); var theme = require("ace/theme/textmate");
@ -96,6 +97,9 @@ exports.launch = function(env) {
docs.js = new EditSession(document.getElementById("jstext").innerHTML); docs.js = new EditSession(document.getElementById("jstext").innerHTML);
docs.js.setMode(new JavaScriptMode()); docs.js.setMode(new JavaScriptMode());
docs.js.setUndoManager(new UndoManager()); 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 = new EditSession(document.getElementById("csstext").innerHTML);
docs.css.setMode(new CssMode()); docs.css.setMode(new CssMode());
@ -148,24 +152,6 @@ exports.launch = function(env) {
var container = document.getElementById("editor"); var container = document.getElementById("editor");
env.editor = new Editor(new Renderer(container, theme)); 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 = { var modes = {
text: new TextMode(), text: new TextMode(),
textile: new TextileMode(), textile: new TextileMode(),

View file

@ -1324,7 +1324,15 @@ var EditSession = function(text, mode) {
return this.$tabSize - screenColumn % this.$tabSize; 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 line;
var docRow = 0; var docRow = 0;
var docColumn = 0; var docColumn = 0;
@ -1373,39 +1381,34 @@ var EditSession = function(text, mode) {
} }
if (foldLine) { if (foldLine) {
var position = foldLine.idxToPosition(docColumn); return foldLine.idxToPosition(docColumn);
return [position.row, position.column];
} }
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 { return {
row: ret[0], row: docRow,
column: ret[1] 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; var wrapData;
// Special case in wrapMode if the doc is at the end of the document. // Special case in wrapMode if the doc is at the end of the document.
if (this.$useWrapMode) { if (this.$useWrapMode) {
wrapData = this.$wrapData; wrapData = this.$wrapData;
if (docRow > wrapData.length - 1) { if (docRow > wrapData.length - 1) {
return [ return {
this.getScreenLength(), row: this.getScreenLength(),
wrapData.length == 0 ? 0 : (wrapData[wrapData.length - 1].length - 1) 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); 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 { return {
row: res[0], row: screenRow,
column: res[1] column: this.$getStringScreenWidth(textLine)[0]
}; };
}; };

View file

@ -267,22 +267,6 @@ function FoldLine(foldData, folds) {
column: this.end.column + idx 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); }).call(FoldLine.prototype);
exports.FoldLine = FoldLine; exports.FoldLine = FoldLine;

View file

@ -10,27 +10,27 @@ var failed = 0
var log = document.getElementById("log") var log = document.getElementById("log")
var tests = [ var tests = [
// require("ace/editor_change_document_test"), require("ace/editor_change_document_test"),
// require("ace/editor_navigation_test"), require("ace/editor_navigation_test"),
// require("ace/editor_highlight_selected_word_test"), require("ace/editor_highlight_selected_word_test"),
// require("ace/editor_text_edit_test"), require("ace/editor_text_edit_test"),
// require("ace/document_test"), require("ace/document_test"),
require("ace/edit_session_test"), require("ace/edit_session_test"),
// require("ace/test/event_emitter_test"), require("ace/test/event_emitter_test"),
// require("ace/range_test"), require("ace/range_test"),
// require("ace/search_test"), require("ace/search_test"),
require("ace/selection_test"), require("ace/selection_test"),
// require("ace/virtual_renderer_test"), require("ace/virtual_renderer_test"),
// require("ace/anchor_test"), require("ace/anchor_test"),
// require("ace/mode/css_test"), require("ace/mode/css_test"),
// require("ace/mode/css_tokenizer_test"), require("ace/mode/css_tokenizer_test"),
// require("ace/mode/html_test"), require("ace/mode/html_test"),
// require("ace/mode/html_tokenizer_test"), require("ace/mode/html_tokenizer_test"),
// require("ace/mode/javascript_test"), require("ace/mode/javascript_test"),
// require("ace/mode/javascript_tokenizer_test"), require("ace/mode/javascript_tokenizer_test"),
// require("ace/mode/text_test"), require("ace/mode/text_test"),
// require("ace/mode/xml_test"), require("ace/mode/xml_test"),
// require("ace/mode/xml_tokenizer_test") require("ace/mode/xml_tokenizer_test")
] ]
async.list(tests) async.list(tests)