Sha256: 3c3fdd496acf1f4931756a0c3581cfe142282e44a8e20373691a971dadb766a7

Contents?: true

Size: 1.12 KB

Versions: 8

Compression:

Stored size: 1.12 KB

Contents

module Redcar
  class AutoIndenter
    
    class IndentCommand < Redcar::EditTabCommand
      
      def execute
        if doc.selection?
          selection = true
          start_line, end_line = *[doc.selection_line, doc.cursor_line].sort
        else
          selection = false
          start_line = end_line = doc.cursor_line
        end
        rules = AutoIndenter.rules_for_scope(doc.cursor_scope)
        analyzer = Analyzer.new(rules, doc, doc.edit_view.tab_width, doc.edit_view.soft_tabs?)
        indentation = doc.indentation
        doc.edit_view.compound do
          start_line.upto(end_line) do |line_ix|
            indentation.set_level(line_ix, analyzer.calculate_for_line(line_ix, false))
            indentation.trim_trailing_whitespace(line_ix)
          end
        end
        
        return unless selection
        
        start_offset = doc.offset_at_line(start_line)
        if end_line == doc.line_count - 1
          end_offset = doc.length
        else
          end_offset = doc.offset_at_line(end_line + 1)
        end
        doc.set_selection_range(start_offset, end_offset)
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
redcar-0.5.1 plugins/auto_indenter/lib/auto_indenter/commands.rb
redcar-0.5 plugins/auto_indenter/lib/auto_indenter/commands.rb
redcar-0.5.6dev plugins/auto_indenter/lib/auto_indenter/commands.rb
redcar-0.5.5dev plugins/auto_indenter/lib/auto_indenter/commands.rb
redcar-0.5.4dev plugins/auto_indenter/lib/auto_indenter/commands.rb
redcar-0.5.3dev plugins/auto_indenter/lib/auto_indenter/commands.rb
redcar-0.5.2dev plugins/auto_indenter/lib/auto_indenter/commands.rb
redcar-0.5.1dev plugins/auto_indenter/lib/auto_indenter/commands.rb