Doing some small tiedy up. Unstructured Code Folding should be done.
This commit is contained in:
parent
a385637b9e
commit
2c9e4f7476
4 changed files with 53 additions and 95 deletions
22
demo/demo.js
22
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(),
|
||||
|
|
|
|||
|
|
@ -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]
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue