* start of backspace impl
This commit is contained in:
parent
683f21cf1a
commit
7281011a7a
|
@ -251,10 +251,41 @@ function MultiLineEditTextView2(options) {
|
||||||
};
|
};
|
||||||
*/
|
*/
|
||||||
|
|
||||||
this.removeCharactersInText = function(count, index, col) {
|
this.removeCharactersFromText = function(startIndex, col, direction, count) {
|
||||||
self.textLines[index].text =
|
var text = self.getText();
|
||||||
self.textLines[index].text.slice(col, count) +
|
|
||||||
self.textLines[index].text.slice(col + count);
|
if('right' === direction) {
|
||||||
|
/*self.textLines[startIndex].text =
|
||||||
|
self.textLines[startIndex].text.slice(col, count) +
|
||||||
|
self.textLines[startIndex].text.slice(col + count);
|
||||||
|
*/
|
||||||
|
text = text.slice(col, count) + text.slice(col + count);
|
||||||
|
|
||||||
|
if(0 === text.length) {
|
||||||
|
|
||||||
|
} else {
|
||||||
|
self.redrawRows(self.cursorPos.row, self.dimens.height);
|
||||||
|
}
|
||||||
|
} else if ('left' === direction) {
|
||||||
|
self.textLines[startIndex].text =
|
||||||
|
self.textLines[startIndex].text.slice(0, col - count) +
|
||||||
|
self.textLines[startIndex].text.slice(col + 1);
|
||||||
|
|
||||||
|
self.cursorPos.col -= count;
|
||||||
|
|
||||||
|
// recalc to next eol
|
||||||
|
|
||||||
|
self.redrawRows(self.cursorPos.row, self.dimens.height);
|
||||||
|
|
||||||
|
if(0 === self.cursorPos.col) {
|
||||||
|
|
||||||
|
} else {
|
||||||
|
var absPos = self.getAbsolutePosition(self.cursorPos.row, self.cursorPos.col);
|
||||||
|
self.client.term.write(ansi.goto(absPos.row, absPos.col));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
this.insertCharactersInText = function(c, index, col) {
|
this.insertCharactersInText = function(c, index, col) {
|
||||||
|
@ -656,11 +687,19 @@ function MultiLineEditTextView2(options) {
|
||||||
};
|
};
|
||||||
|
|
||||||
this.keyPressBackspace = function() {
|
this.keyPressBackspace = function() {
|
||||||
|
self.removeCharactersFromText(
|
||||||
|
self.getTextLinesIndex(),
|
||||||
|
self.cursorPos.col,
|
||||||
|
'left',
|
||||||
|
1);
|
||||||
};
|
};
|
||||||
|
|
||||||
this.keyPressDel = function() {
|
this.keyPressDel = function() {
|
||||||
|
self.removeCharactersFromText(
|
||||||
|
self.getTextLinesIndex(),
|
||||||
|
self.cursorPos.col,
|
||||||
|
'right',
|
||||||
|
1);
|
||||||
};
|
};
|
||||||
|
|
||||||
this.adjustCursorIfPastEndOfLine = function(forceUpdate) {
|
this.adjustCursorIfPastEndOfLine = function(forceUpdate) {
|
||||||
|
@ -677,18 +716,20 @@ function MultiLineEditTextView2(options) {
|
||||||
|
|
||||||
this.adjustCursorToNextTab = function(direction) {
|
this.adjustCursorToNextTab = function(direction) {
|
||||||
if('\t' === self.getCharacter()) {
|
if('\t' === self.getCharacter()) {
|
||||||
//
|
|
||||||
// When pressing right or left, jump to the next
|
|
||||||
// tabstop in that direction.
|
|
||||||
//
|
|
||||||
var move;
|
var move;
|
||||||
switch(direction) {
|
switch(direction) {
|
||||||
|
//
|
||||||
|
// Next tabstop to the right
|
||||||
|
//
|
||||||
case 'right' :
|
case 'right' :
|
||||||
move = self.getNextTabStop(self.cursorPos.col) - self.cursorPos.col;
|
move = self.getNextTabStop(self.cursorPos.col) - self.cursorPos.col;
|
||||||
self.cursorPos.col += move;
|
self.cursorPos.col += move;
|
||||||
self.client.term.write(ansi.right(move));
|
self.client.term.write(ansi.right(move));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
//
|
||||||
|
// Next tabstop to the left
|
||||||
|
//
|
||||||
case 'left' :
|
case 'left' :
|
||||||
move = self.cursorPos.col - self.getPrevTabStop(self.cursorPos.col);
|
move = self.cursorPos.col - self.getPrevTabStop(self.cursorPos.col);
|
||||||
self.cursorPos.col -= move;
|
self.cursorPos.col -= move;
|
||||||
|
@ -698,7 +739,7 @@ function MultiLineEditTextView2(options) {
|
||||||
case 'up' :
|
case 'up' :
|
||||||
case 'down' :
|
case 'down' :
|
||||||
//
|
//
|
||||||
// To nearest tabstop
|
// Jump to the tabstop nearest the cursor
|
||||||
//
|
//
|
||||||
var newCol = self.tabStops.reduce(function r(prev, curr) {
|
var newCol = self.tabStops.reduce(function r(prev, curr) {
|
||||||
return (Math.abs(curr - self.cursorPos.col) < Math.abs(prev - self.cursorPos.col) ? curr : prev);
|
return (Math.abs(curr - self.cursorPos.col) < Math.abs(prev - self.cursorPos.col) ? curr : prev);
|
||||||
|
|
Loading…
Reference in New Issue