Module: Reline

Extended by:
Forwardable, SingleForwardable
Defined in:
lib/reline.rb,
lib/reline/io.rb,
lib/reline/version.rb

Defined Under Namespace

Modules: KeyActor, Terminfo Classes: ANSI, Config, ConfigEncodingConversionError, Core, CursorPos, DialogRenderInfo, Dumb, Face, History, IO, Key, KeyStroke, KillRing, LineEditor, Unicode, Windows

Constant Summary collapse

FILENAME_COMPLETION_PROC =

NOTE: For making compatible with the rb-readline gem

nil
USERNAME_COMPLETION_PROC =
nil
DEFAULT_DIALOG_PROC_AUTOCOMPLETE =
->() {
  # autocomplete
  return unless config.autocompletion

  journey_data = completion_journey_data
  return unless journey_data

  target = journey_data.list.first
  completed = journey_data.list[journey_data.pointer]
  result = journey_data.list.drop(1)
  pointer = journey_data.pointer - 1
  return if completed.empty? || (result == [completed] && pointer < 0)

  target_width = Reline::Unicode.calculate_width(target)
  completed_width = Reline::Unicode.calculate_width(completed)
  if cursor_pos.x <= completed_width - target_width
    # When target is rendered on the line above cursor position
    x = screen_width - completed_width
    y = -1
  else
    x = [cursor_pos.x - completed_width, 0].max
    y = 0
  end
  cursor_pos_to_render = Reline::CursorPos.new(x, y)
  if context and context.is_a?(Array)
    context.clear
    context.push(cursor_pos_to_render, result, pointer, dialog)
  end
  dialog.pointer = pointer
  DialogRenderInfo.new(
    pos: cursor_pos_to_render,
    contents: result,
    scrollbar: true,
    height: [15, preferred_dialog_height].min,
    face: :completion_dialog
  )
}
DEFAULT_DIALOG_CONTEXT =
Array.new
IOGate =
Reline::IO.decide_io_gate
GeneralIO =

Deprecated

Reline::Dumb.new
HISTORY =
Reline::History.new(Reline.core.config)
VERSION =
'0.5.9'

Class Method Summary collapse

Class Method Details

.coreObject



483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
# File 'lib/reline.rb', line 483

def self.core
  @core ||= Core.new { |core|
    core.config = Reline::Config.new
    core.key_stroke = Reline::KeyStroke.new(core.config)
    core.line_editor = Reline::LineEditor.new(core.config, core.encoding)

    core.basic_word_break_characters = " \t\n`><=;|&{("
    core.completer_word_break_characters = " \t\n`><=;|&{("
    core.basic_quote_characters = '"\''
    core.completer_quote_characters = '"\''
    core.filename_quote_characters = ""
    core.special_prefixes = ""
    core.add_dialog_proc(:autocomplete, Reline::DEFAULT_DIALOG_PROC_AUTOCOMPLETE, Reline::DEFAULT_DIALOG_CONTEXT)
  }
end

.encoding_system_needsObject



479
480
481
# File 'lib/reline.rb', line 479

def self.encoding_system_needs
  self.core.encoding
end

.insert_text(*args, &block) ⇒ Object



460
461
462
463
# File 'lib/reline.rb', line 460

def self.insert_text(*args, &block)
  line_editor.insert_text(*args, &block)
  self
end

.line_editorObject



503
504
505
# File 'lib/reline.rb', line 503

def self.line_editor
  core.line_editor
end

.ungetc(c) ⇒ Object



499
500
501
# File 'lib/reline.rb', line 499

def self.ungetc(c)
  core.io_gate.ungetc(c)
end