code: function TextBuffer( options = {} ) {
  	this.ScreenBuffer = options.ScreenBuffer || ( options.dst && options.dst.constructor ) || termkit.ScreenBuffer ;
  
  	// a screenBuffer
  	this.dst = options.dst ;
  
  	// virtually infinity by default
  	this.width = options.width || Infinity ;
  	this.height = options.height || Infinity ;
  
  	this.x = options.x !== undefined ? options.x : 0 ;
  	this.y = options.y !== undefined ? options.y : 0 ;
  	this.cx = 0 ;
  	this.cy = 0 ;
  
  	this.emptyCellAttr = this.ScreenBuffer.prototype.DEFAULT_ATTR ;
  	this.hidden = false ;
  
  	this.tabWidth = options.tabWidth || 4 ;
  	this.forceInBound = !! options.forceInBound ;
  	this.wrap = !! options.wrap ;
  	this.lineWrapping = options.lineWrapping || false ;
  
  	this.buffer = [ [] ] ;
  
  	this.stateMachine = options.stateMachine || null ;
  
  	if ( options.hidden ) { this.setHidden( options.hidden ) ; }
  }
docs: A buffer suitable for text editor