This commit is contained in:
nightwing 2012-10-21 00:45:45 +04:00
commit 27ac92f9b0

View file

@ -1276,43 +1276,35 @@ var Editor = function(renderer, session) {
this.session.outdentRows(selection.getRange()); this.session.outdentRows(selection.getRange());
}; };
/** // TODO: move out of core when we have good mechanism for managing extensions
* Editor.sortLines()
*
* Given the currently selected range, this function either comments all lines or uncomments all lines (depending on whether it's commented or not).
**/
this.sortLines = function() { this.sortLines = function() {
var state = this.session.getState(this.getCursorPosition().row);
var rows = this.$getSelectedRows(); var rows = this.$getSelectedRows();
var doc = this.session; var session = this.session;
var lines = []; var lines = [];
for(i = rows.first; i <= rows.last; i++) { for (i = rows.first; i <= rows.last; i++)
lines.push( doc.getLine(i) ); lines.push(session.getLine(i));
}
lines.sort( lines.sort(function(a, b) {
function(a, b) { if (a.toLowerCase() < b.toLowerCase()) return -1;
if (a.toLowerCase() < b.toLowerCase()) return -1; if (a.toLowerCase() > b.toLowerCase()) return 1;
if (a.toLowerCase() > b.toLowerCase()) return 1; return 0;
return 0; });
}
);
var deleteRange = new Range(0, 0, 0, 0); var deleteRange = new Range(0, 0, 0, 0);
for (var i=rows.first; i<= rows.last; i++) for (var i = rows.first; i <= rows.last; i++) {
{ var line = session.getLine(i);
var line = doc.getLine(i);
deleteRange.start.row = i; deleteRange.start.row = i;
deleteRange.end.row = i; deleteRange.end.row = i;
deleteRange.end.column = line.length; deleteRange.end.column = line.length;
doc.replace(deleteRange, lines[i-rows.first]); session.replace(deleteRange, lines[i-rows.first]);
} }
}; };
/** /**
* Editor.toggleCommentLines() * Editor.toggleCommentLines()
* *
* Given the currently selected range, this function sorts the lines alphabetically ascending. * Given the currently selected range, this function either comments all lines or uncomments all lines (depending on whether it's commented or not).
**/ **/
this.toggleCommentLines = function() { this.toggleCommentLines = function() {
var state = this.session.getState(this.getCursorPosition().row); var state = this.session.getState(this.getCursorPosition().row);
@ -1341,20 +1333,20 @@ var Editor = function(renderer, session) {
this.duplicateSelection = function() { this.duplicateSelection = function() {
var sel = this.selection; var sel = this.selection;
var doc = this.session; var doc = this.session;
var range = sel.getRange(); var range = sel.getRange();
if (range.isEmpty()) { if (range.isEmpty()) {
var row = range.start.row; var row = range.start.row;
doc.duplicateLines(row, row); doc.duplicateLines(row, row);
} else { } else {
var reverse = sel.isBackwards() var reverse = sel.isBackwards()
var point = sel.isBackwards() ? range.start : range.end; var point = sel.isBackwards() ? range.start : range.end;
var endPoint = doc.insert(point, doc.getTextRange(range), false); var endPoint = doc.insert(point, doc.getTextRange(range), false);
range.start = point; range.start = point;
range.end = endPoint; range.end = endPoint;
sel.setSelectionRange(range, reverse) sel.setSelectionRange(range, reverse)
} }
}; };
/** related to: EditSession.moveLinesDown /** related to: EditSession.moveLinesDown