class IRB::RelineInputMethod

Constants

HISTORY
SHOW_DOC_DIALOG

Public Class Methods

new() click to toggle source

Creates a new input method object using Reline

Calls superclass method IRB::StdioInputMethod::new
# File irb/input-method.rb, line 227
def initialize
  IRB.__send__(:set_encoding, Reline.encoding_system_needs.name, override: false)

  super

  @eof = false

  Reline.basic_word_break_characters = IRB::InputCompletor::BASIC_WORD_BREAK_CHARACTERS
  Reline.completion_append_character = nil
  Reline.completer_quote_characters = ''
  Reline.completion_proc = IRB::InputCompletor::CompletionProc
  Reline.output_modifier_proc =
    if IRB.conf[:USE_COLORIZE]
      proc do |output, complete: |
        next unless IRB::Color.colorable?
        lvars = IRB.CurrentContext&.local_variables || []
        IRB::Color.colorize_code(output, complete: complete, local_variables: lvars)
      end
    else
      proc do |output|
        Reline::Unicode.escape_for_print(output)
      end
    end
  Reline.dig_perfect_match_proc = IRB::InputCompletor::PerfectMatchedProc
  Reline.autocompletion = IRB.conf[:USE_AUTOCOMPLETE]

  if IRB.conf[:USE_AUTOCOMPLETE]
    begin
      require 'rdoc'
      Reline.add_dialog_proc(:show_doc, SHOW_DOC_DIALOG, Reline::DEFAULT_DIALOG_CONTEXT)
    rescue LoadError
    end
  end
end

Public Instance Methods

auto_indent(&block) click to toggle source
# File irb/input-method.rb, line 270
def auto_indent(&block)
  @auto_indent_proc = block
end
check_termination(&block) click to toggle source
# File irb/input-method.rb, line 262
def check_termination(&block)
  @check_termination_proc = block
end
dynamic_prompt(&block) click to toggle source
# File irb/input-method.rb, line 266
def dynamic_prompt(&block)
  @prompt_proc = block
end
eof?() click to toggle source

Whether the end of this input method has been reached, returns true if there is no more data to read.

See IO#eof? for more information.

# File irb/input-method.rb, line 390
def eof?
  @eof
end
gets() click to toggle source

Reads the next line from this input method.

See IO#gets for more information.

# File irb/input-method.rb, line 372
def gets
  Reline.input = @stdin
  Reline.output = @stdout
  Reline.prompt_proc = @prompt_proc
  Reline.auto_indent_proc = @auto_indent_proc if @auto_indent_proc
  if l = Reline.readmultiline(@prompt, false, &@check_termination_proc)
    Reline::HISTORY.push(l) if !l.empty?
    @line[@line_no += 1] = l + "\n"
  else
    @eof = true
    l
  end
end
inspect() click to toggle source

For debug message

# File irb/input-method.rb, line 395
def inspect
  config = Reline::Config.new
  str = "RelineInputMethod with Reline #{Reline::VERSION}"
  inputrc_path = File.expand_path(config.inputrc_path)
  str += " and #{inputrc_path}" if File.exist?(inputrc_path)
  str
end