commit cbec2c747589527be78f9f509e6ad235f45cb4ef
| author | 斟酌 鵬兄 <tgckpg@gmail.com> |
| date | 2016-03-14T15:57:17Z |
| subject | wordwrap panning for k |
commit cbec2c747589527be78f9f509e6ad235f45cb4ef
Author: 斟酌 鵬兄 <tgckpg@gmail.com>
Date: 2016-03-14T15:57:17Z
wordwrap panning for k
---
botanjs/src/Components/Vim/Cursor.js | 14 ++++++++++----
botanjs/src/Components/Vim/LineFeeder.js | 17 ++++++++++++-----
2 files changed, 22 insertions(+), 9 deletions(-)
diff --git a/botanjs/src/Components/Vim/Cursor.js b/botanjs/src/Components/Vim/Cursor.js
index b9caecf..eba3821 100644
--- a/botanjs/src/Components/Vim/Cursor.js
+++ b/botanjs/src/Components/Vim/Cursor.js
@@ -135,13 +135,19 @@
Cursor.prototype.moveY = function( d )
{
- var Y = this.Y;
+ var Y = this.Y + d;
var line;
- Y += d;
if( Y < 0 )
{
- Y = 0;
+ this.feeder.pan( undefined, d );
+
+ this.Y = 0;
+ this.moveX();
+ this.updatePosition();
+
+ this.feeder.softReset();
+ return;
}
else if( this.feeder.moreAt < Y )
{
@@ -186,7 +192,7 @@
return;
}
- else if ( this.Y < Y )
+ else if ( 0 < d )
{
// If panning is forward
// and next line does not exists
diff --git a/botanjs/src/Components/Vim/LineFeeder.js b/botanjs/src/Components/Vim/LineFeeder.js
index b86f17f..61807a2 100644
--- a/botanjs/src/Components/Vim/LineFeeder.js
+++ b/botanjs/src/Components/Vim/LineFeeder.js
@@ -130,6 +130,7 @@
return this.__render( buffs[ start ], this.__rLength );
};
+ // Performs a line panning
Feeder.prototype.pan = function( dX, dY )
{
if( dX == undefined ) dX = 0;
@@ -140,13 +141,19 @@
var X = this.panX + dX;
var Y = this.panY + dY;
- var f = this.content.indexOf( "\n" );
- var i = 1;
+ var f = -1;
+ var i = 0;
+
+ // Y cannot be negative
+ if( Y < 0 ) Y = 0;
- while( f != - 1 && i < Y )
+ if( 0 < Y )
{
- i ++;
- f = this.content.indexOf( "\n", f + 1 );
+ f = this.content.indexOf( "\n" );
+ for( i = 1; f != - 1 && i < Y; i ++ )
+ {
+ f = this.content.indexOf( "\n", f + 1 );
+ }
}
this.firstBuffer.Push(