kopia lustrzana https://github.com/c9/core
fix trimTrailingSpace on save with multiple cursors
rodzic
22f777e408
commit
6862b66d21
|
@ -127,10 +127,20 @@ exports.trimTrailingSpace = function(session, options) {
|
|||
var lines = doc.getAllLines();
|
||||
|
||||
var min = options && options.trimEmpty ? -1 : 0;
|
||||
var cursors = session.selection.rangeCount
|
||||
? session.selection.ranges.map(function(x) { return x.cursor; })
|
||||
: [session.selection.getCursor()];
|
||||
var ci = options && options.keepCursorPosition ? 0 : -1;
|
||||
var cursors = [], ci = -1;
|
||||
if (options && options.keepCursorPosition) {
|
||||
if (session.selection.rangeCount) {
|
||||
session.selection.rangeList.ranges.forEach(function(x, i, ranges) {
|
||||
var next = ranges[i + 1]
|
||||
if (next && next.cursor.row == x.cursor.row)
|
||||
return;
|
||||
cursors.push(x.cursor);
|
||||
});
|
||||
} else {
|
||||
cursors.push(session.selection.getCursor());
|
||||
}
|
||||
ci = 0;
|
||||
}
|
||||
var cursorRow = cursors[ci] && cursors[ci].row;
|
||||
|
||||
for (var i = 0, l=lines.length; i < l; i++) {
|
||||
|
@ -139,7 +149,7 @@ exports.trimTrailingSpace = function(session, options) {
|
|||
|
||||
if (i == cursorRow) {
|
||||
if (index < cursors[ci].column)
|
||||
index = min;
|
||||
index = cursors[ci].column;
|
||||
ci++;
|
||||
cursorRow = cursors[ci] ? cursors[ci].row : -1;
|
||||
}
|
||||
|
|
|
@ -1,13 +1,14 @@
|
|||
if (typeof process !== "undefined") {
|
||||
require("amd-loader");
|
||||
require("../test/mockdom");
|
||||
}
|
||||
|
||||
define(function(require, exports, module) {
|
||||
"use strict";
|
||||
|
||||
require("../multi_select");
|
||||
var assert = require("assert");
|
||||
var EditSession = require("../edit_session").EditSession;
|
||||
var UndoManager = require("../undomanager").UndoManager;
|
||||
var whitespace = require("./whitespace");
|
||||
|
||||
// Execution ORDER: test.setUpSuite, setUp, testFn, tearDown, test.tearDownSuite
|
||||
|
@ -111,8 +112,79 @@ module.exports = {
|
|||
assert.equal(indent.length, 1);
|
||||
|
||||
next();
|
||||
}
|
||||
},
|
||||
|
||||
"test trimTrailingSpace": function(next) {
|
||||
var session = new EditSession([
|
||||
"a",
|
||||
"\t b \t",
|
||||
" ",
|
||||
"\t",
|
||||
"\t\tx\t\t",
|
||||
" ",
|
||||
" "
|
||||
]);
|
||||
session.setUndoManager(new UndoManager());
|
||||
|
||||
function testOne(value, options) {
|
||||
console.log(JSON.stringify(session.getValue()))
|
||||
|
||||
whitespace.trimTrailingSpace(session, options);
|
||||
assert.equal(value, session.getValue());
|
||||
session.markUndoGroup();
|
||||
session.getUndoManager().undo();
|
||||
}
|
||||
|
||||
testOne("a\n\t b\n \n\t\n\t\tx\n \n ")
|
||||
|
||||
testOne("a\n\t b\n\n\n\t\tx\n\n", {
|
||||
trimEmpty: true
|
||||
});
|
||||
|
||||
session.selection.fromJSON([{
|
||||
start: {row:2,column:3},
|
||||
end: {row:4,column:4}
|
||||
}]);
|
||||
testOne("a\n\t b\n\n\n\t\tx\t\n\n", {
|
||||
keepCursorPosition: true,
|
||||
trimEmpty: true
|
||||
});
|
||||
|
||||
session.selection.fromJSON([{
|
||||
start: {row:2,column:3},
|
||||
end: {row:4,column:4},
|
||||
isBackwards: true
|
||||
}]);
|
||||
testOne("a\n\t b\n \n\n\t\tx\n\n", {
|
||||
keepCursorPosition: true,
|
||||
trimEmpty: true
|
||||
});
|
||||
|
||||
session.selection.$initRangeList();
|
||||
session.selection.fromJSON([{
|
||||
start: {row:2, column:3},
|
||||
end: {row:2,column:3}
|
||||
}, {
|
||||
start: {row:1, column:1},
|
||||
end: {row:1, column:1}
|
||||
}, {
|
||||
start: {row:2,column:2},
|
||||
end: {row:2,column:2}
|
||||
}, {
|
||||
start: {row:0,column:5},
|
||||
end: {row:0,column:5},
|
||||
isBackwards:false
|
||||
}, {
|
||||
start: {row:6,column:1},
|
||||
end: {row:6,column:1},
|
||||
isBackwards:false
|
||||
}]);
|
||||
testOne("a\n\t b\n \n\n\t\tx\n\n ", {
|
||||
trimEmpty: true,
|
||||
keepCursorPosition: true
|
||||
});
|
||||
next();
|
||||
},
|
||||
};
|
||||
|
||||
});
|
||||
|
|
Ładowanie…
Reference in New Issue