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.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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue