byebug 3.0.0 → 3.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (125) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +15 -0
  3. data/GUIDE.md +2 -2
  4. data/LICENSE +3 -3
  5. data/README.md +5 -4
  6. data/byebug.gemspec +1 -1
  7. data/ext/byebug/byebug.c +20 -19
  8. data/lib/byebug.rb +2 -53
  9. data/lib/byebug/command.rb +9 -109
  10. data/lib/byebug/commands/breakpoints.rb +1 -1
  11. data/lib/byebug/commands/control.rb +20 -21
  12. data/lib/byebug/commands/display.rb +2 -3
  13. data/lib/byebug/commands/eval.rb +6 -16
  14. data/lib/byebug/commands/finish.rb +1 -1
  15. data/lib/byebug/commands/frame.rb +9 -9
  16. data/lib/byebug/commands/help.rb +2 -3
  17. data/lib/byebug/commands/history.rb +28 -0
  18. data/lib/byebug/commands/info.rb +3 -3
  19. data/lib/byebug/commands/list.rb +2 -13
  20. data/lib/byebug/commands/method.rb +5 -45
  21. data/lib/byebug/commands/reload.rb +1 -12
  22. data/lib/byebug/commands/repl.rb +6 -15
  23. data/lib/byebug/commands/save.rb +2 -7
  24. data/lib/byebug/commands/set.rb +45 -116
  25. data/lib/byebug/commands/show.rb +22 -126
  26. data/lib/byebug/commands/stepping.rb +1 -1
  27. data/lib/byebug/commands/trace.rb +14 -25
  28. data/lib/byebug/commands/variables.rb +3 -41
  29. data/lib/byebug/helper.rb +11 -42
  30. data/lib/byebug/history.rb +5 -13
  31. data/lib/byebug/processors/command_processor.rb +6 -6
  32. data/lib/byebug/setting.rb +82 -0
  33. data/lib/byebug/settings/autoeval.rb +20 -0
  34. data/lib/byebug/settings/autoirb.rb +19 -0
  35. data/lib/byebug/settings/autolist.rb +19 -0
  36. data/lib/byebug/settings/autoreload.rb +11 -0
  37. data/lib/byebug/settings/autosave.rb +11 -0
  38. data/lib/byebug/settings/basename.rb +7 -0
  39. data/lib/byebug/settings/callstyle.rb +15 -0
  40. data/lib/byebug/settings/forcestep.rb +11 -0
  41. data/lib/byebug/settings/fullpath.rb +11 -0
  42. data/lib/byebug/settings/histfile.rb +16 -0
  43. data/lib/byebug/settings/histsize.rb +18 -0
  44. data/lib/byebug/settings/linetrace.rb +15 -0
  45. data/lib/byebug/settings/listsize.rb +15 -0
  46. data/lib/byebug/settings/post_mortem.rb +15 -0
  47. data/lib/byebug/settings/stack_on_error.rb +7 -0
  48. data/lib/byebug/settings/testing.rb +7 -0
  49. data/lib/byebug/settings/tracing_plus.rb +7 -0
  50. data/lib/byebug/settings/verbose.rb +7 -0
  51. data/lib/byebug/settings/width.rb +29 -0
  52. data/lib/byebug/version.rb +1 -1
  53. data/test/breakpoints_test.rb +345 -324
  54. data/test/conditions_test.rb +61 -48
  55. data/test/continue_test.rb +38 -27
  56. data/test/debugger_alias_test.rb +5 -3
  57. data/test/display_test.rb +103 -92
  58. data/test/edit_test.rb +42 -34
  59. data/test/eval_test.rb +91 -75
  60. data/test/finish_test.rb +51 -40
  61. data/test/frame_test.rb +197 -184
  62. data/test/help_test.rb +47 -38
  63. data/test/history_test.rb +54 -0
  64. data/test/info_test.rb +306 -293
  65. data/test/interrupt_test.rb +44 -38
  66. data/test/kill_test.rb +40 -31
  67. data/test/list_test.rb +166 -133
  68. data/test/method_test.rb +67 -60
  69. data/test/post_mortem_test.rb +56 -48
  70. data/test/quit_test.rb +44 -35
  71. data/test/reload_test.rb +36 -24
  72. data/test/repl_test.rb +57 -47
  73. data/test/restart_test.rb +56 -69
  74. data/test/save_test.rb +62 -53
  75. data/test/set_test.rb +140 -118
  76. data/test/show_test.rb +68 -201
  77. data/test/source_test.rb +39 -29
  78. data/test/stepping_test.rb +163 -136
  79. data/test/support/test_dsl.rb +9 -11
  80. data/test/test_helper.rb +2 -7
  81. data/test/thread_test.rb +121 -107
  82. data/test/trace_test.rb +86 -83
  83. data/test/variables_test.rb +104 -98
  84. metadata +27 -86
  85. data/test/examples/breakpoint.rb +0 -6
  86. data/test/examples/breakpoint_deep.rb +0 -4
  87. data/test/examples/conditions.rb +0 -4
  88. data/test/examples/continue.rb +0 -5
  89. data/test/examples/display.rb +0 -5
  90. data/test/examples/edit.rb +0 -4
  91. data/test/examples/eval.rb +0 -4
  92. data/test/examples/finish.rb +0 -3
  93. data/test/examples/frame.rb +0 -4
  94. data/test/examples/frame_deep.rb +0 -1
  95. data/test/examples/gcd.rb +0 -15
  96. data/test/examples/hanoi.rb +0 -34
  97. data/test/examples/help.rb +0 -1
  98. data/test/examples/info.rb +0 -6
  99. data/test/examples/info2.rb +0 -3
  100. data/test/examples/interrupt.rb +0 -8
  101. data/test/examples/kill.rb +0 -2
  102. data/test/examples/list.rb +0 -23
  103. data/test/examples/method.rb +0 -4
  104. data/test/examples/post_mortem.rb +0 -4
  105. data/test/examples/primes.rb +0 -25
  106. data/test/examples/quit.rb +0 -2
  107. data/test/examples/reload.rb +0 -6
  108. data/test/examples/repl.rb +0 -6
  109. data/test/examples/restart.rb +0 -6
  110. data/test/examples/save.rb +0 -3
  111. data/test/examples/set.rb +0 -3
  112. data/test/examples/settings.rb +0 -1
  113. data/test/examples/show.rb +0 -1
  114. data/test/examples/source.rb +0 -3
  115. data/test/examples/stepping.rb +0 -8
  116. data/test/examples/stepping_raise_from_c_method.rb +0 -3
  117. data/test/examples/stepping_raise_from_ruby_method.rb +0 -3
  118. data/test/examples/test-triangle.rb +0 -14
  119. data/test/examples/thread.rb +0 -5
  120. data/test/examples/tmate.rb +0 -10
  121. data/test/examples/trace.rb +0 -8
  122. data/test/examples/tri3.rb +0 -6
  123. data/test/examples/triangle.rb +0 -13
  124. data/test/examples/variables.rb +0 -4
  125. data/test/timeout_test.rb +0 -9
@@ -1,132 +1,44 @@
1
1
  module Byebug
2
2
 
3
- # Mix-in module to setting settings
4
- module SetFunctions
5
-
6
- def set_setting(setting_name, setting_value, setting_args)
7
- case setting_name
8
- when /^args$/
9
- if defined?(Byebug::BYEBUG_SCRIPT)
10
- Command.settings[:argv][1..-1] = setting_args
11
- else
12
- Command.settings[:argv] = setting_args
13
- end
14
- when /^autoirb$/
15
- Command.settings[:autoirb] = (setting_value ? 1 : 0)
16
- when /^autolist$/
17
- Command.settings[:autolist] = (setting_value ? 1 : 0)
18
- when /^callstyle$/
19
- if setting_args[0] and ['short', 'long'].include?(setting_args[0])
20
- Command.settings[:callstyle] = setting_args[0].to_sym
21
- else
22
- print "Invalid callstyle. Should be one of: \"short\" or \"long\"\n"
23
- end
24
- when /^verbose$/
25
- Byebug.verbose = setting_value
26
- when /^histfile$/
27
- return print 'You need to specify a filename' unless setting_args[0]
28
- Byebug::History.file = File.expand_path(setting_args[0])
29
- when /^histsize$/
30
- return print 'You need to specify the history size' unless setting_args[0]
31
- Byebug::History.max_size = get_int(setting_args[0], "Set histsize")
32
- when /^linetrace$/
33
- Byebug.tracing = setting_value
34
- when /^listsize$/
35
- listsize = get_int(setting_args[0], 'Set listsize', 1, nil, 10)
36
- return unless listsize
37
- Command.settings[:listsize] = listsize
38
- when /^width$/
39
- return unless width = get_int(setting_args[0], 'Set width', 10, nil, 80)
40
- Command.settings[:width] = width
41
- when /^post_mortem$/
42
- if setting_value == true
43
- Byebug.post_mortem
44
- else
45
- Byebug.post_mortem = false
46
- end
47
- when /^autoeval|autoreload|autosave|basename|forcestep|fullpath|
48
- linetrace_plus|testing|stack_on_error$/x
49
- Command.settings[setting_name.to_sym] = setting_value
50
- else
51
- return print "Unknown setting #{@match[1]}.\n"
52
- end
53
- end
54
- end
55
-
56
3
  # Implements byebug "set" command.
57
4
  class SetCommand < Command
58
- Subcmd2 = Struct.new(:name, :min, :is_bool, :help) unless defined?(Subcmd2)
59
-
60
- Subcommands = [
61
- ['args' , 2 , false, 'Set argument list to the program ' \
62
- 'being debugged when it is started' ],
63
- ['autoeval' , 5 , true , 'Evaluate every unrecognized command' ],
64
- ['autolist' , 5 , true , 'Execute "list" command on every ' \
65
- 'breakpoint' ],
66
- ['autoirb' , 5 , true , 'Invoke IRB on every stop' ],
67
- ['autoreload' , 5 , true , 'Reload source code when changed' ],
68
- ['autosave' , 5 , true , 'Automatically save command history ' \
69
- 'record on exit' ],
70
- ['basename' , 1 , true , 'Set filename display style' ],
71
- ['callstyle' , 2 , false, 'Set how you want call parameters ' \
72
- 'displayed' ],
73
- ['forcestep' , 2 , true , 'Make sure "next/step" commands always' \
74
- 'move to a new line' ],
75
- ['fullpath' , 2 , true , 'Display full file names in frames' ],
76
- ['histfile' , 5 , false, 'Customize file where history is ' \
77
- 'loaded from and saved to. By ' \
78
- 'default, .byebug_hist' ],
79
- ['histsize' , 5 , false, 'Customize maximum number of commands ' \
80
- 'that are stored in byebug history ' \
81
- 'record. By default, 256' ],
82
- ['linetrace' , 3 , true , 'Enable line execution tracing' ],
83
- ['linetrace_plus', 10, true , 'Set line execution tracing to show' \
84
- 'different lines' ],
85
- ['listsize' , 3 , false, 'Set number of source lines to list by' \
86
- 'default' ],
87
- ['post_mortem' , 2 , true , 'Enable post-mortem mode' ],
88
- ['stack_on_error', 1 , true , 'Display stack trace when "eval" ' \
89
- 'raises exception' ],
90
- ['testing' , 2 , false, 'Used when testing byebug' ],
91
- ['verbose' , 1 , true , 'Enable verbose output of TracePoint ' \
92
- 'API events is enabled' ],
93
- ['width' , 1 , false, 'Number of characters per line for ' \
94
- 'byebug\'s output' ]
95
- ].map do |name, min, is_bool, help|
96
- Subcmd2.new(name, min, is_bool, help)
97
- end unless defined?(Subcommands)
98
-
99
5
  self.allow_in_control = true
100
6
 
101
7
  def regexp
102
- /^\s* set (?:\s+(.*))? \s*$/x
8
+ /^\s* set (?:\s+(?<setting>\w+))? (?:\s+(?<value>\S+))? \s*$/x
103
9
  end
104
10
 
105
11
  def execute
106
- return print SetCommand.help(nil) if SetCommand.names.include?(@match[0])
107
-
108
- args = @match[1].split(/[ \t]+/)
109
- try_subcmd = args.shift
110
- try_subcmd.downcase!
111
- if try_subcmd =~ /^no/i
112
- set_on = false
113
- try_subcmd = try_subcmd[2..-1]
114
- else
115
- set_on = true
116
- end
12
+ key, value = @match[:setting], @match[:value]
13
+ return print SetCommand.help if key.nil? && value.nil?
117
14
 
118
- subcmd = Command.find(Subcommands, try_subcmd)
119
- return print "Unknown set command \"#{try_subcmd}\"\n" unless subcmd
15
+ full_key = Setting.find(key)
16
+ return print "Unknown setting :#{key}\n" unless full_key
120
17
 
121
- begin
122
- set_on = get_onoff(args[0]) if subcmd.is_bool and args.size > 0
123
- rescue RuntimeError
124
- return
18
+ if !Setting.boolean?(full_key) && value.nil?
19
+ return print "You must specify a value for setting :#{key}\n"
20
+ elsif Setting.boolean?(full_key)
21
+ value = get_onoff(value, key =~ /^no/ ? false : true)
22
+ elsif Setting.integer?(full_key)
23
+ return unless value = get_int(value, full_key, 1, 300)
125
24
  end
126
25
 
127
- set_setting(subcmd.name, set_on, args)
26
+ Setting[full_key.to_sym] = value
27
+
28
+ return print Setting.settings[full_key.to_sym].to_s
29
+ end
128
30
 
129
- return print "#{show_setting(subcmd.name)}\n"
31
+ def get_onoff(arg, default)
32
+ return default if arg.nil?
33
+ case arg
34
+ when '1', 'on'
35
+ return true
36
+ when '0', 'off'
37
+ return false
38
+ else
39
+ print "Expecting 'on', 1, 'off', or 0. Got: #{arg}.\n"
40
+ raise RuntimeError
41
+ end
130
42
  end
131
43
 
132
44
  class << self
@@ -135,8 +47,25 @@ module Byebug
135
47
  end
136
48
 
137
49
  def description
138
- %{Modifies parts of byebug environment. Boolean values take on, off, 1
139
- or 0. You can see these environment settings with the "show" command.}
50
+ <<-EOD.gsub(/^ /, '')
51
+
52
+ set <setting> <value>
53
+
54
+ Modifies parts of byebug environment.
55
+
56
+ Boolean values take "on", "off", "true", "false", "1" or "0". If you
57
+ don't specify a value, the boolean setting will be enabled.
58
+ Conversely, you can use "set no<setting> to disable them.
59
+
60
+ You can see these environment settings with the "show" command.
61
+
62
+ EOD
63
+ end
64
+
65
+ def help(setting = nil)
66
+ return "set #{setting.to_sym} <value>\n\n#{setting.help}" if setting
67
+
68
+ description + Setting.format()
140
69
  end
141
70
  end
142
71
  end
@@ -1,139 +1,22 @@
1
1
  module Byebug
2
2
 
3
- # Mix-in module to showing settings
4
- module ShowFunctions
5
-
6
- def show_setting(setting_name)
7
- case setting_name
8
- when /^args$/
9
- if Command.settings[:argv] and Command.settings[:argv].size > 0
10
- if defined?(Byebug::BYEBUG_SCRIPT)
11
- # byebug was called initially. 1st arg is script name.
12
- args = Command.settings[:argv][1..-1].join(' ')
13
- else
14
- # byebug wasn't called initially. 1st arg is not script name.
15
- args = Command.settings[:argv].join(' ')
16
- end
17
- else
18
- args = ''
19
- end
20
- "Argument list to give program being debugged when it is started is \"#{args}\"."
21
- when /^autolist$/
22
- "autolist is #{show_onoff(Command.settings[:autolist] > 0)}."
23
- when /^autoirb$/
24
- "autoirb is #{show_onoff(Command.settings[:autoirb] > 0)}."
25
- when /^autosave$/
26
- "Saving history is #{show_onoff(Command.settings[:autosave])}."
27
- when /^callstyle$/
28
- "Frame call-display style is #{Command.settings[:callstyle]}."
29
- when /^commands(:?\s+(\d+))?$/
30
- if Command.settings[:autosave]
31
- history = Byebug::History
32
- args = @match[1].split
33
- if args[1]
34
- size = get_int(args[1], 'show commands', 1, history.max_size)
35
- end
36
- size ? history.to_s(size) : history.to_s
37
- else
38
- 'Not currently saving history. Enable it with "set autosave"'
39
- end
40
- when /^testing$/
41
- "Currently testing byebug is #{show_onoff(Command.settings[:testing])}."
42
- when /^forcestep$/
43
- "force-stepping is #{show_onoff(Command.settings[:forcestep])}."
44
- when /^fullpath$/
45
- "Displaying frame's full file names is #{show_onoff(Command.settings[:fullpath])}."
46
- when /^histfile$/
47
- "The command history file is \"#{Byebug::History.file}\""
48
- when /^histsize$/
49
- "Byebug history's maximum size is #{Byebug::History.max_size}"
50
- when /^linetrace$/
51
- "line tracing is #{show_onoff(Byebug.tracing?)}."
52
- when /^linetrace_plus$/
53
- if Command.settings[:linetrace_plus]
54
- 'line tracing style is every line.'
55
- else
56
- 'line tracing style is different consecutive lines.'
57
- end
58
- when /^listsize$/
59
- "Number of source lines to list is #{Command.settings[:listsize]}."
60
- when /^post_mortem$/
61
- "Post-mortem mode is #{show_onoff(Byebug.post_mortem?)}"
62
- when /^stack_on_error$/
63
- "Displaying stack trace is #{show_onoff(Command.settings[:stack_on_error])}."
64
- when /^verbose$/
65
- "Verbose output of TracePoint API events is #{show_onoff(Byebug.verbose)}."
66
- when /^version$/
67
- "Byebug #{Byebug::VERSION}"
68
- when /^width$/
69
- "Width is #{Command.settings[:width]}."
70
- when /^autoeval|autoreload|basename$/x
71
- "#{setting_name} is #{show_onoff(Command.settings[setting_name.to_sym])}."
72
- else
73
- "Unknown show subcommand #{setting_name}."
74
- end
75
- end
76
- end
77
-
78
3
  # Implements byebug "show" command.
79
4
  class ShowCommand < Command
80
-
81
- Subcommands = [
82
- ['args' , 2 , 'Show argument list to the program being ' \
83
- 'debugged when it is started' ],
84
- ['autoeval' , 5 , 'Show whether unrecognized commands are ' \
85
- 'evaluated' ],
86
- ['autolist' , 5 , 'Show whether "list" command is run on stopping' ],
87
- ['autoirb' , 5 , 'Show whether IRB is invoked on stopping' ],
88
- ['autoreload' , 5 , 'Show whether source code is reloaded when ' \
89
- 'changed' ],
90
- ['autosave' , 5 , 'Show whether command history is ' \
91
- 'automatically saved on exit' ],
92
- ['basename' , 1 , 'Show whether basename is used when reporting' \
93
- ' files' ],
94
- ['callstyle' , 2 , 'Show parameter style used when showing call' \
95
- ' frames' ],
96
- ['commands' , 2 , 'Show the history of commands you typed. You ' \
97
- 'can supply a command number to start with' ],
98
- ['forcestep' , 1 , 'Show whether "next/step" commands are set to' \
99
- ' always move to a line' ],
100
- ['fullpath' , 2 , 'Show whether full paths are displayed in frames'],
101
- ['histfile' , 5 , 'File where byebug save history of commands' ],
102
- ['histsize' , 5 , 'Maximum number of commands stored in ' \
103
- 'byebug\'s history' ],
104
- ['linetrace' , 3 , 'Show line execution tracing status' ],
105
- ['linetrace_plus', 10, 'Show whether different consecutive lines are' \
106
- ' shown in tracing' ],
107
- ['listsize' , 3 , 'Show number of source lines to list by default' ],
108
- ['post_mortem' , 3 , 'Show whether we should go into post-mortem ' \
109
- 'debugging on an uncaught exception' ],
110
- ['stack_on_error', 1 , 'Show whether a stack trace is displayed when' \
111
- ' "eval" raises an exception' ],
112
- ['verbose' , 4 , 'Show whether verbose output for debugging ' \
113
- 'byebug itself is enabled' ],
114
- ['version' , 1 , 'Show byebug\'s version' ],
115
- ['width' , 1 , 'Show the number of characters per line for ' \
116
- 'byebug' ]
117
- ].map do |name, min, help|
118
- Subcmd.new(name, min, help)
119
- end unless defined?(Subcommands)
120
-
121
5
  self.allow_in_control = true
122
6
 
123
7
  def regexp
124
- /^\s* show (?:\s+(.+))? \s*$/x
8
+ /^\s* show (?:\s+(?<setting>\w+))? \s*$/x
125
9
  end
126
10
 
127
11
  def execute
128
- return print ShowCommand.help(nil) unless @match[1]
12
+ key = @match[:setting]
13
+ return print ShowCommand.help if key.nil?
129
14
 
130
- args = @match[1].split(/[ \t]+/)
131
- param = args.shift
132
- subcmd = Command.find(Subcommands, param)
133
- if subcmd
134
- print "%s\n" % show_setting(subcmd.name)
15
+ full_key = Setting.find(key)
16
+ if full_key
17
+ print Setting.settings[full_key.to_sym].to_s
135
18
  else
136
- print "Unknown show command #{param}\n"
19
+ print "Unknown setting :#{key}\n"
137
20
  end
138
21
  end
139
22
 
@@ -143,9 +26,22 @@ module Byebug
143
26
  end
144
27
 
145
28
  def description
146
- %{Generic command for showing things about byebug.}
29
+ <<-EOD.gsub(/^ /, '')
30
+
31
+ show <setting> <value>
32
+
33
+ Generic command for showing byebug settings. You can change them with
34
+ the "set" command.
35
+
36
+ EOD
147
37
  end
148
- end
149
38
 
39
+ def help(setting = nil)
40
+ return "show #{setting.to_sym} <value>\n\n#{setting.help}" if setting
41
+
42
+ description + Setting.format()
43
+ end
44
+ end
150
45
  end
46
+
151
47
  end
@@ -4,7 +4,7 @@ module Byebug
4
4
  module SteppingFunctions
5
5
  def parse_stepping_args(command_name, match)
6
6
  if match[1].nil?
7
- force = Command.settings[:forcestep]
7
+ force = Setting[:forcestep]
8
8
  elsif match[1] == '+'
9
9
  force = true
10
10
  elsif match[1] == '-'
@@ -2,36 +2,26 @@ module Byebug
2
2
 
3
3
  class TraceCommand < Command
4
4
  def regexp
5
- /^\s* tr(?:ace)? (?: \s+ (\S+)) # on | off | var(iable)
6
- (?: \s+ (\S+))? # (variable-name)?
7
- (?: \s+ (\S+))? # (stop | nostop)?
5
+ /^\s* tr(?:acevar)? (?: \s+ (\S+))? # (variable-name)?
6
+ (?: \s+ (\S+))? # (stop | nostop)?
8
7
  \s*$/x
9
8
  end
10
9
 
11
10
  def execute
12
- if @match[1] =~ /on|off/
13
- onoff = 'on' == @match[1]
14
- Byebug.tracing = onoff
15
- print "#{show_setting('linetrace')}\n"
16
- elsif @match[1] =~ /var(?:iable)?/
17
- varname = @match[2]
18
- if global_variables.include?("$#{varname}".to_sym)
19
- if @match[3] && @match[3] !~ /(:?no)?stop/
20
- errmsg "expecting \"stop\" or \"nostop\"; got \"#{@match[3]}\"\n"
21
- else
22
- dbg_cmd = (@match[3] && @match[3] !~ /nostop/) ? 'byebug(1, false)' : ''
23
- end
24
- eval("trace_var(:\"\$#{varname}\") do |val|
25
- print \"traced global variable '#{varname}' has value '\#{val}'\"\n
26
- #{dbg_cmd}
27
- end")
28
- print "Tracing global variable \"#{varname}\".\n"
11
+ varname = @match[1]
12
+ if global_variables.include?("$#{varname}".to_sym)
13
+ if @match[2] && @match[2] !~ /(:?no)?stop/
14
+ errmsg "expecting \"stop\" or \"nostop\"; got \"#{@match[2]}\"\n"
29
15
  else
30
- errmsg "'#{varname}' is not a global variable.\n"
16
+ dbg_cmd = (@match[2] && @match[2] !~ /nostop/) ? 'byebug(1, false)' : ''
31
17
  end
18
+ eval("trace_var(:\"\$#{varname}\") do |val|
19
+ print \"traced global variable '#{varname}' has value '\#{val}'\"\n
20
+ #{dbg_cmd}
21
+ end")
22
+ print "Tracing global variable \"#{varname}\".\n"
32
23
  else
33
- errmsg "expecting \"on\", \"off\", \"var\" or \"variable\"; got: " \
34
- "\"#{@match[1]}\"\n"
24
+ errmsg "'#{varname}' is not a global variable.\n"
35
25
  end
36
26
  end
37
27
 
@@ -41,8 +31,7 @@ module Byebug
41
31
  end
42
32
 
43
33
  def description
44
- %{tr[ace] (on|off)\tset trace mode
45
- tr[ace] var(iable) VARNAME [stop|nostop]\tset trace variable on VARNAME}
34
+ %{tr[acevar] VARNAME [stop|nostop]\tset trace variable on VARNAME}
46
35
  end
47
36
  end
48
37
  end
@@ -1,5 +1,4 @@
1
1
  module Byebug
2
-
3
2
  module VarFunctions
4
3
  def var_list(ary, b = get_binding)
5
4
  ary.sort!
@@ -13,14 +12,16 @@ module Byebug
13
12
  s = "*Error in evaluation*"
14
13
  end
15
14
  end
16
- pad_with_dots(s)
15
+ s[Setting[:width]-3..-1] = "..." if s.size > Setting[:width]
17
16
  print "#{v} = #{s}\n"
18
17
  end
19
18
  end
19
+
20
20
  def var_class_self
21
21
  obj = bb_eval('self')
22
22
  var_list(obj.class.class_variables, get_binding)
23
23
  end
24
+
24
25
  def var_global
25
26
  var_list(global_variables.reject { |v| [:$=, :$KCODE, :$-K].include?(v) })
26
27
  end
@@ -147,43 +148,4 @@ module Byebug
147
148
  end
148
149
  end
149
150
  end
150
-
151
- begin
152
- require 'classtree'
153
- have_classtree = true
154
- rescue LoadError
155
- have_classtree = false
156
- end
157
-
158
- # Implements byebug's 'var inherit' command
159
- class VarInheritCommand < Command
160
- def regexp
161
- /^\s* v(?:ar)? \s+ ct \s*$/x
162
- end
163
-
164
- def execute
165
- unless @state.context
166
- errmsg "can't get object inheritance.\n"
167
- return
168
- end
169
- puts @match.post_match
170
- obj = bb_eval("#{@match.post_match}.classtree")
171
- if obj
172
- print obj
173
- else
174
- errmsg "Trouble getting object #{@match.post_match}\n"
175
- end
176
- end
177
-
178
- class << self
179
- def names
180
- %w(var)
181
- end
182
-
183
- def description
184
- %{v[ar] ct\t\t\tshow class heirarchy of object}
185
- end
186
- end
187
- end if have_classtree
188
-
189
151
  end