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)
Command.settings[:argv][1..-1] = args
else
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 /^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