-
Notifications
You must be signed in to change notification settings - Fork 2
/
undisplay.rb
63 lines (54 loc) · 1.56 KB
/
undisplay.rb
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
52
53
54
55
56
57
58
59
60
61
62
63
# -*- coding: utf-8 -*-
# Copyright (C) 2010, 2011 Rocky Bernstein <rockyb@rubyforge.net>
require 'rubygems'; require 'require_relative'
require_relative '../command'
# undisplay display-number...
class Trepan::Command::UndisplayCommand < Trepan::Command
unless defined?(HELP)
NAME = File.basename(__FILE__, '.rb')
HELP = <<EOH
#{NAME} DISPLAY_NUMBER ...
Cancel some expressions to be displayed when program stops.
Arguments are the code numbers of the expressions to stop displaying.
No argument means cancel all automatic-display expressions.
"delete display" has the same effect as this command.
Use "info display" to see current list of display numbers.
EOH
CATEGORY = 'data'
NEED_STACK = false
SHORT_HELP = 'Cancel some expressions to be displayed when program stops'
end
def complete(prefix)
@proc.displays.nums.map{|disp| disp.to_s}
end
def run(args)
if args.size == 1
if confirm('Delete all displays?', false)
@proc.displays.clear
return
end
end
opts = {}
args[1..-1].each do |arg|
opts = {:msg_on_error => '%s must be a display number' % arg}
i = @proc.get_an_int(arg, opts)
if i
unless @proc.displays.delete_index(i)
errmsg("No display number %d." % i)
return
end
end
end
end
end
if __FILE__ == $0
# demo it.
require_relative '../mock'
dbgr, cmd = MockDebugger::setup
def run_cmd(cmd, args)
cmd.run(args)
puts '==' * 10
end
run_cmd(cmd, %W(#{cmd.name} z))
run_cmd(cmd, %W(#{cmd.name} 1 10))
end