execute (Debugger)

    # File cli/ruby-debug/commands/set.rb, line 63
        def execute
          if not @match[1]
            print "\"set\" must be followed by the name of an set command:\n"
            print "List of set subcommands:\n\n"
            for subcmd in Subcommands do
              print "set #{subcmd.name} -- #{subcmd.short_help}\n"
            end
          else
            args = @match[1].split(/[ \t]+/)
            subcmd = args.shift
            subcmd.downcase!
            if subcmd =~ /^no/i
              set_on = false
              subcmd = subcmd[2..-1]
            else
              set_on = true
            end
            for try_subcmd in Subcommands do
              if (subcmd.size >= try_subcmd.min) and
                  (try_subcmd.name[0..subcmd.size-1] == subcmd)
                begin
                  if try_subcmd.is_bool
                    if args.size > 0
                      set_on = get_onoff(args[0])
                    end
                  end
                  case try_subcmd.name
                  when /^annotate$/
                    level = get_int(args[0], "Set annotate", 0, 3, 0)
                    if level
                      Debugger.annotate = level
                    else
                      return
                    end
                    if defined?(Debugger::RDEBUG_SCRIPT)
                      # rdebug was called initially. 1st arg is script name.
                      Command.settings[:argv][1..-1] = args
                    else
                      # rdebug wasn't called initially. 1st arg is not script name.
                      Command.settings[:argv] = args
                    end
                  when /^args$/
                    Command.settings[:argv][1..-1] = args
                  when /^autolist$/
                    Command.settings[:autolist] = (set_on ? 1 : 0)
                  when /^autoeval$/
                    Command.settings[:autoeval] = set_on
                  when /^basename$/
                    Command.settings[:basename] = set_on
                  when /^callstyle$/
                    if args[0]
                      arg = args[0].downcase.to_sym
                      case arg
                      when :short, :last, :tracked
                        Command.settings[:callstyle] = arg
                        Debugger.track_frame_args = arg == :tracked ? true : false
                        print "%s\n" % show_setting(try_subcmd.name)
                        return
                      end
                    end
                    print "Invalid call style #{arg}. Should be one of: " +
                      "'short', 'last', or 'tracked'.\n"
                  when /^trace$/
                    Command.settings[:stack_trace_on_error] = set_on
                  when /^fullpath$/
                    Command.settings[:full_path] = set_on
                  when /^autoreload$/
                    Command.settings[:reload_source_on_change] = set_on
                  when /^autoirb$/
                    Command.settings[:autoirb] = (set_on ? 1 : 0)
                  when /^debuggertesting$/
                    Command.settings[:debuggertesting] = set_on
                    if set_on
                      Command.settings[:basename] = true
                    end
                  when /^forcestep$/
                    self.class.settings[:force_stepping] = set_on
                  when /^history$/
                    if 2 == args.size
                      interface = @state.interface
                      case args[0]
                      when /^save$/
                        interface.history_save = get_onoff(args[1])
                      when /^size$/
                        interface.history_length = get_int(args[1],
                                                           "Set history size")
                      else
                        print "Invalid history parameter #{args[0]}. Should be 'save' or 'size'.\n"
                      end
                    else
                      print "Need two parameters for 'set history'; got #{args.size}.\n"
                      return
                    end
                  when /^keep-frame-bindings$/
                    Debugger.keep_frame_binding = set_on
                  when /^linetrace\+$/
                    self.class.settings[:tracing_plus] = set_on
                  when /^linetrace$/
                    Debugger.tracing = set_on
                  when /^listsize$/
                    listsize = get_int(args[0], "Set listsize", 1, nil, 10)
                    if listsize
                      self.class.settings[:listsize] = listsize
                    else
                      return
                    end
    #               when /^post-mortem$/
    #                 unless Debugger.post_mortem? == set_on
    #                   if set_on
    #                     Debugger.post_mortem
    #                   else
    #                     errmsg "Can't turn off post-mortem once it is on.\n"
    #                     return
    #                   end
    #                 end
                  when /^width$/
                    width = get_int(args[0], "Set width", 10, nil, 80)
                    if width
                      self.class.settings[:width] = width
                      ENV['COLUMNS'] = width.to_s
                    else
                      return
                    end
                  else
                    print "Unknown setting #{@match[1]}.\n"
                    return
                  end
                  print "%s\n" % show_setting(try_subcmd.name)
                  return
                rescue RuntimeError
                  return
                end
              end
            end
            print "Unknown set command #{subcmd}\n"
          end
        end