class Byebug::SaveCommand

def execute

def execute
  if not @match[1] or @match[1].strip.empty?
    file = open_save()
  else
    file = open(@match[1], 'w')
  end
  save_breakpoints(file)
  save_catchpoints(file)
  # save_displays(file)
  save_settings(file)
  print "Saved to '#{file.path}'\n"
  if @state and @state.interface
    @state.interface.restart_file = file.path
  end
  file.close
end

def help(cmd)

def help(cmd)
  %{
FILE]
current byebug state to FILE as a script file.
ncludes breakpoints, catchpoints, display expressions and some settings.
filename is given, we will fabricate one.
e 'source' command in another debug session to restore them.}
end

def help_command

def help_command
  'save'
end

def regexp

def regexp
  /^\s* sa(?:ve)?
    (?:\s+(.+))?
    \s*$/ix
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.keys.each do |c|
    file.puts "catch #{c}"
  end
end

def save_displays(file)

def save_displays(file)
  for d in @state.display
    if d[0]
      file.puts "display #{d[1]}"
    end
  end
end

def save_settings(file)

def save_settings(file)
  # FIXME put routine in set
  %w(autoeval basename byebugtesting).each do |setting|
    on_off = show_onoff(Command.settings[setting.to_sym])
    file.puts "set #{setting} #{on_off}"
  end
  %w(autolist autoirb).each do |setting|
    on_off = show_onoff(Command.settings[setting.to_sym] > 0)
    file.puts "set #{setting} #{on_off}"
  end
end