Class: Redwood::LineCursorMode

Inherits:
ScrollMode show all
Defined in:
lib/sup/modes/line_cursor_mode.rb

Overview

extends ScrollMode to have a line-based cursor.

Instance Attribute Summary collapse

Attributes inherited from ScrollMode

#botline, #leftcol, #status, #topline

Attributes inherited from Mode

#buffer

Instance Method Summary collapse

Methods inherited from ScrollMode

#at_bottom?, #at_top?, #cancel_search!, #col_jump, #col_left, #col_right, #continue_search_in_buffer, #half_page_down, #half_page_up, #in_search?, #jump_to_col, #jump_to_left, #jump_to_line, #resize, #rightcol, #search_goto_pos, #search_in_buffer

Methods inherited from Mode

#blur, #cancel_search!, #focus, #handle_input, #help_text, #in_search?, keymap, keymaps, #killable?, load_all_modes, make_name, #name, #pipe_to_process, register_keymap, #resize, #resolve_input, #save_to_file, #status, #unsaved?

Constructor Details

#initialize(opts = {}) ⇒ LineCursorMode

Returns a new instance of LineCursorMode.



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/sup/modes/line_cursor_mode.rb', line 15

def initialize opts={}
  @cursor_top = @curpos = opts.delete(:skip_top_rows) || 0
  @load_more_callbacks = []
  @load_more_q = Queue.new
  @load_more_thread = ::Thread.new do
    while true
      e = @load_more_q.pop
      @load_more_callbacks.each { |c| c.call e }
      sleep 0.5
      @load_more_q.pop until @load_more_q.empty?
    end
  end

  super opts
end

Instance Attribute Details

#curposObject (readonly)

Returns the value of attribute curpos.



13
14
15
# File 'lib/sup/modes/line_cursor_mode.rb', line 13

def curpos
  @curpos
end

Instance Method Details

#cleanupObject



31
32
33
34
# File 'lib/sup/modes/line_cursor_mode.rb', line 31

def cleanup
  @load_more_thread.kill
  super
end

#drawObject



36
37
38
39
# File 'lib/sup/modes/line_cursor_mode.rb', line 36

def draw
  super
  set_status
end