byebug 9.1.0 → 10.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (129) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +24 -3
  3. data/CONTRIBUTING.md +39 -18
  4. data/GUIDE.md +16 -17
  5. data/README.md +64 -52
  6. data/exe/byebug +6 -0
  7. data/ext/byebug/breakpoint.c +1 -1
  8. data/ext/byebug/byebug.c +16 -16
  9. data/ext/byebug/byebug.h +40 -26
  10. data/ext/byebug/context.c +26 -26
  11. data/ext/byebug/extconf.rb +7 -5
  12. data/ext/byebug/threads.c +8 -8
  13. data/lib/byebug.rb +3 -1
  14. data/lib/byebug/attacher.rb +17 -3
  15. data/lib/byebug/breakpoint.rb +25 -3
  16. data/lib/byebug/command.rb +20 -14
  17. data/lib/byebug/command_list.rb +3 -1
  18. data/lib/byebug/commands.rb +39 -37
  19. data/lib/byebug/commands/break.rb +33 -15
  20. data/lib/byebug/commands/catch.rb +16 -14
  21. data/lib/byebug/commands/condition.rb +11 -9
  22. data/lib/byebug/commands/continue.rb +9 -7
  23. data/lib/byebug/commands/debug.rb +7 -5
  24. data/lib/byebug/commands/delete.rb +11 -9
  25. data/lib/byebug/commands/disable.rb +8 -6
  26. data/lib/byebug/commands/disable/breakpoints.rb +7 -5
  27. data/lib/byebug/commands/disable/display.rb +7 -5
  28. data/lib/byebug/commands/display.rb +11 -9
  29. data/lib/byebug/commands/down.rb +10 -8
  30. data/lib/byebug/commands/edit.rb +10 -8
  31. data/lib/byebug/commands/enable.rb +8 -6
  32. data/lib/byebug/commands/enable/breakpoints.rb +7 -5
  33. data/lib/byebug/commands/enable/display.rb +7 -5
  34. data/lib/byebug/commands/finish.rb +8 -6
  35. data/lib/byebug/commands/frame.rb +11 -9
  36. data/lib/byebug/commands/help.rb +7 -5
  37. data/lib/byebug/commands/history.rb +7 -5
  38. data/lib/byebug/commands/info.rb +11 -9
  39. data/lib/byebug/commands/info/breakpoints.rb +17 -11
  40. data/lib/byebug/commands/info/display.rb +16 -7
  41. data/lib/byebug/commands/info/file.rb +12 -10
  42. data/lib/byebug/commands/info/line.rb +5 -3
  43. data/lib/byebug/commands/info/program.rb +8 -6
  44. data/lib/byebug/commands/interrupt.rb +8 -4
  45. data/lib/byebug/commands/irb.rb +9 -7
  46. data/lib/byebug/commands/kill.rb +9 -7
  47. data/lib/byebug/commands/list.rb +41 -46
  48. data/lib/byebug/commands/method.rb +10 -8
  49. data/lib/byebug/commands/next.rb +8 -6
  50. data/lib/byebug/commands/pry.rb +10 -8
  51. data/lib/byebug/commands/quit.rb +7 -5
  52. data/lib/byebug/commands/restart.rb +13 -11
  53. data/lib/byebug/commands/save.rb +9 -7
  54. data/lib/byebug/commands/set.rb +12 -10
  55. data/lib/byebug/commands/show.rb +7 -5
  56. data/lib/byebug/commands/source.rb +7 -5
  57. data/lib/byebug/commands/step.rb +8 -6
  58. data/lib/byebug/commands/thread.rb +11 -9
  59. data/lib/byebug/commands/thread/current.rb +6 -4
  60. data/lib/byebug/commands/thread/list.rb +7 -5
  61. data/lib/byebug/commands/thread/resume.rb +7 -5
  62. data/lib/byebug/commands/thread/stop.rb +6 -4
  63. data/lib/byebug/commands/thread/switch.rb +6 -4
  64. data/lib/byebug/commands/tracevar.rb +10 -8
  65. data/lib/byebug/commands/undisplay.rb +10 -8
  66. data/lib/byebug/commands/untracevar.rb +8 -6
  67. data/lib/byebug/commands/up.rb +10 -8
  68. data/lib/byebug/commands/var.rb +12 -10
  69. data/lib/byebug/commands/var/all.rb +7 -5
  70. data/lib/byebug/commands/var/args.rb +6 -4
  71. data/lib/byebug/commands/var/const.rb +9 -7
  72. data/lib/byebug/commands/var/global.rb +5 -3
  73. data/lib/byebug/commands/var/instance.rb +6 -4
  74. data/lib/byebug/commands/var/local.rb +6 -4
  75. data/lib/byebug/commands/where.rb +9 -7
  76. data/lib/byebug/context.rb +7 -5
  77. data/lib/byebug/core.rb +25 -25
  78. data/lib/byebug/errors.rb +4 -2
  79. data/lib/byebug/frame.rb +16 -16
  80. data/lib/byebug/helpers/bin.rb +28 -7
  81. data/lib/byebug/helpers/eval.rb +8 -6
  82. data/lib/byebug/helpers/file.rb +4 -2
  83. data/lib/byebug/helpers/frame.rb +5 -3
  84. data/lib/byebug/helpers/parse.rb +5 -3
  85. data/lib/byebug/helpers/path.rb +7 -5
  86. data/lib/byebug/helpers/reflection.rb +2 -0
  87. data/lib/byebug/helpers/string.rb +4 -2
  88. data/lib/byebug/helpers/thread.rb +10 -8
  89. data/lib/byebug/helpers/toggle.rb +10 -8
  90. data/lib/byebug/helpers/var.rb +8 -6
  91. data/lib/byebug/history.rb +7 -5
  92. data/lib/byebug/interface.rb +13 -11
  93. data/lib/byebug/interfaces/local_interface.rb +4 -4
  94. data/lib/byebug/interfaces/remote_interface.rb +21 -9
  95. data/lib/byebug/interfaces/script_interface.rb +2 -0
  96. data/lib/byebug/interfaces/test_interface.rb +5 -3
  97. data/lib/byebug/option_setter.rb +14 -12
  98. data/lib/byebug/printers/base.rb +6 -6
  99. data/lib/byebug/printers/plain.rb +8 -6
  100. data/lib/byebug/printers/texts/base.yml +3 -3
  101. data/lib/byebug/processors/command_processor.rb +11 -12
  102. data/lib/byebug/processors/control_processor.rb +4 -6
  103. data/lib/byebug/processors/post_mortem_processor.rb +4 -2
  104. data/lib/byebug/processors/script_processor.rb +7 -3
  105. data/lib/byebug/remote.rb +45 -65
  106. data/lib/byebug/remote/client.rb +55 -0
  107. data/lib/byebug/remote/server.rb +47 -0
  108. data/lib/byebug/runner.rb +26 -19
  109. data/lib/byebug/setting.rb +10 -4
  110. data/lib/byebug/settings/autoirb.rb +5 -3
  111. data/lib/byebug/settings/autolist.rb +5 -3
  112. data/lib/byebug/settings/autopry.rb +5 -3
  113. data/lib/byebug/settings/autosave.rb +4 -2
  114. data/lib/byebug/settings/basename.rb +4 -2
  115. data/lib/byebug/settings/callstyle.rb +3 -3
  116. data/lib/byebug/settings/fullpath.rb +4 -2
  117. data/lib/byebug/settings/histfile.rb +5 -3
  118. data/lib/byebug/settings/histsize.rb +4 -2
  119. data/lib/byebug/settings/linetrace.rb +4 -2
  120. data/lib/byebug/settings/listsize.rb +4 -2
  121. data/lib/byebug/settings/post_mortem.rb +4 -2
  122. data/lib/byebug/settings/savefile.rb +4 -2
  123. data/lib/byebug/settings/stack_on_error.rb +4 -2
  124. data/lib/byebug/settings/width.rb +3 -1
  125. data/lib/byebug/source_file_formatter.rb +71 -0
  126. data/lib/byebug/subcommands.rb +6 -4
  127. data/lib/byebug/version.rb +1 -1
  128. metadata +8 -5
  129. data/bin/byebug +0 -9
@@ -1,4 +1,6 @@
1
- require 'byebug/helpers/eval'
1
+ # frozen_string_literal: true
2
+
3
+ require "byebug/helpers/eval"
2
4
 
3
5
  module Byebug
4
6
  module Helpers
@@ -13,7 +15,7 @@ module Byebug
13
15
  [name, safe_inspect(silent_eval(name.to_s, binding))]
14
16
  end
15
17
 
16
- puts prv(vars, 'instance')
18
+ puts prv(vars, "instance")
17
19
  end
18
20
 
19
21
  def var_global
@@ -25,7 +27,7 @@ module Byebug
25
27
  end
26
28
 
27
29
  def var_instance(str)
28
- obj = warning_eval(str || 'self')
30
+ obj = warning_eval(str || "self")
29
31
 
30
32
  var_list(obj.instance_variables, obj.instance_eval { binding })
31
33
  end
@@ -33,8 +35,8 @@ module Byebug
33
35
  def var_local
34
36
  locals = context.frame.locals
35
37
  cur_self = context.frame._self
36
- locals[:self] = cur_self unless cur_self.to_s == 'main'
37
- puts prv(locals.keys.sort.map { |k| [k, locals[k]] }, 'instance')
38
+ locals[:self] = cur_self unless cur_self.to_s == "main"
39
+ puts prv(locals.keys.sort.map { |k| [k, locals[k]] }, "instance")
38
40
  end
39
41
 
40
42
  def var_args
@@ -45,7 +47,7 @@ module Byebug
45
47
  arg_values = args.map { |arg| arg[1] }
46
48
 
47
49
  locals = all_locals.select { |k, _| arg_values.include?(k) }
48
- puts prv(locals.keys.sort.map { |k| [k, locals[k]] }, 'instance')
50
+ puts prv(locals.keys.sort.map { |k| [k, locals[k]] }, "instance")
49
51
  end
50
52
  end
51
53
  end
@@ -1,11 +1,13 @@
1
+ # frozen_string_literal: true
2
+
1
3
  begin
2
- require 'readline'
4
+ require "readline"
3
5
  rescue LoadError
4
- warn <<-EOW
6
+ warn <<-MESSAGE
5
7
  Sorry, you can't use byebug without Readline. To solve this, you need to
6
8
  rebuild Ruby with Readline support. If using Ubuntu, try `sudo apt-get
7
9
  install libreadline-dev` and then reinstall your Ruby.
8
- EOW
10
+ MESSAGE
9
11
 
10
12
  raise
11
13
  end
@@ -43,7 +45,7 @@ module Byebug
43
45
  def save
44
46
  n_cmds = Setting[:histsize] > size ? size : Setting[:histsize]
45
47
 
46
- open(Setting[:histfile], 'w') do |file|
48
+ open(Setting[:histfile], "w") do |file|
47
49
  n_cmds.times { file.puts(pop) }
48
50
  end
49
51
 
@@ -84,7 +86,7 @@ module Byebug
84
86
  commands = buffer.last(show_size)
85
87
 
86
88
  last_ids(show_size).zip(commands).map do |l|
87
- format('%5d %s', l[0], l[1])
89
+ format("%<position>5d %<command>s", position: l[0], command: l[1])
88
90
  end.join("\n") + "\n"
89
91
  end
90
92
 
@@ -1,6 +1,8 @@
1
- require 'byebug/setting'
2
- require 'byebug/history'
3
- require 'byebug/helpers/file'
1
+ # frozen_string_literal: true
2
+
3
+ require "byebug/setting"
4
+ require "byebug/history"
5
+ require "byebug/helpers/file"
4
6
 
5
7
  #
6
8
  # Namespace for all of byebug's code
@@ -20,7 +22,7 @@ module Byebug
20
22
  def initialize
21
23
  @command_queue = []
22
24
  @history = History.new
23
- @last_line = ''
25
+ @last_line = ""
24
26
  end
25
27
 
26
28
  def last_if_empty(input)
@@ -97,7 +99,7 @@ module Byebug
97
99
  # Confirms user introduced an affirmative response to the input stream.
98
100
  #
99
101
  def confirm(prompt)
100
- readline(prompt) == 'y'
102
+ readline(prompt) == "y"
101
103
  end
102
104
 
103
105
  def close
@@ -124,7 +126,7 @@ module Byebug
124
126
  # array of commands: [cmd1, cmd2, ..., cmdN]
125
127
  #
126
128
  def split_commands(cmd_line)
127
- return [''] if cmd_line.empty?
129
+ return [""] if cmd_line.empty?
128
130
 
129
131
  cmd_line.split(/;/).each_with_object([]) do |v, m|
130
132
  if m.empty? || m.last[-1] != '\\'
@@ -132,13 +134,13 @@ module Byebug
132
134
  next
133
135
  end
134
136
 
135
- m.last[-1, 1] = ''
136
- m.last << ';' << v
137
+ m.last[-1, 1] = ""
138
+ m.last << ";" << v
137
139
  end
138
140
  end
139
141
  end
140
142
  end
141
143
 
142
- require 'byebug/interfaces/local_interface'
143
- require 'byebug/interfaces/script_interface'
144
- require 'byebug/interfaces/remote_interface'
144
+ require "byebug/interfaces/local_interface"
145
+ require "byebug/interfaces/script_interface"
146
+ require "byebug/interfaces/remote_interface"
@@ -5,7 +5,7 @@ module Byebug
5
5
  # Interface class for standard byebug use.
6
6
  #
7
7
  class LocalInterface < Interface
8
- EOF_ALIAS = 'continue'.freeze
8
+ EOF_ALIAS = "continue".freeze
9
9
 
10
10
  def initialize
11
11
  super()
@@ -32,13 +32,13 @@ module Byebug
32
32
  # @note Any external 'INT' traps are overriden during this method.
33
33
  #
34
34
  def with_repl_like_sigint
35
- orig_handler = trap('INT') { raise Interrupt }
35
+ orig_handler = trap("INT") { raise Interrupt }
36
36
  yield
37
37
  rescue Interrupt
38
- puts('^C')
38
+ puts("^C")
39
39
  retry
40
40
  ensure
41
- trap('INT', orig_handler)
41
+ trap("INT", orig_handler)
42
42
  end
43
43
  end
44
44
  end
@@ -1,4 +1,6 @@
1
- require 'byebug/history'
1
+ # frozen_string_literal: true
2
+
3
+ require "byebug/history"
2
4
 
3
5
  module Byebug
4
6
  #
@@ -14,25 +16,35 @@ module Byebug
14
16
 
15
17
  def read_command(prompt)
16
18
  super("PROMPT #{prompt}")
19
+ rescue Errno::EPIPE, Errno::ECONNABORTED
20
+ "continue"
17
21
  end
18
22
 
19
23
  def confirm(prompt)
20
24
  super("CONFIRM #{prompt}")
25
+ rescue Errno::EPIPE, Errno::ECONNABORTED
26
+ false
27
+ end
28
+
29
+ def print(message)
30
+ super(message)
31
+ rescue Errno::EPIPE, Errno::ECONNABORTED
32
+ nil
33
+ end
34
+
35
+ def puts(message)
36
+ super(message)
37
+ rescue Errno::EPIPE, Errno::ECONNABORTED
38
+ nil
21
39
  end
22
40
 
23
41
  def close
24
42
  output.close
25
- rescue IOError
26
- errmsg('Error closing the interface...')
27
43
  end
28
44
 
29
45
  def readline(prompt)
30
- output.puts(prompt)
31
-
32
- result = input.gets
33
- raise IOError unless result
34
-
35
- result.chomp
46
+ puts(prompt)
47
+ (input.gets || "continue").chomp
36
48
  end
37
49
  end
38
50
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Byebug
2
4
  #
3
5
  # Interface class for command execution from script files.
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Byebug
2
4
  #
3
5
  # Custom interface for easier assertions
@@ -41,9 +43,9 @@ module Byebug
41
43
 
42
44
  def inspect
43
45
  [
44
- 'Input:', input.join("\n"),
45
- 'Output:', output.join("\n"),
46
- 'Error:', error.join("\n")
46
+ "Input:", input.join("\n"),
47
+ "Output:", output.join("\n"),
48
+ "Error:", error.join("\n")
47
49
  ].join("\n")
48
50
  end
49
51
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Byebug
2
4
  #
3
5
  # Handles byebug's command line options
@@ -25,67 +27,67 @@ module Byebug
25
27
  private
26
28
 
27
29
  def debug
28
- @opts.on '-d', '--debug', 'Set $DEBUG=true' do
30
+ @opts.on "-d", "--debug", "Set $DEBUG=true" do
29
31
  $DEBUG = true
30
32
  end
31
33
  end
32
34
 
33
35
  def include_flag
34
- @opts.on '-I', '--include list', 'Add to paths to $LOAD_PATH' do |list|
35
- $LOAD_PATH.push(list.split(':')).flatten!
36
+ @opts.on "-I", "--include list", "Add to paths to $LOAD_PATH" do |list|
37
+ $LOAD_PATH.push(list.split(":")).flatten!
36
38
  end
37
39
  end
38
40
 
39
41
  def post_mortem
40
- @opts.on '-m', '--[no-]post-mortem', 'Use post-mortem mode' do |v|
42
+ @opts.on "-m", "--[no-]post-mortem", "Use post-mortem mode" do |v|
41
43
  Setting[:post_mortem] = v
42
44
  end
43
45
  end
44
46
 
45
47
  def quit
46
- @opts.on '-q', '--[no-]quit', 'Quit when script finishes' do |v|
48
+ @opts.on "-q", "--[no-]quit", "Quit when script finishes" do |v|
47
49
  @runner.quit = v
48
50
  end
49
51
  end
50
52
 
51
53
  def rc
52
- @opts.on '-x', '--[no-]rc', 'Run byebug initialization file' do |v|
54
+ @opts.on "-x", "--[no-]rc", "Run byebug initialization file" do |v|
53
55
  @runner.init_script = v
54
56
  end
55
57
  end
56
58
 
57
59
  def stop
58
- @opts.on '-s', '--[no-]stop', 'Stop when script is loaded' do |v|
60
+ @opts.on "-s", "--[no-]stop", "Stop when script is loaded" do |v|
59
61
  @runner.stop = v
60
62
  end
61
63
  end
62
64
 
63
65
  def require_flag
64
- @opts.on '-r', '--require file', 'Require library before script' do |lib|
66
+ @opts.on "-r", "--require file", "Require library before script" do |lib|
65
67
  require lib
66
68
  end
67
69
  end
68
70
 
69
71
  def remote
70
- @opts.on '-R', '--remote [host:]port', 'Remote debug [host:]port' do |p|
72
+ @opts.on "-R", "--remote [host:]port", "Remote debug [host:]port" do |p|
71
73
  @runner.remote = p
72
74
  end
73
75
  end
74
76
 
75
77
  def trace
76
- @opts.on '-t', '--[no-]trace', 'Turn on line tracing' do |v|
78
+ @opts.on "-t", "--[no-]trace", "Turn on line tracing" do |v|
77
79
  Setting[:linetrace] = v
78
80
  end
79
81
  end
80
82
 
81
83
  def version
82
- @opts.on '-v', '--version', 'Print program version' do
84
+ @opts.on "-v", "--version", "Print program version" do
83
85
  @runner.version = Byebug::VERSION
84
86
  end
85
87
  end
86
88
 
87
89
  def help
88
- @opts.on '-h', '--help', 'Display this message' do
90
+ @opts.on "-h", "--help", "Display this message" do
89
91
  @runner.help = @opts.help
90
92
  end
91
93
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'yaml'
3
+ require "yaml"
4
4
 
5
5
  module Byebug
6
6
  module Printers
@@ -11,17 +11,17 @@ module Byebug
11
11
  class MissedPath < StandardError; end
12
12
  class MissedArgument < StandardError; end
13
13
 
14
- SEPARATOR = '.'.freeze
14
+ SEPARATOR = ".".freeze
15
15
 
16
16
  def type
17
- self.class.name.split('::').last.downcase
17
+ self.class.name.split("::").last.downcase
18
18
  end
19
19
 
20
20
  private
21
21
 
22
22
  def locate(path)
23
23
  result = nil
24
- contents.each do |_, contents|
24
+ contents.each_value do |contents|
25
25
  result = parts(path).reduce(contents) do |r, part|
26
26
  r && r.key?(part) ? r[part] : nil
27
27
  end
@@ -33,7 +33,7 @@ module Byebug
33
33
 
34
34
  def translate(string, args = {})
35
35
  # they may contain #{} string interpolation
36
- string.gsub(/\|\w+$/, '').gsub(/([^#]?){([^}]*)}/) do
36
+ string.gsub(/\|\w+$/, "").gsub(/([^#]?){([^}]*)}/) do
37
37
  key = Regexp.last_match[2].to_s
38
38
  unless args.key?(key.to_sym)
39
39
  raise MissedArgument, "Missed argument #{key} for '#{string}'"
@@ -62,7 +62,7 @@ module Byebug
62
62
  end
63
63
 
64
64
  def contents_files
65
- [File.join(__dir__, 'texts', 'base.yml')]
65
+ [File.join(__dir__, "texts", "base.yml")]
66
66
  end
67
67
  end
68
68
  end
@@ -1,4 +1,6 @@
1
- require 'byebug/printers/base'
1
+ # frozen_string_literal: true
2
+
3
+ require "byebug/printers/base"
2
4
 
3
5
  module Byebug
4
6
  module Printers
@@ -8,7 +10,7 @@ module Byebug
8
10
  class Plain < Base
9
11
  def print(path, args = {})
10
12
  message = translate(locate(path), args)
11
- tail = parts(path).include?('confirmations') ? ' (y/n) ' : "\n"
13
+ tail = parts(path).include?("confirmations") ? " (y/n) " : "\n"
12
14
  message << tail
13
15
  end
14
16
 
@@ -21,11 +23,11 @@ module Byebug
21
23
  end
22
24
 
23
25
  def print_variables(variables, *_)
24
- print_collection('variable.variable', variables) do |(key, value), _|
25
- value = value.nil? ? 'nil' : value.to_s
26
+ print_collection("variable.variable", variables) do |(key, value), _|
27
+ value = value.nil? ? "nil" : value.to_s
26
28
  if "#{key} = #{value}".size > Setting[:width]
27
29
  key_size = "#{key} = ".size
28
- value = value[0..Setting[:width] - key_size - 4] + '...'
30
+ value = value[0..Setting[:width] - key_size - 4] + "..."
29
31
  end
30
32
 
31
33
  { key: key, value: value }
@@ -35,7 +37,7 @@ module Byebug
35
37
  private
36
38
 
37
39
  def contents_files
38
- [File.join(__dir__, 'texts', 'plain.yml')] + super
40
+ [File.join(__dir__, "texts", "plain.yml")] + super
39
41
  end
40
42
  end
41
43
  end
@@ -1,10 +1,10 @@
1
1
  base:
2
2
  errors:
3
- only_local: 'Command is available only in local mode.'
3
+ only_local: "Command is available only in local mode."
4
4
 
5
5
  break:
6
6
  errors:
7
- line: "Line {line} is not a valid breakpoint in file {file}"
7
+ line: "Line {line} is not a valid breakpoint in file {file}.\n\nValid break points are:\n{valid_breakpoints}"
8
8
  location: "Invalid breakpoint location"
9
9
  state: "We are not in a state that has an associated file"
10
10
  class: "Unknown class {klass}"
@@ -62,7 +62,7 @@ info:
62
62
 
63
63
  pry:
64
64
  errors:
65
- not_installed: 'You need to install pry in order to run this command'
65
+ not_installed: "You need to install pry in order to run this command"
66
66
 
67
67
  quit:
68
68
  confirmations:
@@ -1,7 +1,9 @@
1
- require 'forwardable'
1
+ # frozen_string_literal: true
2
2
 
3
- require 'byebug/helpers/eval'
4
- require 'byebug/errors'
3
+ require "forwardable"
4
+
5
+ require "byebug/helpers/eval"
6
+ require "byebug/errors"
5
7
 
6
8
  module Byebug
7
9
  #
@@ -16,19 +18,16 @@ module Byebug
16
18
  include Helpers::EvalHelper
17
19
 
18
20
  attr_accessor :prev_line
19
- attr_reader :context
21
+ attr_reader :context, :interface
20
22
 
21
- def initialize(context)
23
+ def initialize(context, interface = LocalInterface.new)
22
24
  @context = context
25
+ @interface = interface
23
26
 
24
27
  @proceed = false
25
28
  @prev_line = nil
26
29
  end
27
30
 
28
- def interface
29
- @interface ||= Context.interface
30
- end
31
-
32
31
  def printer
33
32
  @printer ||= Printers::Plain.new
34
33
  end
@@ -106,7 +105,7 @@ module Byebug
106
105
  # Prompt shown before reading a command.
107
106
  #
108
107
  def prompt
109
- '(byebug) '
108
+ "(byebug) "
110
109
  end
111
110
 
112
111
  def before_repl
@@ -129,7 +128,7 @@ module Byebug
129
128
  cmd = interface.read_command(prompt)
130
129
  return if cmd.nil?
131
130
 
132
- next if cmd == ''
131
+ next if cmd == ""
133
132
 
134
133
  run_cmd(cmd)
135
134
  end
@@ -167,7 +166,7 @@ module Byebug
167
166
 
168
167
  def safely
169
168
  yield
170
- rescue => e
169
+ rescue StandardError => e
171
170
  errmsg(e.message)
172
171
  end
173
172
  end