module Byebug::ShowFunctions

def show_setting(setting_name)

def show_setting(setting_name)
  case setting_name
  when /^args$/
    if Command.settings[:argv] and Command.settings[:argv].size > 0
      if defined?(Byebug::BYEBUG_SCRIPT)
        # byebug was called initially. 1st arg is script name.
        args = Command.settings[:argv][1..-1].join(' ')
      else
        # byebug wasn't called initially. 1st arg is not script name.
        args = Command.settings[:argv].join(' ')
      end
    else
      args = ''
    end
    return "Argument list to give program being debugged when it is started is \"#{args}\"."
  when /^autolist$/
    on_off = Command.settings[:autolist] > 0
    return "autolist is #{show_onoff(on_off)}."
  when /^autoeval$/
    on_off = Command.settings[:autoeval]
    return "autoeval is #{show_onoff(on_off)}."
  when /^autoreload$/
    on_off = Command.settings[:autoreload]
    return "autoreload is #{show_onoff(on_off)}."
  when /^autoirb$/
    on_off = Command.settings[:autoirb] > 0
    return "autoirb is #{show_onoff(on_off)}."
  when /^basename$/
    on_off = Command.settings[:basename]
    return "basename is #{show_onoff(on_off)}."
  when /^callstyle$/
    style = Command.settings[:callstyle]
    return "Frame call-display style is #{style}."
  when /^commands(:?\s+(\d+))?$/
    if @state.interface.readline_support?
      s = '';
      args = @match[1].split
      if args[1]
        first_line = args[1].to_i - 4
        last_line  = first_line + 10 - 1
        if first_line > Readline::HISTORY.length
          first_line = last_line = Readline::HISTORY.length
        elsif first_line <= 0
          first_line = 1
        end
        if last_line > Readline::HISTORY.length
          last_line = Readline::HISTORY.length
        end
        i = first_line
        commands = Readline::HISTORY.to_a[first_line..last_line]
      else
        if Readline::HISTORY.length > 10
          commands = Readline::HISTORY.to_a[-10..-1]
          i = Readline::HISTORY.length - 10
        else
          commands = Readline::HISTORY.to_a
          i = 1
        end
      end
      commands.each do |cmd|
        s += ("%5d  %s\n" % [i, cmd])
        i += 1
      end
    else
      s='No readline support'
    end
    return s
  when /^testing$/
    on_off = Command.settings[:testing]
    return "Currently testing byebug is #{show_onoff(on_off)}."
  when /^forcestep$/
    on_off = Command.settings[:forcestep]
    return "force-stepping is #{show_onoff(on_off)}."
  when /^fullpath$/
    on_off = Command.settings[:fullpath]
    return "Displaying frame's full file names is #{show_onoff(on_off)}."
  when /^history(:?\s+(filename|save|size))?$/
    args = @match[1].split
    interface = @state.interface
    if args[1]
      show_save = show_size = show_filename = false
      prefix = false
      if args[1] == "save"
        show_save = true
      elsif args[1] == "size"
        show_size = true
      elsif args[1] == "filename"
        show_filename = true
      end
    else
      show_save = show_size = show_filename = true
      prefix = true
    end
    s = []
    if show_filename
      msg = "#{prefix ? 'filename:' : ''} The command history file is " \
            "#{interface.histfile.inspect}"
      s << msg
    end
    if show_save
      msg = (prefix ? "save: " : "") +
        "Saving of history save is #{show_onoff(interface.history_save)}."
      s << msg
    end
    if show_size
      msg = (prefix ? "size: " : "") +
        "Byebug history size is #{interface.history_length}"
      s << msg
    end
    return s.join("\n")
  when /^linetrace$/
    on_off = Byebug.tracing?
    return "line tracing is #{show_onoff(on_off)}."
  when /^linetrace_plus$/
    if Command.settings[:linetrace_plus]
      return "line tracing style is every line."
    else
      return "line tracing style is different consecutive lines."
    end
  when /^listsize$/
    listlines = Command.settings[:listsize]
    return "Number of source lines to list is #{listlines}."
  when /^post_mortem$/
    on_off = Byebug.post_mortem?
    return "post-mortem mode is #{show_onoff(on_off)}"
  when /^stack_trace_on_error$/
    on_off = Command.settings[:stack_trace_on_error]
    return "Displaying stack trace is #{show_onoff(on_off)}."
  when /^version$/
    return "Byebug #{Byebug::VERSION}"
  when /^width$/
    return "width is #{Command.settings[:width]}."
  else
    return "Unknown show subcommand #{setting_name}."
  end
end