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) {
|
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(),
|
||||||
|
|
|
||||||
|
|
@ -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]
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue