def move_chars_up
      oldprow = @current_index
      oldcurpos = @curpos
       _maxlen = @maxlen || @width - @internal_width
      space_left = _maxlen - @buffer.length
      can_move = [space_left, next_line.length].min
      carry_up =  @list[@current_index+1].slice!(0, can_move)
      @list[@current_index] << carry_up
      delete_line(@current_index+1) if next_line().length==0
      fire_handler :CHANGE, InputDataEvent.new(oldcurpos,oldcurpos+can_move, self, :INSERT, oldprow, carry_up)     #  2008-12-24 18:34 
    end
def move_chars_up
      oldprow = @current_index
      oldcurpos = @curpos
       _maxlen = @maxlen || @width - @internal_width
      space_left = _maxlen - @buffer.length
      can_move = [space_left, next_line.length].min
      carry_up =  @list[@current_index+1].slice!(0, can_move)
      @list[@current_index] << carry_up
      delete_line(@current_index+1) if next_line().length==0
      fire_handler :CHANGE, InputDataEvent.new(oldcurpos,oldcurpos+can_move, self, :INSERT, oldprow, carry_up)     #  2008-12-24 18:34 
    end
tries to move up as many as possible
 should not be called if line ends in "\r"