some folding fixes and cleanups

This commit is contained in:
Fabian Jakobs 2011-12-02 10:04:54 +01:00
commit e7ca90ffe0
3 changed files with 22 additions and 21 deletions

View file

@ -515,8 +515,7 @@ var EditSession = function(text, mode) {
this.tokenRe = mode.tokenRe;
this.nonTokenRe = mode.nonTokenRe;
if (mode.foldingRules)
this.$setFolding(mode.foldingRules);
this.$setFolding(mode.foldingRules);
this._dispatchEvent("changeMode");
};
@ -641,7 +640,7 @@ var EditSession = function(text, mode) {
this.$fromUndo = true;
var lastUndoRange = null;
for (var i = deltas.length - 1; i != -1; i--) {
delta = deltas[i];
var delta = deltas[i];
if (delta.group == "doc") {
this.doc.revertDeltas(delta.deltas);
lastUndoRange =
@ -666,7 +665,7 @@ var EditSession = function(text, mode) {
this.$fromUndo = true;
var lastUndoRange = null;
for (var i = 0; i < deltas.length; i++) {
delta = deltas[i];
var delta = deltas[i];
if (delta.group == "doc") {
this.doc.applyDeltas(delta.deltas);
lastUndoRange =
@ -908,7 +907,7 @@ var EditSession = function(text, mode) {
if (useWrapMode) {
var len = this.getLength();
this.$wrapData = [];
for (i = 0; i < len; i++) {
for (var i = 0; i < len; i++) {
this.$wrapData.push([]);
}
this.$updateWrapData(0, len - 1);
@ -1070,7 +1069,6 @@ var EditSession = function(text, mode) {
} else {
// Realign folds. E.g. if you add some new chars before a fold, the
// fold should "move" to the right.
var column;
len = Math.abs(e.data.range.start.column - e.data.range.end.column);
if (action.indexOf("remove") != -1) {
// Get all the folds in the change range and remove them.
@ -1158,7 +1156,6 @@ var EditSession = function(text, mode) {
return [];
}
var tabSize = this.getTabSize();
var splits = [];
var displayLength = tokens.length;
var lastSplit = 0, lastDocSplit = 0;
@ -1414,7 +1411,6 @@ var EditSession = function(text, mode) {
var docRow = 0;
var docColumn = 0;
var column;
var foldLineRowLength;
var row = 0;
var rowLength = 0;
@ -1514,8 +1510,6 @@ var EditSession = function(text, mode) {
docRow = pos.row;
docColumn = pos.column;
var LL = this.$rowCache.length;
var wrapData;
// Special case in wrapMode if the doc is at the end of the document.
if (this.$useWrapMode) {
@ -1531,7 +1525,6 @@ var EditSession = function(text, mode) {
}
var screenRow = 0;
var screenColumn = 0;
var foldStartRow = null;
var fold = null;

View file

@ -43,7 +43,6 @@ define(function(require, exports, module) {
require("./lib/fixoldbrowsers");
var oop = require("./lib/oop");
var event = require("./lib/event");
var lang = require("./lib/lang");
var useragent = require("./lib/useragent");
var TextInput = require("./keyboard/textinput").TextInput;
@ -296,9 +295,10 @@ var Editor = function(renderer, session) {
this.onDocumentChange = function(e) {
var delta = e.data;
var range = delta.range;
var lastRow;
if (range.start.row == range.end.row && delta.action != "insertLines" && delta.action != "removeLines")
var lastRow = range.end.row;
lastRow = range.end.row;
else
lastRow = Infinity;
this.renderer.updateLines(range.start.row, lastRow);
@ -445,7 +445,7 @@ var Editor = function(renderer, session) {
// remove selected text
if (!this.selection.isEmpty()) {
var cursor = this.session.remove(this.getSelectionRange());
cursor = this.session.remove(this.getSelectionRange());
this.clearSelection();
}
else if (this.session.getOverwrite()) {
@ -548,7 +548,7 @@ var Editor = function(renderer, session) {
};
this.getScrollSpeed = function() {
return this.$mouseHandler.getScrollSpeed()
return this.$mouseHandler.getScrollSpeed();
};
this.$selectionStyle = "line";
@ -804,7 +804,7 @@ var Editor = function(renderer, session) {
this.removeLines = function() {
var rows = this.$getSelectedRows();
var range;
if (rows.first == 0 || rows.last+1 < this.session.getLength())
if (rows.first === 0 || rows.last+1 < this.session.getLength())
range = new Range(rows.first, 0, rows.last+1, 0);
else
range = new Range(
@ -862,7 +862,8 @@ var Editor = function(renderer, session) {
range.start.row += linesMoved;
range.end.row += linesMoved;
selection.setSelectionRange(range, reverse);
} else {
}
else {
selection.setSelectionAnchor(rows.last+linesMoved+1, 0);
selection.$moveSelection(function() {
selection.moveCursorTo(rows.first+linesMoved, 0);
@ -1017,7 +1018,7 @@ var Editor = function(renderer, session) {
this.gotoLine = function(lineNumber, column) {
this.selection.clearSelection();
this.session.unfold({row: lineNumber - 1, column: column || 0})
this.session.unfold({row: lineNumber - 1, column: column || 0});
this.$blockScrolling += 1;
this.moveCursorTo(lineNumber-1, column || 0);

View file

@ -50,10 +50,16 @@ var FoldMode = exports.FoldMode = function() {};
this.getFoldWidget = function(session, row) {
if (this.foldingStartMarker) {
if (this.foldingStopMarker)
if (this.foldingStopMarker) {
// rewrite getFoldWidget so the check is only performed once
FoldMode.prototype.getFoldWidget = this.$testBoth;
return this.$testBoth(session, row);
else
}
else {
// rewrite getFoldWidget so the check is only performed once
FoldMode.prototype.getFoldWidget = this.$testStart;
return this.$testStart(session, row);
}
}
else
return "";
@ -65,7 +71,8 @@ var FoldMode = exports.FoldMode = function() {};
this.indentationBlock = function(session, row) {
var re = /^\s*/;
var startRow = row, endRow = row;
var startRow = row;
var endRow = row;
var line = session.getLine(row);
var startColumn = line.length - 1;
var startLevel = line.match(re)[0].length;