forked from Botanical/BotanJS
		
	Merge remote-tracking branch 'vim/master' into Astro
This commit is contained in:
		| @@ -1,19 +1,21 @@ | ||||
| (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 debug = __import( "System.Debug" ); | ||||
| 	var Mesg = __import( "Components.Vim.Message" ); | ||||
|  | ||||
| 	var Translate = function( c ) | ||||
| 	{ | ||||
| 		switch( c ) | ||||
| 		{ | ||||
| 			case "Tab": | ||||
| 				return "\t"; | ||||
| 			default: | ||||
| 				return c; | ||||
| 		} | ||||
| 	}; | ||||
|  | ||||
| 	/** @type {Components.Vim.Cursor.IAction} */ | ||||
| 	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() | ||||
| 	{ | ||||
| 		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(){ | ||||
| 	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 debug = __import( "System.Debug" ); | ||||
|  | ||||
| 	var Actions = __import( "Components.Vim.Actions.*" ); | ||||
|  | ||||
| @@ -79,7 +71,6 @@ | ||||
| 		// The resulting position | ||||
| 		this.P = 0; | ||||
|  | ||||
| 		/** @type {Components.Vim.IAction} */ | ||||
| 		this.action = null; | ||||
| 	}; | ||||
|  | ||||
| @@ -215,13 +206,21 @@ | ||||
| 		this.updatePosition(); | ||||
| 	}; | ||||
|  | ||||
| 	Cursor.prototype.openInsert = function() | ||||
| 	Cursor.prototype.openAction = function( name ) | ||||
| 	{ | ||||
| 		var feeder = this.feeder; | ||||
| 		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() | ||||
| @@ -239,12 +238,32 @@ | ||||
| 		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() | ||||
| 	{ | ||||
| 		return this.action && this.action.getMessage(); | ||||
| 	} ); | ||||
|  | ||||
|  | ||||
| 	__readOnly( Cursor.prototype, "position", function() | ||||
| 	{ | ||||
| 		return { | ||||
|   | ||||
| @@ -1,16 +1,7 @@ | ||||
| (function(){ | ||||
| 	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 debug = __import( "System.Debug" ); | ||||
|  | ||||
| 	var LineBuffer = function( cols, nextLineBuffer ) | ||||
| 	{ | ||||
| @@ -48,9 +39,10 @@ | ||||
|  | ||||
| 		var i = 0; | ||||
| 		var numTabs = 0; | ||||
| 		var tabw = this.tabWidth - 1; | ||||
| 		if( wrap ) | ||||
| 		{ | ||||
| 			for( ; i < this.cols - numTabs * this.tabWidth; i ++ ) | ||||
| 			for( ; i < this.cols - numTabs * tabw; i ++ ) | ||||
| 			{ | ||||
| 				var c = content[i]; | ||||
| 				if( c === undefined ) break; | ||||
| @@ -87,7 +79,7 @@ | ||||
| 					numTabs ++; | ||||
| 				} | ||||
|  | ||||
| 				if( i < this.cols - numTabs * this.tabWidth ) | ||||
| 				if( i < this.cols - numTabs * tabw ) | ||||
| 				{ | ||||
| 					line += c; | ||||
| 				} | ||||
|   | ||||
| @@ -1,16 +1,8 @@ | ||||
| (function(){ | ||||
| 	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 debug = __import( "System.Debug" ); | ||||
|  | ||||
| 	/** @type {Components.Vim.LineBuffer} */ | ||||
| 	var LineBuffer = ns[ NS_INVOKE ]( "LineBuffer" ); | ||||
| @@ -34,6 +26,8 @@ | ||||
| 		this.panX = 0; | ||||
| 		this.panY = 0; | ||||
|  | ||||
| 		this.wrap = true; | ||||
|  | ||||
| 		this.setRender(); | ||||
|  | ||||
| 		this.cursor = new Cursor( this ); | ||||
| @@ -42,8 +36,6 @@ | ||||
| 		this.__clseLine = null; | ||||
| 		this.__moreAt = -1; | ||||
| 		this.__rows = rows; | ||||
|  | ||||
| 		this.__wrap = true; | ||||
| 	}; | ||||
|  | ||||
| 	Feeder.prototype.init = function( content, wrap ) | ||||
| @@ -51,13 +43,15 @@ | ||||
| 		this.content = content; | ||||
| 		this.setWrap( wrap ); | ||||
|  | ||||
| 		this.firstBuffer.Push( content, this.__wrap, 0 );  | ||||
| 		this.firstBuffer.Push( content, this.wrap, 0 );  | ||||
| 	}; | ||||
|  | ||||
| 	Feeder.prototype.setWrap = function( wrap ) | ||||
| 	{ | ||||
| 		if( wrap == undefined ) return; | ||||
| 		this.__wrap = wrap; | ||||
| 		this.wrap = wrap; | ||||
|  | ||||
| 		// TODO: Update | ||||
| 	}; | ||||
|  | ||||
| 	Feeder.prototype.setRender = function( placeholder ) | ||||
| @@ -136,8 +130,6 @@ | ||||
| 		if( dX == undefined ) dX = 0; | ||||
| 		if( dY == undefined ) dY = 0; | ||||
|  | ||||
| 		if( dX == 0 && dY == 0 ) return; | ||||
|  | ||||
| 		var X = this.panX + dX; | ||||
| 		var Y = this.panY + dY; | ||||
|  | ||||
| @@ -150,7 +142,7 @@ | ||||
| 		if( 0 < Y ) | ||||
| 		{ | ||||
| 			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 ); | ||||
| 			} | ||||
| @@ -158,7 +150,7 @@ | ||||
|  | ||||
| 		this.firstBuffer.Push( | ||||
| 			this.content.substr( f + 1 ) | ||||
| 			, this.__wrap, i ); | ||||
| 			, this.wrap, i ); | ||||
|  | ||||
| 		this.panX = X; | ||||
| 		this.panY = Y; | ||||
| @@ -203,8 +195,7 @@ | ||||
| 	} ); | ||||
|  | ||||
| 	__readOnly( Feeder.prototype, "lineStat", function() { | ||||
| 		var X = this.cursor.X; | ||||
|  | ||||
| 		var X = this.cursor.aX; | ||||
| 		var line = this.cursor.getLine(); | ||||
| 		var tabStat = ""; | ||||
|  | ||||
|   | ||||
| @@ -1,16 +1,7 @@ | ||||
| (function(){ | ||||
| 	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 debug = __import( "System.Debug" ); | ||||
|  | ||||
| 	/** @type {Components.VimArea.LineFeeder} */ | ||||
| 	var LineFeeder = ns[ NS_INVOKE ]( "LineFeeder" ); | ||||
|   | ||||
| @@ -1,12 +1,8 @@ | ||||
| (function(){ | ||||
| 	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.utils.DataKey} */ | ||||
| 	var DataKey                                 = __import( "System.utils.DataKey" ); | ||||
| 	/** @type {System.Cycle} */ | ||||
| @@ -19,6 +15,7 @@ | ||||
| 	/** @type {Components.Vim.StatusBar} */ | ||||
| 	var StatusBar = ns[ NS_INVOKE ]( "StatusBar" ); | ||||
|  | ||||
| 	var VimControls = ns[ NS_INVOKE ]( "Controls" ); | ||||
| 	var mesg = ns[ NS_INVOKE ]( "Message" ); | ||||
|  | ||||
| 	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} */ | ||||
| 	var VimArea = function( stage ) | ||||
| 	{ | ||||
| @@ -127,9 +49,6 @@ | ||||
| 		this.rows = element.rows; | ||||
| 		this.cols = element.cols; | ||||
|  | ||||
| 		this.PosX = 1; | ||||
| 		this.PosY = 1; | ||||
|  | ||||
| 		this.__active = false; | ||||
|  | ||||
| 		var _self = this; | ||||
| @@ -142,10 +61,6 @@ | ||||
| 		this.VisualizeVimFrame( element.value ); | ||||
| 	}; | ||||
|  | ||||
| 	VimArea.prototype.startInput = function( mode ) | ||||
| 	{ | ||||
| 	}; | ||||
|  | ||||
| 	VimArea.prototype.select = function( sel ) | ||||
| 	{ | ||||
| 		if( !this.__active ) return; | ||||
|   | ||||
| @@ -1,17 +1,6 @@ | ||||
| (function(){ | ||||
| 	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 = { | ||||
| 		"INSERT": "-- INSERT --" | ||||
| 		, "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 = {}; | ||||
		Reference in New Issue
	
	Block a user