1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
# frozen_string_literal: true
require_relative "../command"
require_relative "../helpers/parse"
module Byebug
#
# Remove expressions from display list.
#
class UndisplayCommand < Command
include Helpers::ParseHelper
self.allow_in_post_mortem = true
def self.regexp
/^\s* undisp(?:lay)? (?:\s+(\S+))? \s*$/x
end
def self.description
<<-DESCRIPTION
undisp[lay][ nnn]
#{short_description}
Arguments are the code numbers of the expressions to stop displaying. No
argument means cancel all automatic-display expressions. Type "info
display" to see the current list of code numbers.
DESCRIPTION
end
def self.short_description
"Stops displaying all or some expressions when program stops"
end
def execute
if @match[1]
pos, err = get_int(@match[1], "Undisplay", 1, Byebug.displays.size)
return errmsg(err) unless err.nil?
last_display = Byebug.displays[pos - 1]
return errmsg(pr("display.errors.undefined", expr: pos)) unless last_display
last_display[0] = nil
else
return unless confirm(pr("display.confirmations.clear_all"))
Byebug.displays.each { |d| d[0] = false }
end
end
end
end
|