forked from Botanical/BotanJS
Some navigation, but not working:(
This commit is contained in:
@@ -14,8 +14,9 @@
|
||||
/** @type {System.Debug} */
|
||||
var debug = __import( "System.Debug" );
|
||||
|
||||
/** @type {Components.VimArea.LineFeeder} */
|
||||
/** @type {Components.Vim.LineFeeder} */
|
||||
var LineFeeder = ns[ NS_INVOKE ]( "LineFeeder" );
|
||||
/** @type {Components.Vim.StatusBar} */
|
||||
var StatusBar = ns[ NS_INVOKE ]( "StatusBar" );
|
||||
|
||||
var KeyHandler = function( sender, handler )
|
||||
@@ -32,6 +33,11 @@
|
||||
|
||||
var VimControls = function( sender, e )
|
||||
{
|
||||
if( e.altKey
|
||||
// F2 - F12
|
||||
|| ( 112 < e.keyCode && e.keyCode < 124 )
|
||||
) return;
|
||||
|
||||
e.preventDefault();
|
||||
if( e.ctrlKey )
|
||||
{
|
||||
@@ -39,28 +45,49 @@
|
||||
return;
|
||||
}
|
||||
|
||||
var kCode = e.KeyCode + ( e.shiftKey ? 1000 : 0 );
|
||||
switch( e.KeyCode )
|
||||
var kCode = e.keyCode + ( e.shiftKey ? 1000 : 0 );
|
||||
|
||||
var cfeeder = sender.contentFeeder;
|
||||
switch( kCode )
|
||||
{
|
||||
// Cursor movements
|
||||
case 72: // h
|
||||
cfeeder.cursor.moveX( -1 );
|
||||
break;
|
||||
case 74: // j
|
||||
cfeeder.cursor.moveY( 1 );
|
||||
break;
|
||||
case 75: // k
|
||||
cfeeder.cursor.moveY( -1 );
|
||||
break;
|
||||
case 76: // l
|
||||
cfeeder.cursor.moveX( 1 );
|
||||
break;
|
||||
|
||||
case 65: // a
|
||||
case 1065: // A
|
||||
break;
|
||||
case 72: // h
|
||||
case 1072: // H
|
||||
case 1072: // H, First line buffer
|
||||
break;
|
||||
case 74: // j
|
||||
case 1074: // J
|
||||
case 1076: // L, Last line buffer
|
||||
break;
|
||||
case 75: // k
|
||||
case 1075: // K
|
||||
break;
|
||||
case 76: // l
|
||||
case 1076: // L
|
||||
case 1052: // $
|
||||
cfeeder.cursor.lineEnd();
|
||||
break;
|
||||
case 1053: // %
|
||||
case 1054: // ^
|
||||
break;
|
||||
case 1054: // ^
|
||||
cfeeder.cursor.lineStart();
|
||||
break;
|
||||
case 1074: // J, Join lines
|
||||
break;
|
||||
case 1075: // K, manual entry
|
||||
break;
|
||||
case 112: // F1, help
|
||||
}
|
||||
|
||||
sender.__blink = false;
|
||||
sender.select( cfeeder.cursor.position );
|
||||
};
|
||||
|
||||
/* stage @param {Dandelion.IDOMElement} */
|
||||
@@ -94,31 +121,23 @@
|
||||
|
||||
VimArea.prototype.startInput = function( mode )
|
||||
{
|
||||
|
||||
};
|
||||
|
||||
VimArea.prototype.cursor = function( x, y )
|
||||
VimArea.prototype.select = function( sel )
|
||||
{
|
||||
return this.__cursor();
|
||||
};
|
||||
|
||||
VimArea.prototype.flashCursor = function()
|
||||
{
|
||||
var _self = this;
|
||||
var textarea = this.stage.element;
|
||||
Cycle.perma( "VimCursorFlashCycle", function()
|
||||
|
||||
if( sel )
|
||||
{
|
||||
var cursor = _self.cursor();
|
||||
if( cursor )
|
||||
{
|
||||
textarea.selectionStart = cursor.start;
|
||||
textarea.selectionEnd = cursor.end;
|
||||
}
|
||||
}, 600 );
|
||||
textarea.selectionStart = sel.start;
|
||||
textarea.selectionEnd = sel.end;
|
||||
}
|
||||
};
|
||||
|
||||
VimArea.prototype.VisualizeVimFrame = function()
|
||||
{
|
||||
var _self = this;
|
||||
|
||||
var element = this.stage.element;
|
||||
var r = this.rows;
|
||||
var c = this.cols;
|
||||
@@ -132,6 +151,7 @@
|
||||
sfeeder = new LineFeeder( r, c );
|
||||
sfeeder.setRender( false );
|
||||
|
||||
// XXX: Placeholder
|
||||
var statusBar = new StatusBar( c );
|
||||
statusBar.stamp( -18, function(){
|
||||
return "1,1-1";
|
||||
@@ -143,20 +163,24 @@
|
||||
|
||||
sfeeder.init( statusBar.statusText );
|
||||
|
||||
element.value = cfeeder.render( 0, r - sfeeder.linesOccupied ) + "\n" + sfeeder.render();
|
||||
element.value =
|
||||
cfeeder.render( 0, r - sfeeder.linesOccupied )
|
||||
+ "\n" + sfeeder.render();
|
||||
|
||||
this.contentFeeder = cfeeder;
|
||||
this.statusFeeder = sfeeder;
|
||||
|
||||
var f = true;
|
||||
this.__cursor = function()
|
||||
{
|
||||
if( f = !f )
|
||||
return this.contentFeeder.cursor( 0 );
|
||||
else return { start: 0, end: 0 };
|
||||
}
|
||||
this.__cursor = cfeeder.cursor;
|
||||
|
||||
this.flashCursor();
|
||||
this.__blink = true;
|
||||
Cycle.perma( "VimCursorBlinkCycle" + element.id, function()
|
||||
{
|
||||
_self.select(
|
||||
( _self.__blink = !_self.__blink )
|
||||
? _self.__cursor.position
|
||||
: { start: 0, end: 0 }
|
||||
);
|
||||
}, 600 );
|
||||
};
|
||||
|
||||
ns[ NS_EXPORT ]( EX_CLASS, "VimArea", VimArea );
|
||||
|
||||
Reference in New Issue
Block a user