forked from Botanical/BotanJS
Aaiu, cursor position
This commit is contained in:
parent
b17ca21420
commit
dc63a882e3
@ -27,12 +27,24 @@
|
||||
/** @type {Components.Vim.Cursor} */
|
||||
this.__cursor = Cursor;
|
||||
|
||||
this.__startX = Cursor.aPos;
|
||||
this.__startState = this.__saveCur();
|
||||
|
||||
// Initialize this stack
|
||||
this.__rec( "", true );
|
||||
};
|
||||
|
||||
INSERT.prototype.__saveCur = function()
|
||||
{
|
||||
var c = this.__cursor;
|
||||
return {
|
||||
p: c.P
|
||||
, x: c.X
|
||||
, y: c.Y
|
||||
, px: c.feeder.panX
|
||||
, py: c.feeder.panY
|
||||
};
|
||||
}
|
||||
|
||||
INSERT.prototype.dispose = function()
|
||||
{
|
||||
this.__cursor.moveX( -1 );
|
||||
@ -46,8 +58,11 @@
|
||||
var insertLength = this.__insertLength;
|
||||
var contentUndo = this.__contentUndo;
|
||||
var startPos = this.__startPosition;
|
||||
var startX = this.__startX;
|
||||
var sSt = this.__startState;
|
||||
var eSt = this.__saveCur();
|
||||
|
||||
var st = sSt;
|
||||
// Calling this repeatedly will swap between UNDO / REDO state
|
||||
return function() {
|
||||
var contentRedo = feeder.content.substr( startPos, insertLength );
|
||||
feeder.content =
|
||||
@ -57,7 +72,15 @@
|
||||
insertLength = contentUndo.length;
|
||||
contentUndo = contentRedo;
|
||||
|
||||
cur.P = st.p;
|
||||
cur.X = st.x;
|
||||
cur.Y = st.y;
|
||||
feeder.panX = st.px;
|
||||
feeder.panY = st.py;
|
||||
|
||||
feeder.pan();
|
||||
|
||||
st = ( st == sSt ) ? eSt : sSt;
|
||||
};
|
||||
};
|
||||
|
||||
@ -168,7 +191,15 @@
|
||||
|
||||
this.__rec( inputChar );
|
||||
|
||||
cur.moveX( 1 );
|
||||
if( inputChar == "\n" )
|
||||
{
|
||||
cur.moveY( 1 );
|
||||
cur.lineStart();
|
||||
}
|
||||
else
|
||||
{
|
||||
cur.moveX( 1 );
|
||||
}
|
||||
};
|
||||
|
||||
INSERT.prototype.getMessage = function()
|
||||
|
@ -55,6 +55,7 @@
|
||||
};
|
||||
|
||||
Controls.prototype.__comboT = function( e ) { return false; };
|
||||
Controls.prototype.__comboD = function( e ) { return false; };
|
||||
|
||||
// <
|
||||
Controls.prototype.__comboLeftShift = function( e ) { return false; };
|
||||
@ -65,6 +66,7 @@
|
||||
Controls.prototype.__comboKey = function( e )
|
||||
{
|
||||
return this.__comboG( e )
|
||||
|| this.__comboD( e )
|
||||
|| this.__comboT( e )
|
||||
|| this.__comboLeftShift( e )
|
||||
|| this.__comboRightShift( e );
|
||||
@ -159,11 +161,12 @@
|
||||
break;
|
||||
|
||||
// Insert
|
||||
case SHIFT + A: // Append at the line end
|
||||
ccur.lineEnd();
|
||||
case A: // Append
|
||||
cMoveX( 1, true, true );
|
||||
ccur.openAction( "INSERT" );
|
||||
break;
|
||||
case I: // Insert
|
||||
ccur.openAction( "INSERT" );
|
||||
break;
|
||||
case U: // Undo
|
||||
ccur.openRunAction( "UNDO", e );
|
||||
@ -173,8 +176,6 @@
|
||||
break;
|
||||
case X: // Del
|
||||
break;
|
||||
case SHIFT + A: // Append at the line end
|
||||
break;
|
||||
case SHIFT + X: // Delete before
|
||||
break;
|
||||
case SHIFT + U: // Undo previous changes in oneline
|
||||
|
@ -112,11 +112,14 @@
|
||||
|
||||
var buffs = this.feeder.lineBuffers;
|
||||
|
||||
if( penentrate && x < 0 && ( 0 < this.feeder.panY || 0 < this.Y ) )
|
||||
if( penentrate )
|
||||
{
|
||||
this.moveY( -1 );
|
||||
this.lineEnd( phantomSpace );
|
||||
return;
|
||||
if( x < 0 && ( 0 < this.feeder.panY || 0 < this.Y ) )
|
||||
{
|
||||
this.moveY( -1 );
|
||||
this.lineEnd( phantomSpace );
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/** @type {Components.Vim.LineBuffer} */
|
||||
|
Loading…
Reference in New Issue
Block a user