improve jumptomatching
This commit is contained in:
parent
ef489ae8e3
commit
689bed38ff
3 changed files with 55 additions and 30 deletions
|
|
@ -1350,22 +1350,22 @@ var Editor = function(renderer, session) {
|
|||
|
||||
this.duplicateSelection = function() {
|
||||
var sel = this.selection;
|
||||
var doc = this.session;
|
||||
var range = sel.getRange();
|
||||
if (range.isEmpty()) {
|
||||
var row = range.start.row;
|
||||
doc.duplicateLines(row, row);
|
||||
} else {
|
||||
var reverse = sel.isBackwards()
|
||||
var point = sel.isBackwards() ? range.start : range.end;
|
||||
var endPoint = doc.insert(point, doc.getTextRange(range), false);
|
||||
range.start = point;
|
||||
range.end = endPoint;
|
||||
|
||||
sel.setSelectionRange(range, reverse)
|
||||
}
|
||||
var doc = this.session;
|
||||
var range = sel.getRange();
|
||||
if (range.isEmpty()) {
|
||||
var row = range.start.row;
|
||||
doc.duplicateLines(row, row);
|
||||
} else {
|
||||
var reverse = sel.isBackwards()
|
||||
var point = sel.isBackwards() ? range.start : range.end;
|
||||
var endPoint = doc.insert(point, doc.getTextRange(range), false);
|
||||
range.start = point;
|
||||
range.end = endPoint;
|
||||
|
||||
sel.setSelectionRange(range, reverse)
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/** related to: EditSession.moveLinesDown
|
||||
* Editor.moveLinesDown() -> Number
|
||||
* + (Number): On success, it returns -1.
|
||||
|
|
@ -1767,21 +1767,34 @@ var Editor = function(renderer, session) {
|
|||
* Moves the cursor's row and column to the next matching bracket.
|
||||
*
|
||||
**/
|
||||
this.jumpToMatching = function() {
|
||||
this.jumpToMatching = function(select) {
|
||||
var cursor = this.getCursorPosition();
|
||||
var pos = this.session.findMatchingBracket(cursor);
|
||||
if (!pos) {
|
||||
cursor.column += 1;
|
||||
pos = this.session.findMatchingBracket(cursor);
|
||||
}
|
||||
if (!pos) {
|
||||
cursor.column -= 2;
|
||||
pos = this.session.findMatchingBracket(cursor);
|
||||
}
|
||||
|
||||
var range = this.session.getBracketRange(cursor);
|
||||
if (!range) {
|
||||
range = editor.find({
|
||||
needle: /[{}()\[\]]/g,
|
||||
preventScroll:true,
|
||||
start: {row: cursor.row, column: cursor.column - 1}
|
||||
});
|
||||
if (!range)
|
||||
return;
|
||||
var pos = range.start;
|
||||
if (pos.row == cursor.row && Math.abs(pos.column - cursor.column) < 2)
|
||||
range = this.session.getBracketRange(pos);
|
||||
}
|
||||
|
||||
pos = range && range.cursor || pos;
|
||||
if (pos) {
|
||||
this.clearSelection();
|
||||
this.moveCursorTo(pos.row, pos.column);
|
||||
if (select) {
|
||||
if (range && range.isEqual(editor.getSelectionRange()))
|
||||
this.clearSelection();
|
||||
else
|
||||
this.selection.selectTo(pos.row, pos.column);
|
||||
} else {
|
||||
this.clearSelection();
|
||||
this.moveCursorTo(pos.row, pos.column);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue