forked from Botanical/BotanJS
Merge remote-tracking branches 'vim/master' and 'origin/master' into Astro
This commit is contained in:
commit
9e0af1531f
@ -40,6 +40,9 @@
|
|||||||
|
|
||||||
var cur = this.__cursor;
|
var cur = this.__cursor;
|
||||||
var Vim = cur.Vim;
|
var Vim = cur.Vim;
|
||||||
|
|
||||||
|
/** @type {Components.Vim.VimArea} */
|
||||||
|
var VimArea = shadowImport( "Components.Vim.VimArea" );
|
||||||
var Insts = VimArea.Instances;
|
var Insts = VimArea.Instances;
|
||||||
|
|
||||||
|
|
||||||
|
@ -39,7 +39,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
// The root bracket as back ref 0
|
// The root bracket as back ref 0
|
||||||
var RegEx = new RegExp( "(" + parsed + ")", "g" );
|
var RegEx = new RegExp( "(" + parsed + ")", "gm" );
|
||||||
|
|
||||||
return RegEx;
|
return RegEx;
|
||||||
};
|
};
|
||||||
@ -104,9 +104,20 @@
|
|||||||
var FirstHit;
|
var FirstHit;
|
||||||
var PrevStack = [];
|
var PrevStack = [];
|
||||||
|
|
||||||
|
var LoopGuard;
|
||||||
while( ( r = search.exec( content ) ) !== null )
|
while( ( r = search.exec( content ) ) !== null )
|
||||||
{
|
{
|
||||||
if( !FirstHit ) FirstHit = r.index;
|
if( FirstHit == undefined )
|
||||||
|
{
|
||||||
|
FirstHit = r.index;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( LoopGuard == r.index )
|
||||||
|
{
|
||||||
|
this.__msg = VimError( "EX2", PATTERN.slice( 1 ).join( "" ) );
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
if( p < r.index )
|
if( p < r.index )
|
||||||
{
|
{
|
||||||
Hit = r.index;
|
Hit = r.index;
|
||||||
@ -114,6 +125,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
PrevStack.push( r.index );
|
PrevStack.push( r.index );
|
||||||
|
LoopGuard = r.index;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( e.kMap( "N" ) )
|
if( e.kMap( "N" ) )
|
||||||
|
89
botanjs/src/Components/Vim/Actions/JOIN_LINES.js
Normal file
89
botanjs/src/Components/Vim/Actions/JOIN_LINES.js
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
(function(){
|
||||||
|
var ns = __namespace( "Components.Vim.Actions" );
|
||||||
|
|
||||||
|
/** @type {System.Debug} */
|
||||||
|
var debug = __import( "System.Debug" );
|
||||||
|
/** @type {Components.Vim.State.Stator} */
|
||||||
|
var Stator = __import( "Components.Vim.State.Stator" );
|
||||||
|
/** @type {Components.Vim.State.Stack} */
|
||||||
|
var Stack = __import( "Components.Vim.State.Stack" );
|
||||||
|
|
||||||
|
var beep = __import( "Components.Vim.Beep" );
|
||||||
|
var Mesg = __import( "Components.Vim.Message" );
|
||||||
|
|
||||||
|
var occurance = __import( "System.utils.Perf.CountSubstr" );
|
||||||
|
|
||||||
|
/** @type {Components.Vim.IAction} */
|
||||||
|
var JOIN_LINES = function( Cursor )
|
||||||
|
{
|
||||||
|
/** @type {Components.Vim.Cursor} */
|
||||||
|
this.__cursor = Cursor;
|
||||||
|
this.__msg = "";
|
||||||
|
Cursor.suppressEvent();
|
||||||
|
};
|
||||||
|
|
||||||
|
JOIN_LINES.prototype.dispose = function()
|
||||||
|
{
|
||||||
|
this.__cursor.unsuppressEvent();
|
||||||
|
};
|
||||||
|
|
||||||
|
JOIN_LINES.prototype.handler = function( e, range )
|
||||||
|
{
|
||||||
|
e.preventDefault();
|
||||||
|
|
||||||
|
var cur = this.__cursor;
|
||||||
|
var feeder = cur.feeder;
|
||||||
|
|
||||||
|
var start;
|
||||||
|
var end;
|
||||||
|
|
||||||
|
var stack;
|
||||||
|
var stator;
|
||||||
|
|
||||||
|
var contentUndo;
|
||||||
|
if( range )
|
||||||
|
{
|
||||||
|
start = range.start;
|
||||||
|
end = range.close;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var oPos = cur.aPos;
|
||||||
|
cur.lineEnd( true );
|
||||||
|
stator = new Stator( cur );
|
||||||
|
start = cur.aPos;
|
||||||
|
cur.moveY( 1 );
|
||||||
|
cur.lineStart();
|
||||||
|
end = cur.aPos;
|
||||||
|
|
||||||
|
// This happens on the last line
|
||||||
|
if( end < start )
|
||||||
|
{
|
||||||
|
cur.moveTo( oPos );
|
||||||
|
beep();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
var content = feeder.content;
|
||||||
|
|
||||||
|
contentUndo = feeder.content.substring( start, end );
|
||||||
|
feeder.content = content.substring( 0, start ) + " " + content.substr( end );
|
||||||
|
}
|
||||||
|
|
||||||
|
feeder.pan();
|
||||||
|
|
||||||
|
cur.moveTo( start );
|
||||||
|
|
||||||
|
var stack = new Stack();
|
||||||
|
stack.store( stator.save( 1, contentUndo ) );
|
||||||
|
|
||||||
|
cur.rec.record( stack );
|
||||||
|
};
|
||||||
|
|
||||||
|
JOIN_LINES.prototype.getMessage = function()
|
||||||
|
{
|
||||||
|
return this.__msg;
|
||||||
|
};
|
||||||
|
|
||||||
|
ns[ NS_EXPORT ]( EX_CLASS, "JOIN_LINES", JOIN_LINES );
|
||||||
|
})();
|
82
botanjs/src/Components/Vim/Actions/TO.js
Normal file
82
botanjs/src/Components/Vim/Actions/TO.js
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
(function(){
|
||||||
|
var ns = __namespace( "Components.Vim.Actions" );
|
||||||
|
|
||||||
|
/** @type {System.Debug} */
|
||||||
|
var debug = __import( "System.Debug" );
|
||||||
|
|
||||||
|
var beep = __import( "Components.Vim.Beep" );
|
||||||
|
|
||||||
|
/** @type {Components.Vim.IAction} */
|
||||||
|
var TO = function( Cursor )
|
||||||
|
{
|
||||||
|
/** @type {Components.Vim.Cursor} */
|
||||||
|
this.__cursor = Cursor;
|
||||||
|
this.__msg = "<TO COMMAND>";
|
||||||
|
Cursor.suppressEvent();
|
||||||
|
};
|
||||||
|
|
||||||
|
TO.prototype.dispose = function()
|
||||||
|
{
|
||||||
|
this.__cursor.unsuppressEvent();
|
||||||
|
};
|
||||||
|
|
||||||
|
TO.prototype.handler = function( em, et )
|
||||||
|
{
|
||||||
|
et.preventDefault();
|
||||||
|
|
||||||
|
var cur = this.__cursor;
|
||||||
|
var f = cur.feeder;
|
||||||
|
var n = cur.getLine().lineNum;
|
||||||
|
|
||||||
|
var p = 0;
|
||||||
|
for( i = 0; p != -1 && i < n; i ++ )
|
||||||
|
{
|
||||||
|
p = f.content.indexOf( "\n", p + 1 );
|
||||||
|
}
|
||||||
|
|
||||||
|
var upperLimit = f.content.indexOf( "\n", p + 1 );
|
||||||
|
|
||||||
|
if( 0 < n ) p ++;
|
||||||
|
|
||||||
|
var lowerLimmit = p;
|
||||||
|
|
||||||
|
var cX = cur.X;
|
||||||
|
var tX = cX;
|
||||||
|
|
||||||
|
var Char = et.key;
|
||||||
|
if( et.kMap( "Tab" ) )
|
||||||
|
{
|
||||||
|
Char = "\t";
|
||||||
|
}
|
||||||
|
|
||||||
|
if( 1 < Char.length )
|
||||||
|
{
|
||||||
|
beep();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Forward
|
||||||
|
if( em.kMap( "t" ) || em.kMap( "f" ) )
|
||||||
|
{
|
||||||
|
tX = f.content.indexOf( Char, p + cX + 1 );
|
||||||
|
}
|
||||||
|
// backward
|
||||||
|
else
|
||||||
|
{
|
||||||
|
tX = f.content.lastIndexOf( Char, p + cX - 1 );
|
||||||
|
}
|
||||||
|
|
||||||
|
if( lowerLimmit <= tX && tX < upperLimit )
|
||||||
|
{
|
||||||
|
cur.moveTo( tX );
|
||||||
|
}
|
||||||
|
else beep();
|
||||||
|
};
|
||||||
|
|
||||||
|
TO.prototype.getMessage = function()
|
||||||
|
{
|
||||||
|
return this.__msg;
|
||||||
|
};
|
||||||
|
|
||||||
|
ns[ NS_EXPORT ]( EX_CLASS, "TO", TO );
|
||||||
|
})();
|
74
botanjs/src/Components/Vim/Actions/WORD.js
Normal file
74
botanjs/src/Components/Vim/Actions/WORD.js
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
(function(){
|
||||||
|
var ns = __namespace( "Components.Vim.Actions" );
|
||||||
|
|
||||||
|
/** @type {System.Debug} */
|
||||||
|
var debug = __import( "System.Debug" );
|
||||||
|
|
||||||
|
/** @type {Components.Vim.IAction} */
|
||||||
|
var WORD = function( Cursor )
|
||||||
|
{
|
||||||
|
/** @type {Components.Vim.Cursor} */
|
||||||
|
this.__cursor = Cursor;
|
||||||
|
this.__msg = "<WORD COMMAND>";
|
||||||
|
Cursor.suppressEvent();
|
||||||
|
};
|
||||||
|
|
||||||
|
WORD.prototype.dispose = function()
|
||||||
|
{
|
||||||
|
this.__cursor.unsuppressEvent();
|
||||||
|
};
|
||||||
|
|
||||||
|
WORD.prototype.handler = function( e )
|
||||||
|
{
|
||||||
|
e.preventDefault();
|
||||||
|
|
||||||
|
var cur = this.__cursor;
|
||||||
|
var feeder = cur.feeder;
|
||||||
|
|
||||||
|
var analyzer = cur.Vim.contentAnalyzer;
|
||||||
|
var p = cur.aPos;
|
||||||
|
|
||||||
|
|
||||||
|
var d = 1;
|
||||||
|
// forward
|
||||||
|
if( e.kMap( "w" ) || e.kMap( "W" ) )
|
||||||
|
{
|
||||||
|
if( feeder.content[ p + 1 ] == "\n" )
|
||||||
|
{
|
||||||
|
p ++;
|
||||||
|
}
|
||||||
|
|
||||||
|
var wordRange = analyzer.wordAt( p );
|
||||||
|
if( wordRange.open != -1 )
|
||||||
|
{
|
||||||
|
p = wordRange.close + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Backward
|
||||||
|
if( e.kMap( "b" ) || e.kMap( "B" ) )
|
||||||
|
{
|
||||||
|
if( p == 0 ) return;
|
||||||
|
d = -1;
|
||||||
|
|
||||||
|
var wordRange = analyzer.wordAt( p - 1 );
|
||||||
|
if( wordRange.open != -1 )
|
||||||
|
{
|
||||||
|
p = wordRange.open;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
while( " \t".indexOf( feeder.content[ p ] ) != -1 )
|
||||||
|
{
|
||||||
|
p += d;
|
||||||
|
}
|
||||||
|
|
||||||
|
cur.moveTo( p );
|
||||||
|
};
|
||||||
|
|
||||||
|
WORD.prototype.getMessage = function()
|
||||||
|
{
|
||||||
|
return this.__msg;
|
||||||
|
};
|
||||||
|
|
||||||
|
ns[ NS_EXPORT ]( EX_CLASS, "WORD", WORD );
|
||||||
|
})();
|
@ -47,6 +47,8 @@
|
|||||||
var COMMA = 188; var FULLSTOP = 190;
|
var COMMA = 188; var FULLSTOP = 190;
|
||||||
var SLASH = 191; var BACK_SLASH = 220;
|
var SLASH = 191; var BACK_SLASH = 220;
|
||||||
|
|
||||||
|
var ANY_KEY = -1;
|
||||||
|
|
||||||
var __maps = {};
|
var __maps = {};
|
||||||
var Map = function( str )
|
var Map = function( str )
|
||||||
{
|
{
|
||||||
@ -169,8 +171,9 @@
|
|||||||
{
|
{
|
||||||
var compReg = this.__compositeReg[i];
|
var compReg = this.__compositeReg[i];
|
||||||
var keys = compReg.keys;
|
var keys = compReg.keys;
|
||||||
|
var key = keys[ compReg.i ++ ];
|
||||||
|
|
||||||
if( keys[ compReg.i ++ ] == kCode )
|
if( key == ANY_KEY || key == kCode )
|
||||||
{
|
{
|
||||||
if( compReg.i == keys.length )
|
if( compReg.i == keys.length )
|
||||||
{
|
{
|
||||||
@ -262,6 +265,7 @@
|
|||||||
case SHIFT + I: // Append before the line start, after spaces
|
case SHIFT + I: // Append before the line start, after spaces
|
||||||
break;
|
break;
|
||||||
case SHIFT + J: // Join lines
|
case SHIFT + J: // Join lines
|
||||||
|
ccur.openRunAction( "JOIN_LINES", e );
|
||||||
break;
|
break;
|
||||||
case SHIFT + K: // Find the manual entry
|
case SHIFT + K: // Find the manual entry
|
||||||
break;
|
break;
|
||||||
@ -374,7 +378,11 @@
|
|||||||
break;
|
break;
|
||||||
case SHIFT + L: // Last line buffer
|
case SHIFT + L: // Last line buffer
|
||||||
break;
|
break;
|
||||||
case SHIFT + _6: // ^, Start
|
|
||||||
|
case _0: // Really - line Start
|
||||||
|
ccur.lineStart();
|
||||||
|
break;
|
||||||
|
case SHIFT + _6: // ^, line Start, XXX: skip tabs
|
||||||
ccur.lineStart();
|
ccur.lineStart();
|
||||||
break;
|
break;
|
||||||
case SHIFT + _4: // $, End
|
case SHIFT + _4: // $, End
|
||||||
@ -404,8 +412,45 @@
|
|||||||
);
|
);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
||||||
|
case SHIFT + T: // To
|
||||||
case T: // To
|
case T: // To
|
||||||
|
this.__cMovement = true;
|
||||||
|
|
||||||
|
this.__composite( e, function( e2 ) {
|
||||||
|
var oX = ccur.X;
|
||||||
|
ccur.openRunAction( "TO", e, e2 );
|
||||||
|
|
||||||
|
if( ccur.X < oX )
|
||||||
|
{
|
||||||
|
ccur.moveX( 1 );
|
||||||
|
}
|
||||||
|
else if( oX < ccur.X )
|
||||||
|
{
|
||||||
|
ccur.moveX( -1 );
|
||||||
|
}
|
||||||
|
}, ANY_KEY );
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
case SHIFT + F: // To
|
||||||
|
case F: // To
|
||||||
|
this.__cMovement = true;
|
||||||
|
|
||||||
|
this.__composite( e, function( e2 ) {
|
||||||
|
ccur.openRunAction( "TO", e, e2 );
|
||||||
|
}, ANY_KEY );
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case W: // word
|
||||||
|
case SHIFT + W:
|
||||||
|
case B:
|
||||||
|
case SHIFT + B:
|
||||||
|
ccur.openRunAction( "WORD", e );
|
||||||
|
break
|
||||||
|
|
||||||
|
|
||||||
case I: // In between boundary
|
case I: // In between boundary
|
||||||
if( !ccur.action )
|
if( !ccur.action )
|
||||||
{
|
{
|
||||||
|
@ -137,7 +137,6 @@
|
|||||||
|
|
||||||
this.moveX( - Number.MAX_VALUE );
|
this.moveX( - Number.MAX_VALUE );
|
||||||
this.moveX( jumpX, false, phantomSpace );
|
this.moveX( jumpX, false, phantomSpace );
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// 0 will be treated as default ( 1 )
|
// 0 will be treated as default ( 1 )
|
||||||
|
@ -199,6 +199,10 @@
|
|||||||
// C1 Controls and Latin-1 Supplement (Extended ASCII)
|
// C1 Controls and Latin-1 Supplement (Extended ASCII)
|
||||||
[ 0x00A1, 0x00AC ], [ 0x00AE, 0x00BF ]
|
[ 0x00A1, 0x00AC ], [ 0x00AE, 0x00BF ]
|
||||||
]
|
]
|
||||||
|
,
|
||||||
|
[ // Spaces & tabs
|
||||||
|
[ 0x0020, 0x0020 ], [ 0x0009, 0x0009 ]
|
||||||
|
]
|
||||||
];
|
];
|
||||||
|
|
||||||
var NUM_KINGDOM = KINGDOMS.length;
|
var NUM_KINGDOM = KINGDOMS.length;
|
||||||
|
@ -42,16 +42,27 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
/* stage @param {Dandelion.IDOMElement} */
|
/* stage @param {Dandelion.IDOMElement} */
|
||||||
var VimArea = function( stage )
|
var VimArea = function( stage, detectScreenSize )
|
||||||
{
|
{
|
||||||
if( !stage ) return;
|
if( !stage ) throw new Error( "Invalid argument" );
|
||||||
|
|
||||||
|
stage = IDOMElement( stage );
|
||||||
|
|
||||||
var element = stage.element;
|
var element = stage.element;
|
||||||
|
|
||||||
if( element.nodeName != "TEXTAREA" )
|
if(!( element && element.nodeName == "TEXTAREA" ))
|
||||||
{
|
{
|
||||||
debug.Error( "Element is not compatible for VimArea" );
|
throw new Error( "This element is not compatible for VimArea" );
|
||||||
return;
|
}
|
||||||
|
|
||||||
|
for( var i in Insts )
|
||||||
|
{
|
||||||
|
var inst = Insts[ i ];
|
||||||
|
if( inst.stage.element == element )
|
||||||
|
{
|
||||||
|
debug.Info( "Instance exists" );
|
||||||
|
return inst;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
stage.setAttribute( new DataKey( "vimarea", 1 ) );
|
stage.setAttribute( new DataKey( "vimarea", 1 ) );
|
||||||
@ -69,10 +80,16 @@
|
|||||||
, new EventKey( "Blur", function() { _self.__active = false; } )
|
, new EventKey( "Blur", function() { _self.__active = false; } )
|
||||||
];
|
];
|
||||||
|
|
||||||
this.__removeText
|
|
||||||
|
|
||||||
// Init
|
if( detectScreenSize )
|
||||||
this.VisualizeVimFrame( element.value );
|
{
|
||||||
|
var val = element.value;
|
||||||
|
this.__testScreen(function() { _self.VisualizeVimFrame( val ); });
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this.VisualizeVimFrame( element.value );
|
||||||
|
}
|
||||||
|
|
||||||
// Set buffer index
|
// Set buffer index
|
||||||
this.__instIndex = InstIndex ++;
|
this.__instIndex = InstIndex ++;
|
||||||
@ -81,6 +98,68 @@
|
|||||||
Insts[ this.__instIndex ] = this;
|
Insts[ this.__instIndex ] = this;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
VimArea.prototype.__testScreen = function( handler )
|
||||||
|
{
|
||||||
|
var area = this.stage.element;
|
||||||
|
area.value = "";
|
||||||
|
|
||||||
|
var msg = "Please wait while Vim;Re is testing for screen dimensions";
|
||||||
|
var m = function() { return msg[ i ++ ] || "."; };
|
||||||
|
|
||||||
|
var i = 0;
|
||||||
|
|
||||||
|
var oX = area.style.overflowX;
|
||||||
|
var oY = area.style.overflowY;
|
||||||
|
|
||||||
|
area.style.whiteSpace = "nowrap";
|
||||||
|
|
||||||
|
var oWidth = area.scrollWidth;
|
||||||
|
var testWidth = function()
|
||||||
|
{
|
||||||
|
area.value += m();
|
||||||
|
if( oWidth == area.scrollWidth )
|
||||||
|
{
|
||||||
|
Cycle.next( testWidth );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var t = "";
|
||||||
|
i -= 3;
|
||||||
|
for( var k = 0; k < i; k ++ ) t += ".";
|
||||||
|
area.value = t;
|
||||||
|
|
||||||
|
area.style.whiteSpace = "";
|
||||||
|
m = function() { return "\n" + t; };
|
||||||
|
testHeight();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
testWidth();
|
||||||
|
|
||||||
|
var oHeight = area.scrollHeight;
|
||||||
|
|
||||||
|
var l = 0;
|
||||||
|
|
||||||
|
var _self = this;
|
||||||
|
|
||||||
|
var testHeight = function() {
|
||||||
|
area.value += m();
|
||||||
|
l ++;
|
||||||
|
|
||||||
|
if( oHeight == area.scrollHeight )
|
||||||
|
{
|
||||||
|
Cycle.next( testHeight );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_self.rows = l;
|
||||||
|
_self.cols = i;
|
||||||
|
|
||||||
|
handler();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
VimArea.prototype.select = function( sel )
|
VimArea.prototype.select = function( sel )
|
||||||
{
|
{
|
||||||
if( !this.__active ) return;
|
if( !this.__active ) return;
|
||||||
|
@ -38,6 +38,7 @@ VIMRE_VERSION = "1.0.0b";
|
|||||||
|
|
||||||
// EXtended Errors
|
// EXtended Errors
|
||||||
, "EX1": "Pattern Error( %1 )"
|
, "EX1": "Pattern Error( %1 )"
|
||||||
|
, "EX2": "This pattern is causing infinite loop: %1"
|
||||||
|
|
||||||
, "TODO": "%1 is not implemented yet"
|
, "TODO": "%1 is not implemented yet"
|
||||||
, "MISSING_FEATURE": "Sorry, I thought this command wasn't useful enough to implement. Please file a feature request titled \"Implement %1\" in github if you think this is important."
|
, "MISSING_FEATURE": "Sorry, I thought this command wasn't useful enough to implement. Please file a feature request titled \"Implement %1\" in github if you think this is important."
|
||||||
|
@ -10,6 +10,12 @@
|
|||||||
|
|
||||||
var tList = [];
|
var tList = [];
|
||||||
|
|
||||||
|
var C_CALLBACK = 0;
|
||||||
|
var C_TIME = 1;
|
||||||
|
var C_ONCE = 2;
|
||||||
|
var C_ID = 3;
|
||||||
|
var C_INTVL = 4;
|
||||||
|
|
||||||
var stepper = function()
|
var stepper = function()
|
||||||
{
|
{
|
||||||
var thisTime = new Date().getTime();
|
var thisTime = new Date().getTime();
|
||||||
@ -21,11 +27,11 @@
|
|||||||
for ( var i in tList )
|
for ( var i in tList )
|
||||||
{
|
{
|
||||||
var f = tList[i];
|
var f = tList[i];
|
||||||
if( f && thisTime > f[1] )
|
if( f && thisTime > f[ C_TIME ] )
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
f[0]();
|
f[ C_CALLBACK ]();
|
||||||
}
|
}
|
||||||
catch(e)
|
catch(e)
|
||||||
{
|
{
|
||||||
@ -34,13 +40,13 @@
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( f[2] )
|
if( f[ C_ONCE ] )
|
||||||
{
|
{
|
||||||
delete tList[i];
|
delete tList[i];
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
f[1] = thisTime + f[4];
|
f[ C_TIME ] = thisTime + f[ C_INTVL ];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -56,7 +62,7 @@
|
|||||||
{
|
{
|
||||||
for ( var i in tList )
|
for ( var i in tList )
|
||||||
{
|
{
|
||||||
if( tList[i][3] == id )
|
if( tList[i][ C_ID ] == id )
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -68,14 +74,19 @@
|
|||||||
// 3: id
|
// 3: id
|
||||||
for ( var i in tList )
|
for ( var i in tList )
|
||||||
{
|
{
|
||||||
if( tList[i][3] == id )
|
if( tList[i][ C_ID ] == id )
|
||||||
delete tList[i];
|
delete tList[i];
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
var next = function( func )
|
var next = function( func )
|
||||||
{
|
{
|
||||||
tList[ tList.length ] = [ func, 0, true ];
|
var a = [];
|
||||||
|
a[ C_CALLBACK ] = func;
|
||||||
|
a[ C_TIME ] = 0;
|
||||||
|
a[ C_ONCE ] = true;
|
||||||
|
|
||||||
|
tList[ tList.length ] = a;
|
||||||
};
|
};
|
||||||
|
|
||||||
var ourTick = new Tick();
|
var ourTick = new Tick();
|
||||||
|
Loading…
Reference in New Issue
Block a user