code: func (eb *EditBox) Draw(x, y, w, h int) {
  	eb.AdjustVOffset(w)
  
  	const coldef = termbox.ColorDefault
  	fill(x, y, w, h, termbox.Cell{Ch: ' '})
  
  	t := eb.text
  	lx := 0
  	tabstop := 0
  	for {
  		rx := lx - eb.line_voffset
  		if len(t) == 0 {
  			break
  		}
  
  		if lx == tabstop {
  			tabstop += tabstop_length
  		}
  
  		if rx >= w {
  			termbox.SetCell(x+w-1, y, '→',
  				coldef, coldef)
  			break
  		}
  
  		r, size := utf8.DecodeRune(t)
  		if r == '\t' {
  			for ; lx < tabstop; lx++ {
  				rx = lx - eb.line_voffset
  				if rx >= w {
  					goto next
  				}
  
  				if rx >= 0 {
  					termbox.SetCell(x+rx, y, ' ', coldef, coldef)
  				}
  			}
  		} else {
  			if rx >= 0 {
  				termbox.SetCell(x+rx, y, r, coldef, coldef)
  			}
  			lx += runewidth.RuneWidth(r)
  		}
  	next:
  		t = t[size:]
  	}
  
  	if eb.line_voffset != 0 {
  		termbox.SetCell(x, y, '←', coldef, coldef)
  	}
  }
docs: // Draws the EditBox in the given location, 'h' is not used at the moment