class IRB::Irb

def output_value(omit = false) # :nodoc:

:nodoc:
def output_value(omit = false) # :nodoc:
  str = @context.inspect_last_value
  multiline_p = str.include?("\n")
  if omit
    winwidth = @context.io.winsize.last
    if multiline_p
      first_line = str.split("\n").first
      result = @context.newline_before_multiline_output? ? (@context.return_format % first_line) : first_line
      output_width = Reline::Unicode.calculate_width(result, true)
      diff_size = output_width - Reline::Unicode.calculate_width(first_line, true)
      if diff_size.positive? and output_width > winwidth
        lines, _ = Reline::Unicode.split_by_width(first_line, winwidth - diff_size - 3)
        str = "%s..." % lines.first
        str += "\e[0m" if Color.colorable?
        multiline_p = false
      else
        str = str.gsub(/(\A.*?\n).*/m, "\\1...")
        str += "\e[0m" if Color.colorable?
      end
    else
      output_width = Reline::Unicode.calculate_width(@context.return_format % str, true)
      diff_size = output_width - Reline::Unicode.calculate_width(str, true)
      if diff_size.positive? and output_width > winwidth
        lines, _ = Reline::Unicode.split_by_width(str, winwidth - diff_size - 3)
        str = "%s..." % lines.first
        str += "\e[0m" if Color.colorable?
      end
    end
  end
  if multiline_p && @context.newline_before_multiline_output?
    printf @context.return_format, "\n#{str}"
  else
    printf @context.return_format, str
  end
end