Some interfaces

This commit is contained in:
斟酌 鵬兄 2016-03-15 03:06:16 +08:00
parent cbec2c7475
commit 52e4733fcc
4 changed files with 83 additions and 2 deletions

View File

@ -0,0 +1,38 @@
(function(){
var ns = __namespace( "Components.Vim.Actions" );
/** @type {Dandelion} */
var Dand = __import( "Dandelion" );
/** @type {Dandelion.IDOMElement} */
var IDOMElement = __import( "Dandelion.IDOMElement" );
/** @type {Dandelion.IDOMObject} */
var IDOMObject = __import( "Dandelion.IDOMObject" );
/** @type {System.Cycle} */
var Cycle = __import( "System.Cycle" );
/** @type {System.Debug} */
var debug = __import( "System.Debug" );
var Mesg = __import( "Components.Vim.Message" );
/** @type {Components.Vim.Cursor.IAction} */
var INSERT = function( Cursor )
{
/** @type {Components.Vim.Cursor} */
this.cursor = Cursor;
};
INSERT.prototype.dispose = function()
{
};
INSERT.prototype.getMessage = function()
{
var l = this.cursor.feeder.firstBuffer.cols;
var msg = Mesg( "INSERT" );
for( var i = msg.length; i < l; i ++ ) msg += " ";
return msg;
};
ns[ NS_EXPORT ]( EX_CLASS, "INSERT", INSERT );
})();

View File

@ -12,6 +12,8 @@
/** @type {System.Debug} */
var debug = __import( "System.Debug" );
var Actions = __import( "Components.Vim.Actions.*" );
var GetLine = function( buffs, l )
{
/** @type {Components.Vim.LineBuffer} */
@ -76,6 +78,9 @@
// The resulting position
this.P = 0;
/** @type {Components.Vim.IAction} */
this.action = null;
};
// Can only be 1, -1
@ -210,6 +215,15 @@
this.updatePosition();
};
Cursor.prototype.openInsert = function()
{
var feeder = this.feeder;
if( this.action ) this.action.dispose();
this.action = new Actions[ "INSERT" ];
feeder.dispatcher.dispatchEvent( new BotanEvent( "VisualUpdate" ) );
};
Cursor.prototype.getLine = function()
{
var feeder = this.feeder;
@ -225,6 +239,12 @@
return line;
};
__readOnly( Cursor.prototype, "message", function()
{
return this.action && this.action.getMessage();
} );
__readOnly( Cursor.prototype, "position", function()
{
return {

View File

@ -38,6 +38,8 @@
if( text )
{
text = text();
if( text == undefined || text === "" ) continue;
display += text.substr( 0, avail );
i = display.length - 1;
}

View File

@ -50,11 +50,13 @@
var kCode = e.keyCode + ( e.shiftKey ? 1000 : 0 );
var cfeeder = sender.contentFeeder;
var sfeeder = sender.statusFeeder;
switch( kCode )
{
// Cursor movements
case 8: // Backspace, go back 1 char, regardless of line
break;
case 72: // h
case 8: // Backspace
cfeeder.cursor.moveX( -1 );
break;
case 74: // j
@ -67,9 +69,24 @@
cfeeder.cursor.moveX( 1 );
break;
// Insert
case 65: // a
case 1065: // A
cfeeder.cursor.openInsert();
break;
case 1065: // A, append at the line end
break;
case 73: // i
break;
case 1073: // I, append before the line start, after spaces
break;
// remove characters
case 88: // x, remove in cursor
break;
case 1088: // X, remove before cursor
break;
case 1072: // H, First line buffer
break;
case 1076: // L, Last line buffer
@ -171,6 +188,10 @@
return mesg( cfeeder.docPos );
} );
statusBar.stamp( 0, function(){
return cfeeder.cursor.message;
} );
sfeeder.init( statusBar.statusText );
var Update = function()