In Files

  • reline/line_editor.rb

Object

Public Instance Methods

eof?() click to toggle source
 
               # File reline/line_editor.rb, line 155
def eof?
  @eof
end
            
finalize() click to toggle source
 
               # File reline/line_editor.rb, line 151
def finalize
  Signal.trap('SIGINT', @old_trap)
end
            
multiline_off() click to toggle source
 
               # File reline/line_editor.rb, line 206
def multiline_off
  @is_multiline = false
end
            
multiline_on() click to toggle source
 
               # File reline/line_editor.rb, line 202
def multiline_on
  @is_multiline = true
end
            
reset(prompt = '', encoding:) click to toggle source
 
               # File reline/line_editor.rb, line 105
def reset(prompt = '', encoding))
  @rest_height = (Reline::IOGate.get_screen_size.first - 1) - Reline::IOGate.cursor_pos.y
  @screen_size = Reline::IOGate.get_screen_size
  reset_variables(prompt, encoding: encoding)
  @old_trap = Signal.trap('SIGINT') {
    @old_trap.call if @old_trap.respond_to?(:call) # can also be string, ex: "DEFAULT"
    raise Interrupt
  }
  Reline::IOGate.set_winch_handler do
    @rest_height = (Reline::IOGate.get_screen_size.first - 1) - Reline::IOGate.cursor_pos.y
    old_screen_size = @screen_size
    @screen_size = Reline::IOGate.get_screen_size
    if old_screen_size.last < @screen_size.last # columns increase
      @rerender_all = true
      rerender
    else
      back = 0
      new_buffer = whole_lines
      prompt, prompt_width, prompt_list = check_multiline_prompt(new_buffer, prompt)
      new_buffer.each_with_index do |line, index|
        prompt_width = calculate_width(prompt_list[index], true) if @prompt_proc
        width = prompt_width + calculate_width(line)
        height = calculate_height_by_width(width)
        back += height
      end
      @highest_in_all = back
      @highest_in_this = calculate_height_by_width(prompt_width + @cursor_max)
      @first_line_started_from =
        if @line_index.zero?
          0
        else
          calculate_height_by_lines(@buffer_of_lines[0..(@line_index - 1)], prompt_list || prompt)
        end
      if @prompt_proc
        prompt = prompt_list[@line_index]
        prompt_width = calculate_width(prompt, true)
      end
      calculate_nearest_cursor
      @started_from = calculate_height_by_width(prompt_width + @cursor) - 1
      Reline::IOGate.move_cursor_column((prompt_width + @cursor) % @screen_size.last)
      @highest_in_this = calculate_height_by_width(prompt_width + @cursor_max)
      @rerender_all = true
    end
  end
end
            
reset_line() click to toggle source
 
               # File reline/line_editor.rb, line 184
def reset_line
  @cursor = 0
  @cursor_max = 0
  @byte_pointer = 0
  @buffer_of_lines = [String.new(encoding: @encoding)]
  @line_index = 0
  @previous_line_index = nil
  @line = @buffer_of_lines[0]
  @first_line_started_from = 0
  @move_up = 0
  @started_from = 0
  @highest_in_this = 1
  @highest_in_all = 1
  @line_backup_in_history = nil
  @multibyte_buffer = String.new(encoding: 'ASCII-8BIT')
  @check_new_auto_indent = false
end
            
reset_variables(prompt = '', encoding:) click to toggle source
 
               # File reline/line_editor.rb, line 159
def reset_variables(prompt = '', encoding))
  @prompt = prompt
  @mark_pointer = nil
  @encoding = encoding
  @is_multiline = false
  @finished = false
  @cleared = false
  @rerender_all = false
  @history_pointer = nil
  @kill_ring = Reline::KillRing.new
  @vi_clipboard = ''
  @vi_arg = nil
  @waiting_proc = nil
  @waiting_operator_proc = nil
  @completion_journey_data = nil
  @completion_state = CompletionState::NORMAL
  @perfect_matched = nil
  @menu_info = nil
  @first_prompt = true
  @searching_prompt = nil
  @first_char = true
  @eof = false
  reset_line
end