class Diakonos::LineMover
Public Class Methods
new(buffer:)
click to toggle source
# File lib/diakonos/line-mover.rb, line 3 def initialize(buffer:) @buffer = buffer end
Public Instance Methods
move_selected_lines(direction:)
click to toggle source
# File lib/diakonos/line-mover.rb, line 7 def move_selected_lines(direction:) case direction when :up from_row = start_row-1 return if from_row < 0 to_row = end_row-1 selection_delta = 0 when :down from_row = end_row to_row = start_row return if to_row > @buffer.lines.count - 2 selection_delta = @buffer.selecting? ? 1 : 0 end @buffer.take_snapshot Buffer::TYPING @buffer.lines.insert( to_row, @buffer.lines.delete_at(from_row) ) if @buffer.selecting? @buffer.set_selection to_row+selection_delta, 0, from_row+1+selection_delta, 0 @buffer.anchor_selection to_row+selection_delta end @buffer.go_to_line from_row+selection_delta @buffer.set_modified end
Private Instance Methods
end_row()
click to toggle source
# File lib/diakonos/line-mover.rb, line 38 def end_row @buffer.selection_mark&.end_row || @buffer.last_row+1 end
start_row()
click to toggle source
# File lib/diakonos/line-mover.rb, line 34 def start_row @buffer.selection_mark&.start_row || @buffer.current_row end