def indent_line
      result = false
      level = calculate_indentation
      return result if level.nil?
      @buffer.save_excursion do
        @buffer.beginning_of_line
        @buffer.composite_edit do
          if @buffer.looking_at?(/[ \t]+/)
            s = @buffer.match_string(0)
            break if /\t/ !~ s && s.size == level
            @buffer.delete_region(@buffer.match_beginning(0),
                                  @buffer.match_end(0))
          else
            break if level == 0
          end
          @buffer.indent_to(level)
        end
        result = true
      end
      pos = @buffer.point
      @buffer.beginning_of_line
      @buffer.forward_char while /[ \t]/ =~ @buffer.char_after
      if @buffer.point < pos
        @buffer.goto_char(pos)
      end
      result
    end
def indent_line
      result = false
      level = calculate_indentation
      return result if level.nil?
      @buffer.save_excursion do
        @buffer.beginning_of_line
        @buffer.composite_edit do
          if @buffer.looking_at?(/[ \t]+/)
            s = @buffer.match_string(0)
            break if /\t/ !~ s && s.size == level
            @buffer.delete_region(@buffer.match_beginning(0),
                                  @buffer.match_end(0))
          else
            break if level == 0
          end
          @buffer.indent_to(level)
        end
        result = true
      end
      pos = @buffer.point
      @buffer.beginning_of_line
      @buffer.forward_char while /[ \t]/ =~ @buffer.char_after
      if @buffer.point < pos
        @buffer.goto_char(pos)
      end
      result
    end
Return true if modified.