some folding fixes and cleanups
This commit is contained in:
parent
bbcb00acc4
commit
e7ca90ffe0
3 changed files with 22 additions and 21 deletions
|
|
@ -515,8 +515,7 @@ var EditSession = function(text, mode) {
|
||||||
this.tokenRe = mode.tokenRe;
|
this.tokenRe = mode.tokenRe;
|
||||||
this.nonTokenRe = mode.nonTokenRe;
|
this.nonTokenRe = mode.nonTokenRe;
|
||||||
|
|
||||||
if (mode.foldingRules)
|
this.$setFolding(mode.foldingRules);
|
||||||
this.$setFolding(mode.foldingRules);
|
|
||||||
|
|
||||||
this._dispatchEvent("changeMode");
|
this._dispatchEvent("changeMode");
|
||||||
};
|
};
|
||||||
|
|
@ -641,7 +640,7 @@ var EditSession = function(text, mode) {
|
||||||
this.$fromUndo = true;
|
this.$fromUndo = true;
|
||||||
var lastUndoRange = null;
|
var lastUndoRange = null;
|
||||||
for (var i = deltas.length - 1; i != -1; i--) {
|
for (var i = deltas.length - 1; i != -1; i--) {
|
||||||
delta = deltas[i];
|
var delta = deltas[i];
|
||||||
if (delta.group == "doc") {
|
if (delta.group == "doc") {
|
||||||
this.doc.revertDeltas(delta.deltas);
|
this.doc.revertDeltas(delta.deltas);
|
||||||
lastUndoRange =
|
lastUndoRange =
|
||||||
|
|
@ -666,7 +665,7 @@ var EditSession = function(text, mode) {
|
||||||
this.$fromUndo = true;
|
this.$fromUndo = true;
|
||||||
var lastUndoRange = null;
|
var lastUndoRange = null;
|
||||||
for (var i = 0; i < deltas.length; i++) {
|
for (var i = 0; i < deltas.length; i++) {
|
||||||
delta = deltas[i];
|
var delta = deltas[i];
|
||||||
if (delta.group == "doc") {
|
if (delta.group == "doc") {
|
||||||
this.doc.applyDeltas(delta.deltas);
|
this.doc.applyDeltas(delta.deltas);
|
||||||
lastUndoRange =
|
lastUndoRange =
|
||||||
|
|
@ -908,7 +907,7 @@ var EditSession = function(text, mode) {
|
||||||
if (useWrapMode) {
|
if (useWrapMode) {
|
||||||
var len = this.getLength();
|
var len = this.getLength();
|
||||||
this.$wrapData = [];
|
this.$wrapData = [];
|
||||||
for (i = 0; i < len; i++) {
|
for (var i = 0; i < len; i++) {
|
||||||
this.$wrapData.push([]);
|
this.$wrapData.push([]);
|
||||||
}
|
}
|
||||||
this.$updateWrapData(0, len - 1);
|
this.$updateWrapData(0, len - 1);
|
||||||
|
|
@ -1070,7 +1069,6 @@ var EditSession = function(text, mode) {
|
||||||
} else {
|
} else {
|
||||||
// Realign folds. E.g. if you add some new chars before a fold, the
|
// Realign folds. E.g. if you add some new chars before a fold, the
|
||||||
// fold should "move" to the right.
|
// fold should "move" to the right.
|
||||||
var column;
|
|
||||||
len = Math.abs(e.data.range.start.column - e.data.range.end.column);
|
len = Math.abs(e.data.range.start.column - e.data.range.end.column);
|
||||||
if (action.indexOf("remove") != -1) {
|
if (action.indexOf("remove") != -1) {
|
||||||
// Get all the folds in the change range and remove them.
|
// Get all the folds in the change range and remove them.
|
||||||
|
|
@ -1158,7 +1156,6 @@ var EditSession = function(text, mode) {
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
|
||||||
var tabSize = this.getTabSize();
|
|
||||||
var splits = [];
|
var splits = [];
|
||||||
var displayLength = tokens.length;
|
var displayLength = tokens.length;
|
||||||
var lastSplit = 0, lastDocSplit = 0;
|
var lastSplit = 0, lastDocSplit = 0;
|
||||||
|
|
@ -1414,7 +1411,6 @@ var EditSession = function(text, mode) {
|
||||||
var docRow = 0;
|
var docRow = 0;
|
||||||
var docColumn = 0;
|
var docColumn = 0;
|
||||||
var column;
|
var column;
|
||||||
var foldLineRowLength;
|
|
||||||
var row = 0;
|
var row = 0;
|
||||||
var rowLength = 0;
|
var rowLength = 0;
|
||||||
|
|
||||||
|
|
@ -1514,8 +1510,6 @@ var EditSession = function(text, mode) {
|
||||||
docRow = pos.row;
|
docRow = pos.row;
|
||||||
docColumn = pos.column;
|
docColumn = pos.column;
|
||||||
|
|
||||||
var LL = this.$rowCache.length;
|
|
||||||
|
|
||||||
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) {
|
||||||
|
|
@ -1531,7 +1525,6 @@ var EditSession = function(text, mode) {
|
||||||
}
|
}
|
||||||
|
|
||||||
var screenRow = 0;
|
var screenRow = 0;
|
||||||
var screenColumn = 0;
|
|
||||||
var foldStartRow = null;
|
var foldStartRow = null;
|
||||||
var fold = null;
|
var fold = null;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -43,7 +43,6 @@ define(function(require, exports, module) {
|
||||||
require("./lib/fixoldbrowsers");
|
require("./lib/fixoldbrowsers");
|
||||||
|
|
||||||
var oop = require("./lib/oop");
|
var oop = require("./lib/oop");
|
||||||
var event = require("./lib/event");
|
|
||||||
var lang = require("./lib/lang");
|
var lang = require("./lib/lang");
|
||||||
var useragent = require("./lib/useragent");
|
var useragent = require("./lib/useragent");
|
||||||
var TextInput = require("./keyboard/textinput").TextInput;
|
var TextInput = require("./keyboard/textinput").TextInput;
|
||||||
|
|
@ -296,9 +295,10 @@ var Editor = function(renderer, session) {
|
||||||
this.onDocumentChange = function(e) {
|
this.onDocumentChange = function(e) {
|
||||||
var delta = e.data;
|
var delta = e.data;
|
||||||
var range = delta.range;
|
var range = delta.range;
|
||||||
|
var lastRow;
|
||||||
|
|
||||||
if (range.start.row == range.end.row && delta.action != "insertLines" && delta.action != "removeLines")
|
if (range.start.row == range.end.row && delta.action != "insertLines" && delta.action != "removeLines")
|
||||||
var lastRow = range.end.row;
|
lastRow = range.end.row;
|
||||||
else
|
else
|
||||||
lastRow = Infinity;
|
lastRow = Infinity;
|
||||||
this.renderer.updateLines(range.start.row, lastRow);
|
this.renderer.updateLines(range.start.row, lastRow);
|
||||||
|
|
@ -445,7 +445,7 @@ var Editor = function(renderer, session) {
|
||||||
|
|
||||||
// remove selected text
|
// remove selected text
|
||||||
if (!this.selection.isEmpty()) {
|
if (!this.selection.isEmpty()) {
|
||||||
var cursor = this.session.remove(this.getSelectionRange());
|
cursor = this.session.remove(this.getSelectionRange());
|
||||||
this.clearSelection();
|
this.clearSelection();
|
||||||
}
|
}
|
||||||
else if (this.session.getOverwrite()) {
|
else if (this.session.getOverwrite()) {
|
||||||
|
|
@ -548,7 +548,7 @@ var Editor = function(renderer, session) {
|
||||||
};
|
};
|
||||||
|
|
||||||
this.getScrollSpeed = function() {
|
this.getScrollSpeed = function() {
|
||||||
return this.$mouseHandler.getScrollSpeed()
|
return this.$mouseHandler.getScrollSpeed();
|
||||||
};
|
};
|
||||||
|
|
||||||
this.$selectionStyle = "line";
|
this.$selectionStyle = "line";
|
||||||
|
|
@ -804,7 +804,7 @@ var Editor = function(renderer, session) {
|
||||||
this.removeLines = function() {
|
this.removeLines = function() {
|
||||||
var rows = this.$getSelectedRows();
|
var rows = this.$getSelectedRows();
|
||||||
var range;
|
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);
|
range = new Range(rows.first, 0, rows.last+1, 0);
|
||||||
else
|
else
|
||||||
range = new Range(
|
range = new Range(
|
||||||
|
|
@ -862,7 +862,8 @@ var Editor = function(renderer, session) {
|
||||||
range.start.row += linesMoved;
|
range.start.row += linesMoved;
|
||||||
range.end.row += linesMoved;
|
range.end.row += linesMoved;
|
||||||
selection.setSelectionRange(range, reverse);
|
selection.setSelectionRange(range, reverse);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
selection.setSelectionAnchor(rows.last+linesMoved+1, 0);
|
selection.setSelectionAnchor(rows.last+linesMoved+1, 0);
|
||||||
selection.$moveSelection(function() {
|
selection.$moveSelection(function() {
|
||||||
selection.moveCursorTo(rows.first+linesMoved, 0);
|
selection.moveCursorTo(rows.first+linesMoved, 0);
|
||||||
|
|
@ -1017,7 +1018,7 @@ var Editor = function(renderer, session) {
|
||||||
|
|
||||||
this.gotoLine = function(lineNumber, column) {
|
this.gotoLine = function(lineNumber, column) {
|
||||||
this.selection.clearSelection();
|
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.$blockScrolling += 1;
|
||||||
this.moveCursorTo(lineNumber-1, column || 0);
|
this.moveCursorTo(lineNumber-1, column || 0);
|
||||||
|
|
|
||||||
|
|
@ -50,10 +50,16 @@ var FoldMode = exports.FoldMode = function() {};
|
||||||
|
|
||||||
this.getFoldWidget = function(session, row) {
|
this.getFoldWidget = function(session, row) {
|
||||||
if (this.foldingStartMarker) {
|
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);
|
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);
|
return this.$testStart(session, row);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
return "";
|
return "";
|
||||||
|
|
@ -65,7 +71,8 @@ var FoldMode = exports.FoldMode = function() {};
|
||||||
|
|
||||||
this.indentationBlock = function(session, row) {
|
this.indentationBlock = function(session, row) {
|
||||||
var re = /^\s*/;
|
var re = /^\s*/;
|
||||||
var startRow = row, endRow = row;
|
var startRow = row;
|
||||||
|
var endRow = row;
|
||||||
var line = session.getLine(row);
|
var line = session.getLine(row);
|
||||||
var startColumn = line.length - 1;
|
var startColumn = line.length - 1;
|
||||||
var startLevel = line.match(re)[0].length;
|
var startLevel = line.match(re)[0].length;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue