Class: Kward::PromptInterface::EditorKillRing
- Inherits:
-
Object
- Object
- Kward::PromptInterface::EditorKillRing
- Defined in:
- lib/kward/prompt_interface/editor/kill_ring.rb
Overview
Kill buffer, kill ring, and yank-pop bookkeeping for editor buffers.
Instance Attribute Summary collapse
-
#kill_buffer ⇒ Object
Returns the value of attribute kill_buffer.
-
#kill_ring ⇒ Object
Returns the value of attribute kill_ring.
-
#last_yank_index ⇒ Object
Returns the value of attribute last_yank_index.
-
#last_yank_range ⇒ Object
Returns the value of attribute last_yank_range.
Instance Method Summary collapse
- #clear_last_yank ⇒ Object
- #first_yank ⇒ Object
-
#initialize(kill_buffer: "", kill_ring: [], last_yank_range: nil, last_yank_index: nil) ⇒ EditorKillRing
constructor
A new instance of EditorKillRing.
- #next_yank_pop ⇒ Object
- #push(text) ⇒ Object
- #record_yank(start_index, end_index) ⇒ Object
- #record_yank_pop(start_index, end_index) ⇒ Object
Constructor Details
#initialize(kill_buffer: "", kill_ring: [], last_yank_range: nil, last_yank_index: nil) ⇒ EditorKillRing
Returns a new instance of EditorKillRing.
9 10 11 12 13 14 |
# File 'lib/kward/prompt_interface/editor/kill_ring.rb', line 9 def initialize(kill_buffer: "", kill_ring: [], last_yank_range: nil, last_yank_index: nil) @kill_buffer = kill_buffer.to_s @kill_ring = kill_ring @last_yank_range = last_yank_range @last_yank_index = last_yank_index end |
Instance Attribute Details
#kill_buffer ⇒ Object
Returns the value of attribute kill_buffer.
7 8 9 |
# File 'lib/kward/prompt_interface/editor/kill_ring.rb', line 7 def kill_buffer @kill_buffer end |
#kill_ring ⇒ Object
Returns the value of attribute kill_ring.
7 8 9 |
# File 'lib/kward/prompt_interface/editor/kill_ring.rb', line 7 def kill_ring @kill_ring end |
#last_yank_index ⇒ Object
Returns the value of attribute last_yank_index.
7 8 9 |
# File 'lib/kward/prompt_interface/editor/kill_ring.rb', line 7 def last_yank_index @last_yank_index end |
#last_yank_range ⇒ Object
Returns the value of attribute last_yank_range.
7 8 9 |
# File 'lib/kward/prompt_interface/editor/kill_ring.rb', line 7 def last_yank_range @last_yank_range end |
Instance Method Details
#clear_last_yank ⇒ Object
72 73 74 75 |
# File 'lib/kward/prompt_interface/editor/kill_ring.rb', line 72 def clear_last_yank @last_yank_range = nil @last_yank_index = nil end |
#first_yank ⇒ Object
45 46 47 48 49 50 |
# File 'lib/kward/prompt_interface/editor/kill_ring.rb', line 45 def first_yank text = @kill_ring.first.to_s return nil if text.empty? text end |
#next_yank_pop ⇒ Object
57 58 59 60 61 62 63 64 65 66 |
# File 'lib/kward/prompt_interface/editor/kill_ring.rb', line 57 def next_yank_pop return nil unless @last_yank_range && @last_yank_index return nil if @kill_ring.length < 2 @last_yank_index = (@last_yank_index + 1) % @kill_ring.length { text: @kill_ring[@last_yank_index], range: @last_yank_range } end |
#push(text) ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/kward/prompt_interface/editor/kill_ring.rb', line 33 def push(text) text = text.to_s return false if text.empty? @kill_buffer = text @kill_ring.unshift(text) @kill_ring.uniq! @kill_ring = @kill_ring.first(30) clear_last_yank true end |
#record_yank(start_index, end_index) ⇒ Object
52 53 54 55 |
# File 'lib/kward/prompt_interface/editor/kill_ring.rb', line 52 def record_yank(start_index, end_index) @last_yank_range = [start_index, end_index] @last_yank_index = 0 end |
#record_yank_pop(start_index, end_index) ⇒ Object
68 69 70 |
# File 'lib/kward/prompt_interface/editor/kill_ring.rb', line 68 def record_yank_pop(start_index, end_index) @last_yank_range = [start_index, end_index] end |