forked from Botanical/BotanJS
Merge remote-tracking branch 'vim/master' into Astro
This commit is contained in:
commit
e2d9d83938
@ -1,19 +1,21 @@
|
|||||||
(function(){
|
(function(){
|
||||||
var ns = __namespace( "Components.Vim.Actions" );
|
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} */
|
/** @type {System.Debug} */
|
||||||
var debug = __import( "System.Debug" );
|
var debug = __import( "System.Debug" );
|
||||||
|
|
||||||
var Mesg = __import( "Components.Vim.Message" );
|
var Mesg = __import( "Components.Vim.Message" );
|
||||||
|
|
||||||
|
var Translate = function( c )
|
||||||
|
{
|
||||||
|
switch( c )
|
||||||
|
{
|
||||||
|
case "Tab":
|
||||||
|
return "\t";
|
||||||
|
default:
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
/** @type {Components.Vim.Cursor.IAction} */
|
/** @type {Components.Vim.Cursor.IAction} */
|
||||||
var INSERT = function( Cursor )
|
var INSERT = function( Cursor )
|
||||||
{
|
{
|
||||||
@ -25,6 +27,46 @@
|
|||||||
{
|
{
|
||||||
};
|
};
|
||||||
|
|
||||||
|
INSERT.prototype.handler = function( e )
|
||||||
|
{
|
||||||
|
e.preventDefault();
|
||||||
|
var inputChar = Translate( e.key );
|
||||||
|
|
||||||
|
if( inputChar.length != 1 ) return;
|
||||||
|
|
||||||
|
var cur = this.cursor;
|
||||||
|
var feeder = cur.feeder;
|
||||||
|
|
||||||
|
var line = cur.getLine();
|
||||||
|
var n = line.lineNum;
|
||||||
|
|
||||||
|
var cont = feeder.content;
|
||||||
|
|
||||||
|
var f = 0;
|
||||||
|
if( 0 < n )
|
||||||
|
{
|
||||||
|
f = cont.indexOf( "\n" );
|
||||||
|
for( i = 1; f != -1 && i < n; i ++ )
|
||||||
|
{
|
||||||
|
f = cont.indexOf( "\n", f + 1 );
|
||||||
|
}
|
||||||
|
|
||||||
|
if( this.cursor.feeder.wrap )
|
||||||
|
{
|
||||||
|
// wordwrap offset
|
||||||
|
f ++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
f += cur.aX;
|
||||||
|
|
||||||
|
feeder.content = cont.substring( 0, f ) + inputChar + cont.substring( f );
|
||||||
|
feeder.pan();
|
||||||
|
feeder.dispatcher.dispatchEvent( new BotanEvent( "VisualUpdate" ) );
|
||||||
|
|
||||||
|
cur.moveX( 1 );
|
||||||
|
};
|
||||||
|
|
||||||
INSERT.prototype.getMessage = function()
|
INSERT.prototype.getMessage = function()
|
||||||
{
|
{
|
||||||
var l = this.cursor.feeder.firstBuffer.cols;
|
var l = this.cursor.feeder.firstBuffer.cols;
|
||||||
|
101
botanjs/src/Components/Vim/Controls.js
Normal file
101
botanjs/src/Components/Vim/Controls.js
Normal file
@ -0,0 +1,101 @@
|
|||||||
|
(function(){
|
||||||
|
var ns = __namespace( "Components.Vim" );
|
||||||
|
|
||||||
|
var debug = __import( "System.Debug" );
|
||||||
|
|
||||||
|
var Controls = function( sender, e )
|
||||||
|
{
|
||||||
|
// Neve capture these keys
|
||||||
|
if( e.altKey
|
||||||
|
// F2 - F12
|
||||||
|
|| ( 112 < e.keyCode && e.keyCode < 124 )
|
||||||
|
) return;
|
||||||
|
|
||||||
|
// Action Mode handled by the actions themselves
|
||||||
|
var cfeeder = sender.contentFeeder;
|
||||||
|
if( cfeeder.cursor.action )
|
||||||
|
{
|
||||||
|
// Esc OR Ctrl+c
|
||||||
|
if( e.keyCode == 27 || ( e.ctrlKey && e.keyCode == 67 ) )
|
||||||
|
{
|
||||||
|
e.preventDefault();
|
||||||
|
cfeeder.cursor.closeAction();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
cfeeder.cursor.action.handler( e );
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
e.preventDefault();
|
||||||
|
|
||||||
|
if( e.ctrlKey )
|
||||||
|
{
|
||||||
|
VimComboFunc( sender, e );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
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
|
||||||
|
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;
|
||||||
|
|
||||||
|
// Insert
|
||||||
|
case 65: // a
|
||||||
|
cfeeder.cursor.openAction( "INSERT" );
|
||||||
|
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
|
||||||
|
break;
|
||||||
|
case 1052: // $
|
||||||
|
cfeeder.cursor.lineEnd();
|
||||||
|
break;
|
||||||
|
case 1053: // %
|
||||||
|
break;
|
||||||
|
case 1054: // ^
|
||||||
|
cfeeder.cursor.lineStart();
|
||||||
|
break;
|
||||||
|
case 1074: // J, Join lines
|
||||||
|
break;
|
||||||
|
case 1075: // K, manual entry
|
||||||
|
break;
|
||||||
|
case 112: // F1, help
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
ns[ NS_EXPORT ]( EX_FUNC, "Controls", Controls );
|
||||||
|
})();
|
@ -1,16 +1,8 @@
|
|||||||
(function(){
|
(function(){
|
||||||
var ns = __namespace( "Components.Vim" );
|
var ns = __namespace( "Components.Vim" );
|
||||||
|
|
||||||
/** @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} */
|
/** @type {System.Debug} */
|
||||||
var debug = __import( "System.Debug" );
|
var debug = __import( "System.Debug" );
|
||||||
|
|
||||||
var Actions = __import( "Components.Vim.Actions.*" );
|
var Actions = __import( "Components.Vim.Actions.*" );
|
||||||
|
|
||||||
@ -79,7 +71,6 @@
|
|||||||
// The resulting position
|
// The resulting position
|
||||||
this.P = 0;
|
this.P = 0;
|
||||||
|
|
||||||
/** @type {Components.Vim.IAction} */
|
|
||||||
this.action = null;
|
this.action = null;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -215,13 +206,21 @@
|
|||||||
this.updatePosition();
|
this.updatePosition();
|
||||||
};
|
};
|
||||||
|
|
||||||
Cursor.prototype.openInsert = function()
|
Cursor.prototype.openAction = function( name )
|
||||||
{
|
{
|
||||||
var feeder = this.feeder;
|
|
||||||
if( this.action ) this.action.dispose();
|
if( this.action ) this.action.dispose();
|
||||||
this.action = new Actions[ "INSERT" ];
|
this.action = new (Actions[ name ])( this );
|
||||||
|
|
||||||
feeder.dispatcher.dispatchEvent( new BotanEvent( "VisualUpdate" ) );
|
this.feeder.dispatcher.dispatchEvent( new BotanEvent( "VisualUpdate" ) );
|
||||||
|
};
|
||||||
|
|
||||||
|
Cursor.prototype.closeAction = function()
|
||||||
|
{
|
||||||
|
if( !this.action ) return;
|
||||||
|
this.action.dispose();
|
||||||
|
this.action = null;
|
||||||
|
|
||||||
|
this.feeder.dispatcher.dispatchEvent( new BotanEvent( "VisualUpdate" ) );
|
||||||
};
|
};
|
||||||
|
|
||||||
Cursor.prototype.getLine = function()
|
Cursor.prototype.getLine = function()
|
||||||
@ -239,12 +238,32 @@
|
|||||||
return line;
|
return line;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// The absX for current Line
|
||||||
|
__readOnly( Cursor.prototype, "aX", function()
|
||||||
|
{
|
||||||
|
var X = this.X;
|
||||||
|
var f = this.feeder;
|
||||||
|
|
||||||
|
// Calculate wordwrap offset
|
||||||
|
if( f.wrap )
|
||||||
|
{
|
||||||
|
var cols = f.firstBuffer.cols + 1;
|
||||||
|
var w = X < cols ? 0 : Math.floor( X / cols );
|
||||||
|
|
||||||
|
if( 0 < w )
|
||||||
|
{
|
||||||
|
X -= w;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return X;
|
||||||
|
} );
|
||||||
|
|
||||||
__readOnly( Cursor.prototype, "message", function()
|
__readOnly( Cursor.prototype, "message", function()
|
||||||
{
|
{
|
||||||
return this.action && this.action.getMessage();
|
return this.action && this.action.getMessage();
|
||||||
} );
|
} );
|
||||||
|
|
||||||
|
|
||||||
__readOnly( Cursor.prototype, "position", function()
|
__readOnly( Cursor.prototype, "position", function()
|
||||||
{
|
{
|
||||||
return {
|
return {
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
(function(){
|
(function(){
|
||||||
var ns = __namespace( "Components.Vim" );
|
var ns = __namespace( "Components.Vim" );
|
||||||
|
|
||||||
/** @type {Dandelion} */
|
var debug = __import( "System.Debug" );
|
||||||
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 LineBuffer = function( cols, nextLineBuffer )
|
var LineBuffer = function( cols, nextLineBuffer )
|
||||||
{
|
{
|
||||||
@ -48,9 +39,10 @@
|
|||||||
|
|
||||||
var i = 0;
|
var i = 0;
|
||||||
var numTabs = 0;
|
var numTabs = 0;
|
||||||
|
var tabw = this.tabWidth - 1;
|
||||||
if( wrap )
|
if( wrap )
|
||||||
{
|
{
|
||||||
for( ; i < this.cols - numTabs * this.tabWidth; i ++ )
|
for( ; i < this.cols - numTabs * tabw; i ++ )
|
||||||
{
|
{
|
||||||
var c = content[i];
|
var c = content[i];
|
||||||
if( c === undefined ) break;
|
if( c === undefined ) break;
|
||||||
@ -87,7 +79,7 @@
|
|||||||
numTabs ++;
|
numTabs ++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( i < this.cols - numTabs * this.tabWidth )
|
if( i < this.cols - numTabs * tabw )
|
||||||
{
|
{
|
||||||
line += c;
|
line += c;
|
||||||
}
|
}
|
||||||
|
@ -1,16 +1,8 @@
|
|||||||
(function(){
|
(function(){
|
||||||
var ns = __namespace( "Components.Vim" );
|
var ns = __namespace( "Components.Vim" );
|
||||||
|
|
||||||
/** @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} */
|
/** @type {System.Debug} */
|
||||||
var debug = __import( "System.Debug" );
|
var debug = __import( "System.Debug" );
|
||||||
|
|
||||||
/** @type {Components.Vim.LineBuffer} */
|
/** @type {Components.Vim.LineBuffer} */
|
||||||
var LineBuffer = ns[ NS_INVOKE ]( "LineBuffer" );
|
var LineBuffer = ns[ NS_INVOKE ]( "LineBuffer" );
|
||||||
@ -34,6 +26,8 @@
|
|||||||
this.panX = 0;
|
this.panX = 0;
|
||||||
this.panY = 0;
|
this.panY = 0;
|
||||||
|
|
||||||
|
this.wrap = true;
|
||||||
|
|
||||||
this.setRender();
|
this.setRender();
|
||||||
|
|
||||||
this.cursor = new Cursor( this );
|
this.cursor = new Cursor( this );
|
||||||
@ -42,8 +36,6 @@
|
|||||||
this.__clseLine = null;
|
this.__clseLine = null;
|
||||||
this.__moreAt = -1;
|
this.__moreAt = -1;
|
||||||
this.__rows = rows;
|
this.__rows = rows;
|
||||||
|
|
||||||
this.__wrap = true;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
Feeder.prototype.init = function( content, wrap )
|
Feeder.prototype.init = function( content, wrap )
|
||||||
@ -51,13 +43,15 @@
|
|||||||
this.content = content;
|
this.content = content;
|
||||||
this.setWrap( wrap );
|
this.setWrap( wrap );
|
||||||
|
|
||||||
this.firstBuffer.Push( content, this.__wrap, 0 );
|
this.firstBuffer.Push( content, this.wrap, 0 );
|
||||||
};
|
};
|
||||||
|
|
||||||
Feeder.prototype.setWrap = function( wrap )
|
Feeder.prototype.setWrap = function( wrap )
|
||||||
{
|
{
|
||||||
if( wrap == undefined ) return;
|
if( wrap == undefined ) return;
|
||||||
this.__wrap = wrap;
|
this.wrap = wrap;
|
||||||
|
|
||||||
|
// TODO: Update
|
||||||
};
|
};
|
||||||
|
|
||||||
Feeder.prototype.setRender = function( placeholder )
|
Feeder.prototype.setRender = function( placeholder )
|
||||||
@ -136,8 +130,6 @@
|
|||||||
if( dX == undefined ) dX = 0;
|
if( dX == undefined ) dX = 0;
|
||||||
if( dY == undefined ) dY = 0;
|
if( dY == undefined ) dY = 0;
|
||||||
|
|
||||||
if( dX == 0 && dY == 0 ) return;
|
|
||||||
|
|
||||||
var X = this.panX + dX;
|
var X = this.panX + dX;
|
||||||
var Y = this.panY + dY;
|
var Y = this.panY + dY;
|
||||||
|
|
||||||
@ -150,7 +142,7 @@
|
|||||||
if( 0 < Y )
|
if( 0 < Y )
|
||||||
{
|
{
|
||||||
f = this.content.indexOf( "\n" );
|
f = this.content.indexOf( "\n" );
|
||||||
for( i = 1; f != - 1 && i < Y; i ++ )
|
for( i = 1; f != -1 && i < Y; i ++ )
|
||||||
{
|
{
|
||||||
f = this.content.indexOf( "\n", f + 1 );
|
f = this.content.indexOf( "\n", f + 1 );
|
||||||
}
|
}
|
||||||
@ -158,7 +150,7 @@
|
|||||||
|
|
||||||
this.firstBuffer.Push(
|
this.firstBuffer.Push(
|
||||||
this.content.substr( f + 1 )
|
this.content.substr( f + 1 )
|
||||||
, this.__wrap, i );
|
, this.wrap, i );
|
||||||
|
|
||||||
this.panX = X;
|
this.panX = X;
|
||||||
this.panY = Y;
|
this.panY = Y;
|
||||||
@ -203,8 +195,7 @@
|
|||||||
} );
|
} );
|
||||||
|
|
||||||
__readOnly( Feeder.prototype, "lineStat", function() {
|
__readOnly( Feeder.prototype, "lineStat", function() {
|
||||||
var X = this.cursor.X;
|
var X = this.cursor.aX;
|
||||||
|
|
||||||
var line = this.cursor.getLine();
|
var line = this.cursor.getLine();
|
||||||
var tabStat = "";
|
var tabStat = "";
|
||||||
|
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
(function(){
|
(function(){
|
||||||
var ns = __namespace( "Components.Vim" );
|
var ns = __namespace( "Components.Vim" );
|
||||||
|
|
||||||
/** @type {Dandelion} */
|
var debug = __import( "System.Debug" );
|
||||||
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" );
|
|
||||||
|
|
||||||
/** @type {Components.VimArea.LineFeeder} */
|
/** @type {Components.VimArea.LineFeeder} */
|
||||||
var LineFeeder = ns[ NS_INVOKE ]( "LineFeeder" );
|
var LineFeeder = ns[ NS_INVOKE ]( "LineFeeder" );
|
||||||
|
@ -1,12 +1,8 @@
|
|||||||
(function(){
|
(function(){
|
||||||
var ns = __namespace( "Components.Vim" );
|
var ns = __namespace( "Components.Vim" );
|
||||||
|
|
||||||
/** @type {Dandelion} */
|
|
||||||
var Dand = __import( "Dandelion" );
|
|
||||||
/** @type {Dandelion.IDOMElement} */
|
/** @type {Dandelion.IDOMElement} */
|
||||||
var IDOMElement = __import( "Dandelion.IDOMElement" );
|
var IDOMElement = __import( "Dandelion.IDOMElement" );
|
||||||
/** @type {Dandelion.IDOMObject} */
|
|
||||||
var IDOMObject = __import( "Dandelion.IDOMObject" );
|
|
||||||
/** @type {System.utils.DataKey} */
|
/** @type {System.utils.DataKey} */
|
||||||
var DataKey = __import( "System.utils.DataKey" );
|
var DataKey = __import( "System.utils.DataKey" );
|
||||||
/** @type {System.Cycle} */
|
/** @type {System.Cycle} */
|
||||||
@ -19,6 +15,7 @@
|
|||||||
/** @type {Components.Vim.StatusBar} */
|
/** @type {Components.Vim.StatusBar} */
|
||||||
var StatusBar = ns[ NS_INVOKE ]( "StatusBar" );
|
var StatusBar = ns[ NS_INVOKE ]( "StatusBar" );
|
||||||
|
|
||||||
|
var VimControls = ns[ NS_INVOKE ]( "Controls" );
|
||||||
var mesg = ns[ NS_INVOKE ]( "Message" );
|
var mesg = ns[ NS_INVOKE ]( "Message" );
|
||||||
|
|
||||||
var KeyHandler = function( sender, handler )
|
var KeyHandler = function( sender, handler )
|
||||||
@ -33,81 +30,6 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
var VimControls = function( sender, e )
|
|
||||||
{
|
|
||||||
if( e.altKey
|
|
||||||
// F2 - F12
|
|
||||||
|| ( 112 < e.keyCode && e.keyCode < 124 )
|
|
||||||
) return;
|
|
||||||
|
|
||||||
e.preventDefault();
|
|
||||||
if( e.ctrlKey )
|
|
||||||
{
|
|
||||||
VimComboFunc( sender, e );
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
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
|
|
||||||
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;
|
|
||||||
|
|
||||||
// Insert
|
|
||||||
case 65: // 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
|
|
||||||
break;
|
|
||||||
case 1052: // $
|
|
||||||
cfeeder.cursor.lineEnd();
|
|
||||||
break;
|
|
||||||
case 1053: // %
|
|
||||||
break;
|
|
||||||
case 1054: // ^
|
|
||||||
cfeeder.cursor.lineStart();
|
|
||||||
break;
|
|
||||||
case 1074: // J, Join lines
|
|
||||||
break;
|
|
||||||
case 1075: // K, manual entry
|
|
||||||
break;
|
|
||||||
case 112: // F1, help
|
|
||||||
}
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
/* stage @param {Dandelion.IDOMElement} */
|
/* stage @param {Dandelion.IDOMElement} */
|
||||||
var VimArea = function( stage )
|
var VimArea = function( stage )
|
||||||
{
|
{
|
||||||
@ -127,9 +49,6 @@
|
|||||||
this.rows = element.rows;
|
this.rows = element.rows;
|
||||||
this.cols = element.cols;
|
this.cols = element.cols;
|
||||||
|
|
||||||
this.PosX = 1;
|
|
||||||
this.PosY = 1;
|
|
||||||
|
|
||||||
this.__active = false;
|
this.__active = false;
|
||||||
|
|
||||||
var _self = this;
|
var _self = this;
|
||||||
@ -142,10 +61,6 @@
|
|||||||
this.VisualizeVimFrame( element.value );
|
this.VisualizeVimFrame( element.value );
|
||||||
};
|
};
|
||||||
|
|
||||||
VimArea.prototype.startInput = function( mode )
|
|
||||||
{
|
|
||||||
};
|
|
||||||
|
|
||||||
VimArea.prototype.select = function( sel )
|
VimArea.prototype.select = function( sel )
|
||||||
{
|
{
|
||||||
if( !this.__active ) return;
|
if( !this.__active ) return;
|
||||||
|
@ -1,17 +1,6 @@
|
|||||||
(function(){
|
(function(){
|
||||||
var ns = __namespace( "Components.Vim" );
|
var ns = __namespace( "Components.Vim" );
|
||||||
|
|
||||||
/** @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 messages = {
|
var messages = {
|
||||||
"INSERT": "-- INSERT --"
|
"INSERT": "-- INSERT --"
|
||||||
, "REPLACE": "-- REPLACE --"
|
, "REPLACE": "-- REPLACE --"
|
||||||
|
45
botanjs/src/externs/Components.Vim.Cursor.js
Normal file
45
botanjs/src/externs/Components.Vim.Cursor.js
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
/** @constructor */
|
||||||
|
Components.Vim.Cursor = function(){};
|
||||||
|
|
||||||
|
/** @type {Components.Vim.LineFeeder} */
|
||||||
|
Components.Vim.Cursor.feeder;
|
||||||
|
/** @type {Components.Vim.IAction} */
|
||||||
|
Components.Vim.Cursor.action;
|
||||||
|
|
||||||
|
/** @type Function */
|
||||||
|
Components.Vim.Cursor.moveX;
|
||||||
|
/** @type Function */
|
||||||
|
Components.Vim.Cursor.moveY;
|
||||||
|
/** @type Function */
|
||||||
|
Components.Vim.Cursor.lineStart;
|
||||||
|
/** @type Function */
|
||||||
|
Components.Vim.Cursor.lineEnd;
|
||||||
|
/** @type Function */
|
||||||
|
Components.Vim.Cursor.updatePosition;
|
||||||
|
/** @type Function */
|
||||||
|
Components.Vim.Cursor.openAction;
|
||||||
|
/** @type Function */
|
||||||
|
Components.Vim.Cursor.closeAction;
|
||||||
|
|
||||||
|
/** @type {Array} */
|
||||||
|
Components.Vim.Cursor.lineBuffers;
|
||||||
|
/** @type Number */
|
||||||
|
Components.Vim.Cursor.pX;
|
||||||
|
/** @type Number */
|
||||||
|
Components.Vim.Cursor.P;
|
||||||
|
/** @type Number */
|
||||||
|
Components.Vim.Cursor.aX;
|
||||||
|
/** @type Number */
|
||||||
|
Components.Vim.Cursor.X;
|
||||||
|
/** @type Number */
|
||||||
|
Components.Vim.Cursor.Y;
|
||||||
|
/** @type Number */
|
||||||
|
Components.Vim.Cursor.cols;
|
||||||
|
/** @type message */
|
||||||
|
Components.Vim.Cursor.string;
|
||||||
|
/** @type Object */
|
||||||
|
Components.Vim.Cursor.position;
|
||||||
|
/** @type Number */
|
||||||
|
Components.Vim.Cursor.position.start;
|
||||||
|
/** @type Number */
|
||||||
|
Components.Vim.Cursor.position.end;
|
9
botanjs/src/externs/Components.Vim.IAction.js
Normal file
9
botanjs/src/externs/Components.Vim.IAction.js
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
/** @constructor */
|
||||||
|
Components.Vim.IAction = function(){};
|
||||||
|
|
||||||
|
/** @type Function */
|
||||||
|
Components.Vim.IAction.dispose;
|
||||||
|
/** @type Function */
|
||||||
|
Components.Vim.IAction.handler;
|
||||||
|
/** @type Function */
|
||||||
|
Components.Vim.IAction.getMessage;
|
42
botanjs/src/externs/Components.Vim.LineBuffer.js
Normal file
42
botanjs/src/externs/Components.Vim.LineBuffer.js
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
/** @constructor */
|
||||||
|
Components.Vim.LineBuffer = function(){};
|
||||||
|
|
||||||
|
/** @type {Components.Vim.LineBuffer} */
|
||||||
|
Components.Vim.LineBuffer.next;
|
||||||
|
/** @type {Components.Vim.LineBuffer} */
|
||||||
|
Components.Vim.LineBuffer.prev;
|
||||||
|
/** @type {Components.Vim.LineBuffer} */
|
||||||
|
Components.Vim.LineBuffer.nextLine;
|
||||||
|
|
||||||
|
/** @type EventDispatcher */
|
||||||
|
Components.Vim.LineBuffer.dispatcher;
|
||||||
|
|
||||||
|
/** @type Function */
|
||||||
|
Components.Vim.LineBuffer.softReset;
|
||||||
|
/** @type Function */
|
||||||
|
Components.Vim.LineBuffer.pan;
|
||||||
|
/** @type Function */
|
||||||
|
Components.Vim.LineBuffer.render;
|
||||||
|
/** @type Function */
|
||||||
|
Components.Vim.LineBuffer.setRender;
|
||||||
|
/** @type Function */
|
||||||
|
Components.Vim.LineBuffer.init;
|
||||||
|
/** @type Function */
|
||||||
|
Components.Vim.LineBuffer.setWrap;
|
||||||
|
|
||||||
|
/** @type Array */
|
||||||
|
Components.Vim.LineBuffer.visualLines;
|
||||||
|
/** @type Boolean */
|
||||||
|
Components.Vim.LineBuffer.placeholder;
|
||||||
|
/** @type Boolean */
|
||||||
|
Components.Vim.LineBuffer.br;
|
||||||
|
/** @type Number */
|
||||||
|
Components.Vim.LineBuffer.cols;
|
||||||
|
/** @type Number */
|
||||||
|
Components.Vim.LineBuffer.lineNum;
|
||||||
|
/** @type Number */
|
||||||
|
Components.Vim.LineBuffer.tabWidth;
|
||||||
|
/** @type Number */
|
||||||
|
Components.Vim.LineBuffer.linesOccupied;
|
||||||
|
/** @type String */
|
||||||
|
Components.Vim.LineBuffer.content;
|
46
botanjs/src/externs/Components.Vim.LineFeeder.js
Normal file
46
botanjs/src/externs/Components.Vim.LineFeeder.js
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
/** @constructor */
|
||||||
|
Components.Vim.LineFeeder = function(){};
|
||||||
|
|
||||||
|
/** @type {Components.Vim.Cursor} */
|
||||||
|
Components.Vim.LineFeeder.cursor;
|
||||||
|
/** @type {Components.Vim.LineBuffer} */
|
||||||
|
Components.Vim.LineFeeder.firstBuffer;
|
||||||
|
/** @type {Components.Vim.LineBuffer} */
|
||||||
|
Components.Vim.LineFeeder.lastBuffer;
|
||||||
|
|
||||||
|
/** @type EventDispatcher */
|
||||||
|
Components.Vim.LineFeeder.dispatcher;
|
||||||
|
|
||||||
|
/** @type Function */
|
||||||
|
Components.Vim.LineFeeder.softReset;
|
||||||
|
/** @type Function */
|
||||||
|
Components.Vim.LineFeeder.pan;
|
||||||
|
/** @type Function */
|
||||||
|
Components.Vim.LineFeeder.render;
|
||||||
|
/** @type Function */
|
||||||
|
Components.Vim.LineFeeder.setRender;
|
||||||
|
/** @type Function */
|
||||||
|
Components.Vim.LineFeeder.init;
|
||||||
|
/** @type Function */
|
||||||
|
Components.Vim.LineFeeder.setWrap;
|
||||||
|
|
||||||
|
/** @type {Array} */
|
||||||
|
Components.Vim.LineFeeder.lineBuffers;
|
||||||
|
/** @type Boolean */
|
||||||
|
Components.Vim.LineFeeder.EOF;
|
||||||
|
/** @type Boolean */
|
||||||
|
Components.Vim.LineFeeder.wrap;
|
||||||
|
/** @type Number */
|
||||||
|
Components.Vim.LineFeeder.panX;
|
||||||
|
/** @type Number */
|
||||||
|
Components.Vim.LineFeeder.panY;
|
||||||
|
/** @type Number */
|
||||||
|
Components.Vim.LineFeeder.moreAt;
|
||||||
|
/** @type Number */
|
||||||
|
Components.Vim.LineFeeder.linesOccupied;
|
||||||
|
/** @type String */
|
||||||
|
Components.Vim.LineFeeder.docPos;
|
||||||
|
/** @type String */
|
||||||
|
Components.Vim.LineFeeder.lineStat;
|
||||||
|
/** @type {String} */
|
||||||
|
Components.Vim.LineFeeder.content;
|
7
botanjs/src/externs/Components.Vim.StatusBar.js
Normal file
7
botanjs/src/externs/Components.Vim.StatusBar.js
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
/** @constructor */
|
||||||
|
Components.Vim.StatusBar = function(){};
|
||||||
|
|
||||||
|
/** @type Function */
|
||||||
|
Components.Vim.StatusBar.stamp;
|
||||||
|
/** @type String */
|
||||||
|
Components.Vim.StatusBar.statusText;
|
14
botanjs/src/externs/Components.Vim.VimArea.js
Normal file
14
botanjs/src/externs/Components.Vim.VimArea.js
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
/** @constructor */
|
||||||
|
Components.Vim.VimArea = function(){};
|
||||||
|
|
||||||
|
/** @type {Components.Vim.LineFeeder} */
|
||||||
|
Components.Vim.VimArea.contentFeeder;
|
||||||
|
/** @type {Components.Vim.LineFeeder} */
|
||||||
|
Components.Vim.VimArea.statusFeeder;
|
||||||
|
/** @type {Components.Vim.StatusBar} */
|
||||||
|
Components.Vim.VimArea.statusBar;
|
||||||
|
|
||||||
|
/** @type {Number} */
|
||||||
|
Components.Vim.VimArea.rows;
|
||||||
|
/** @type {Number} */
|
||||||
|
Components.Vim.VimArea.cols;
|
2
botanjs/src/externs/Components.Vim.js
Normal file
2
botanjs/src/externs/Components.Vim.js
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
/** @object */
|
||||||
|
Components.Vim = {};
|
Loading…
Reference in New Issue
Block a user