Changed the name of the "joinSelection" function to "joinlines".

Also changed it's behavior so that when there is no selection, it will join with the next line.
This commit is contained in:
AMiniLegend 2014-05-18 20:36:06 -04:00
commit 470efff782

View file

@ -619,27 +619,46 @@ exports.commands = [{
multiSelectAction: "forEach", multiSelectAction: "forEach",
scrollIntoView: "cursor" scrollIntoView: "cursor"
}, { }, {
name: "joinSelection", name: "joinlines",
bindKey: bindKey(null, null), bindKey: bindKey(null, null),
exec: function(editor) { exec: function(editor) {
var isBackwards = editor.selection.isBackwards(); var isBackwards = editor.selection.isBackwards();
var selectionStart = isBackwards ? editor.selection.getSelectionLead() : editor.selection.getSelectionAnchor(); var selectionStart = isBackwards ? editor.selection.getSelectionLead() : editor.selection.getSelectionAnchor();
var selectionEnd = isBackwards ? editor.selection.getSelectionAnchor() : editor.selection.getSelectionLead(); var selectionEnd = isBackwards ? editor.selection.getSelectionAnchor() : editor.selection.getSelectionLead();
var selectedRange = editor.selection.getRange(); var firstLineEndCol = editor.session.doc.getLine(selectionStart.row).length
var selectedText = editor.session.doc.getTextRange(selectedRange); var selectedText = editor.session.doc.getTextRange(editor.selection.getRange());
var newLine = editor.session.doc.getLine(selectionStart.row) + " "; var insertLine = editor.session.doc.getLine(selectionStart.row);
for (var i = selectionStart.row + 1; i <= selectionEnd.row; i++) { selectedText = selectedText.replace(/\n\s*/, " ");
var curLine = editor.session.doc.getLine(i); var selectedCount = selectedText.length;
newLine += lang.stringTrimLeft(lang.stringTrimRight(curLine)) + " ";
for (var i = selectionStart.row + 1; i <= selectionEnd.row + 1; i++) {
var curLine = lang.stringTrimLeft(lang.stringTrimRight(editor.session.doc.getLine(i)));
if (curLine.length !== 0) {
curLine = " " + curLine;
}
insertLine += curLine;
}; };
newLine += editor.session.doc.getNewLineCharacter(); if (selectionEnd.row + 1 < (editor.session.doc.getLength() - 1)) {
// Don't insert a newline at the end of the document
insertLine += editor.session.doc.getNewLineCharacter();
}
editor.clearSelection(); editor.clearSelection();
editor.selection.moveCursorTo(selectionStart.row, 0); editor.session.doc.replace(new Range(selectionStart.row, 0, selectionEnd.row + 2, 0), insertLine);
editor.selection.selectTo(selectionEnd.row + 1, 0);
selectedRange = editor.selection.getRange(); if (selectedCount > 0) {
editor.session.doc.replace(selectedRange, newLine); // Select the text that was previously selected
editor.selection.moveCursorTo(selectionStart.row, selectionStart.column);
editor.selection.selectTo(selectionStart.row, selectionStart.column + selectedCount);
} else {
// If the joined line had something in it, start the cursor at that something
firstLineEndCol = editor.session.doc.getLine(selectionStart.row).length > firstLineEndCol ? (firstLineEndCol + 1) : firstLineEndCol;
editor.selection.moveCursorTo(selectionStart.row, firstLineEndCol);
}
}, },
multiSelectAction: "forEach" multiSelectAction: "forEach"
}, { }, {