class Byebug::SaveCommand


Save current settings to use them in another debug session.

def self.description

def self.description
  <<-DESCRIPTION
    save[ FILE]
    #{short_description}
    Byebug state is saved as a script file. This includes breakpoints,
    catchpoints, display expressions and some settings. If no filename is
    given, byebug will fabricate one.
    Use the "source" command in another debug session to restore the saved
    file.
  DESCRIPTION
end

def self.regexp

def self.regexp
  /^\s* sa(?:ve)? (?:\s+(\S+))? \s*$/x
end

def self.short_description

def self.short_description
  "Saves current byebug session to a file"
end

def execute

def execute
  file = File.open(@match[1] || Setting[:savefile], "w")
  save_breakpoints(file)
  save_catchpoints(file)
  save_displays(file)
  save_settings(file)
  print pr("save.messages.done", path: file.path)
  file.close
end

def save_breakpoints(file)

def save_breakpoints(file)
  Byebug.breakpoints.each do |b|
    file.puts "break #{b.source}:#{b.pos}#{" if #{b.expr}" if b.expr}"
  end
end

def save_catchpoints(file)

def save_catchpoints(file)
  Byebug.catchpoints.each_key do |c|
    file.puts "catch #{c}"
  end
end

def save_displays(file)

def save_displays(file)
  Byebug.displays.each { |d| file.puts "display #{d[1]}" if d[0] }
end

def save_settings(file)

def save_settings(file)
  %w[autoirb autolist basename].each do |setting|
    file.puts "set #{setting} #{Setting[setting.to_sym]}"
  end
end