class Byebug::SkipCommand


long as it is different from the current one
Allows the user to continue execution until the next breakpoint, as

def self.description

def self.description
  <<-DESCRIPTION
    sk[ip]
    #{short_description}
  DESCRIPTION
end

def self.regexp

def self.regexp
  /^\s* sk(?:ip)? \s*$/x
end

def self.short_description

def self.short_description
  "Runs until the next breakpoint as long as it is different from the current one"
end

def auto_run

def auto_run
  return false unless self.class.always_run == 2
  keep_execution ? processor.proceed! : reset_attributes
  true
end

def execute

def execute
  return if auto_run
  initialize_attributes
  processor.proceed!
  Byebug.stop if Byebug.stoppable?
end

def file_line

def file_line
  @file_line ||= 0
end

def file_path

def file_path
  @file_path ||= ""
end

def initialize_attributes

def initialize_attributes
  self.class.always_run = 2
  self.class.setup_autolist(0)
  self.class.file_path = frame.file
  self.class.file_line = frame.line
end

def keep_execution

def keep_execution
  [self.class.file_path, self.class.file_line] == [frame.file, frame.line]
end

def reset_attributes

def reset_attributes
  self.class.always_run = 0
  ListCommand.new(processor).execute if self.class.previous_autolist == 1
  self.class.restore_autolist
end

def restore_autolist

def restore_autolist
  ListCommand.always_run = @previous_autolist
  @previous_autolist = nil
end

def setup_autolist(value)

def setup_autolist(value)
  @previous_autolist = ListCommand.always_run
  ListCommand.always_run = value
end