commit 8c5f50ec2cd75ba452a4171361fb6516ce49e423
| author | 斟酌 鵬兄 <tgckpg@gmail.com> |
| date | 2016-03-30T20:34:08Z |
| subject | Bug fix for Ctrl + b/f |
commit 8c5f50ec2cd75ba452a4171361fb6516ce49e423
Author: 斟酌 鵬兄 <tgckpg@gmail.com>
Date: 2016-03-30T20:34:08Z
Bug fix for Ctrl + b/f
---
botanjs/src/Components/Vim/Controls.js | 10 +++++++---
botanjs/src/Components/Vim/LineFeeder.js | 10 +++++-----
botanjs/src/Components/Vim/VimArea.js | 2 +-
3 files changed, 13 insertions(+), 9 deletions(-)
diff --git a/botanjs/src/Components/Vim/Controls.js b/botanjs/src/Components/Vim/Controls.js
index 950ddbc..e6f529a 100644
--- a/botanjs/src/Components/Vim/Controls.js
+++ b/botanjs/src/Components/Vim/Controls.js
@@ -270,14 +270,16 @@
case J: this.__cMoveY( 1 ); break; // Down
case CTRL + F: // Page Down
- if( cfeeder.firstBuffer.next.placeholder )
+ if( cfeeder.firstBuffer.nextLine.placeholder )
{
beep();
break;
}
var oPan = cfeeder.panY;
- cfeeder.pan( undefined, vima.rows - 1 );
+ cfeeder.pan( undefined, cfeeder.moreAt );
+ cfeeder.softReset();
+
ccur.moveY( -ccur.Y );
break;
@@ -287,7 +289,9 @@
beep();
break;
}
- cfeeder.pan( undefined, -vima.rows + 1 );
+ cfeeder.pan( undefined, -cfeeder.moreAt );
+ cfeeder.softReset();
+
ccur.moveY( -ccur.Y );
if( !cfeeder.EOF ) ccur.moveY( cfeeder.moreAt );
break;
diff --git a/botanjs/src/Components/Vim/LineFeeder.js b/botanjs/src/Components/Vim/LineFeeder.js
index b27779f..1385ee8 100644
--- a/botanjs/src/Components/Vim/LineFeeder.js
+++ b/botanjs/src/Components/Vim/LineFeeder.js
@@ -141,17 +141,17 @@
// Y cannot be negative
if( Y < 0 ) Y = 0;
+ // Compensate the last "\n" content placeholder
+ var cont = this.content.slice( 0, -1 );
if( 0 < Y )
{
- f = this.content.indexOf( "\n" );
+ f = cont.indexOf( "\n" );
for( i = 1; f != -1 && i < Y; i ++ )
{
- var a = this.content.indexOf( "\n", f + 1 );
+ var a = cont.indexOf( "\n", f + 1 );
if( a == -1 )
{
- Y = i - 1;
- // -2 to compensate the last "\n" content placeholder
- f -= 2;
+ Y = i;
break;
}
f = a;
diff --git a/botanjs/src/Components/Vim/VimArea.js b/botanjs/src/Components/Vim/VimArea.js
index 116bd46..95b02c6 100644
--- a/botanjs/src/Components/Vim/VimArea.js
+++ b/botanjs/src/Components/Vim/VimArea.js
@@ -104,7 +104,7 @@
cfeeder.init( content + "\n" );
// Status can consumes up to full screen, I think
- sfeeder = new LineFeeder( r, c );
+ var sfeeder = new LineFeeder( r, c );
sfeeder.setRender( false );
// Set the Vim instance