class Byebug::CommandProcessor


@see PostMortemProcessor for a example
example, whitelists only certain commands to be executed.
You can override this class to create your own command processor that, for
Processes commands in regular mode.

def after_repl

def after_repl
  interface.autosave
end

def at_breakpoint(brkpt)

def at_breakpoint(brkpt)
  number = Byebug.breakpoints.index(brkpt) + 1
  puts "Stopped by breakpoint #{number} at #{frame.file}:#{frame.line}"
end

def at_catchpoint(exception)

def at_catchpoint(exception)
  puts "Catchpoint at #{context.location}: `#{exception}'"
end

def at_end

def at_end
  process_commands
end

def at_line

def at_line
  process_commands
end

def at_return(return_value)

def at_return(return_value)
  puts "Return value is: #{safe_inspect(return_value)}"
  process_commands
end

def at_tracing

def at_tracing
  puts "Tracing: #{context.full_location}"
  run_auto_cmds(2)
end

def auto_cmds_for(run_level)

def auto_cmds_for(run_level)
  command_list.select { |cmd| cmd.always_run >= run_level }
end

def before_repl

def before_repl
  @proceed = false
  @prev_line = nil
  run_auto_cmds(1)
  interface.autorestore
end

def command_list


Available commands
def command_list
  @command_list ||= CommandList.new(commands)
end

def initialize(context, interface = LocalInterface.new)

def initialize(context, interface = LocalInterface.new)
  @context = context
  @interface = interface
  @proceed = false
  @prev_line = nil
end

def printer

def printer
  @printer ||= Printers::Plain.new
end

def proceed!


Let the execution continue
def proceed!
  @proceed = true
end

def process_commands


Handle byebug commands.
def process_commands
  before_repl
  repl
ensure
  after_repl
end

def prompt


Prompt shown before reading a command.
def prompt
  "(byebug) "
end

def repl


Main byebug's REPL
def repl
  until @proceed
    cmd = interface.read_command(prompt)
    return if cmd.nil?
    next if cmd == ""
    run_cmd(cmd)
  end
end

def run_auto_cmds(run_level)


Run permanent commands.
def run_auto_cmds(run_level)
  safely do
    auto_cmds_for(run_level).each { |cmd| cmd.new(self).execute }
  end
end

def run_cmd(input)


command is not found, it evaluates the unknown input.
Instantiates a command matching the input and runs it. If a matching

Executes the received input
def run_cmd(input)
  safely do
    command = command_list.match(input)
    return command.new(self, input).execute if command
    puts safe_inspect(multiple_thread_eval(input))
  end
end

def safely

def safely
  yield
rescue StandardError => e
  errmsg(e.message)
end