Fixed w motion, added e motion

This commit is contained in:
斟酌 鵬兄 2017-01-30 14:33:00 +08:00
parent b0f72f1281
commit 36a2dfac79
2 changed files with 51 additions and 15 deletions

View File

@ -30,22 +30,60 @@
var p = cur.aPos;
var d = 1;
// forward
// Forword WORD start
if( e.kMap( "w" ) || e.kMap( "W" ) )
{
if( feeder.content[ p + 1 ] == "\n" )
// +2 because there is a closing "\n"
if( feeder.content[ p + 2 ] == undefined )
{
p ++;
beep();
return;
}
var wordRange = analyzer.wordAt( p );
if( wordRange.open != -1 )
{
p = wordRange.close + 1;
while( " \t\n".indexOf( feeder.content[ p ] ) != -1 ) p ++;
if( feeder.content[ p ] == undefined )
{
// This is the last character
p --;
}
}
// Backward
}
// Forward WORD end
if( e.kMap( "e" ) || e.kMap( "E" ) )
{
if( feeder.content[ p + 2 ] == undefined )
{
beep();
return;
}
p ++;
while( " \t\n".indexOf( feeder.content[ p ] ) != -1 ) p ++;
// This is the last character
if( feeder.content[ p ] == undefined )
{
p --;
}
else
{
var wordRange = analyzer.wordAt( p );
if( wordRange.open != -1 )
{
p = wordRange.close;
}
}
}
// Backward WORD start
if( e.kMap( "b" ) || e.kMap( "B" ) )
{
if( p == 0 )
@ -54,21 +92,17 @@
return;
}
d = -1;
while( " \t".indexOf( feeder.content[ p + d ] ) != -1 )
{
d --;
}
p --;
while( " \t".indexOf( feeder.content[ p ] ) != -1 ) p --;
// No more results
if( ( p + d ) == -1 )
if( p == -1 )
{
p = 0;
}
else
{
var wordRange = analyzer.wordAt( p + d );
var wordRange = analyzer.wordAt( p );
if( wordRange.open != -1 )
{
p = wordRange.open;

View File

@ -599,6 +599,8 @@
case SHIFT + W:
case B:
case SHIFT + B:
case E:
case SHIFT + E:
ccur.openRunAction( "WORD", e );
break
@ -813,7 +815,7 @@
this.__key = RMap( e );
this.__modKeys = 0;
this.__kCode = e;
this.__escape = this.__kCode == ESC || this.__kCode == ( CTRL + C );
this.__escape = this.__kCode == ESC || this.__kCode == ( CTRL + C ) || this.__key == ( CTRL + S_BRACKET_L );
}
else
{
@ -827,7 +829,7 @@
var c = this.__e.keyCode;
this.__escape = c == ESC || ( e.ctrlKey && c == C );
this.__escape = c == ESC || ( e.ctrlKey && ( c == C || c == S_BRACKET_L ) );
this.__kCode = c
+ ( e.shiftKey || e.getModifierState( "CapsLock" ) ? SHIFT : 0 )
+ ( e.ctrlKey ? CTRL : 0 )