class Byebug::SetCommand
Implements byebug “set” command.
def execute
def execute # "Set" alone just prints subcommands return print_subcmds(Subcommands) unless @match[1] args = @match[1].split(/[ \t]+/) try_subcmd = args.shift try_subcmd.downcase! if try_subcmd =~ /^no/i set_on = false try_subcmd = try_subcmd[2..-1] else set_on = true end subcmd = find(Subcommands, try_subcmd) # Subcommand not found... return print "Unknown set command \"#{try_subcmd}\"\n" unless subcmd set_on = get_onoff(args[0]) if subcmd.is_bool and args.size > 0 case subcmd.name when /^annotate$/ level = get_int(args[0], "Set annotate", 0, 3, 0) if level Byebug.annotate = level else return end if defined?(Byebug::RDEBUG_SCRIPT) # byebug was called initially. 1st arg is script name. Command.settings[:argv][1..-1] = args else # byebug 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 else print "Invalid call style #{arg}. Should be one of: " \ "'short', 'last' or 'tracked'.\n" end end 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 /^byebugtesting$/ Command.settings[:byebugtesting] = 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") when /^filename$/ interface.histfile = File.join(ENV["HOME"]||ENV["HOMEPATH"]||".", args[1]) else print "Invalid history parameter #{args[0]}. Should be " \ "'filename', 'save' or 'size'.\n" end else print "Need two parameters for 'set history'; got " \ "#{args.size}.\n" return end when /^linetrace\+$/ self.class.settings[:tracing_plus] = set_on when /^linetrace$/ Command.settings[: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 return print "Unknown setting #{@match[1]}.\n" end return print "#{show_setting(subcmd.name)}\n" end
def help(args)
def help(args) # specific subcommand help if args[1] subcmd = find(Subcommands, args[1]) return "Invalid \"set\" subcommand \"#{args[1]}\"." unless subcmd str = subcmd.short_help + '.' str += "\n" + subcmd.long_help if subcmd.long_help return str end # general help s = %{ Modifies parts of byebug environment. Boolean values take on, off, 1 or 0. You can see these environment settings with the \"show\" command. -- List of set subcommands: -- } for subcmd in Subcommands do s += "set #{subcmd.name} -- #{subcmd.short_help}\n" end return s end
def help_command
def help_command "set" end
def regexp
def regexp /^set (?: \s+ (.*) )?$/ix end