byebug icon indicating copy to clipboard operation
byebug copied to clipboard

Add ignore_empty_commands setting.

Open gabrieldeal opened this issue 4 years ago • 0 comments

Add ignore_empty_commands boolean setting. It defaults to false, which causes an empty command to repeat the last command (the current behavior). If true, an empty command is a no-op.

My implementation differs from what I suggested in issue #700 because it seemed more self-documenting as a boolean setting. Also if I used an enum setting instead, I doubt a third value would ever be added, so the flexibility of an enum would provide no benefit. But I am happy to switch it back to the enum setting that I initially proposed if that is what you prefer!

Fixes #700

Demo

When the setting is false

$ cat ~/.byebugrc
set histfile /home/gabrielx/byebug.history
#set ignore_empty_commands true
$
$ bundle exec ./test.rb

[3, 12] in /home/gabrielx/projects/byebug/test.rb
    3:
    4: require 'byebug'
    5:
    6: debugger
    7:
=>  8: sleep 2.1
    9: debugger
   10:
   11: sleep 2.2
   12: debugger
(byebug) c

[3, 12] in /home/gabrielx/projects/byebug/test.rb
    3:
    4: require 'byebug'
    5:
    6: debugger
    7:
    8: sleep 2.1
    9: debugger
   10:
=> 11: sleep 2.2
   12: debugger
(byebug)

[21, 30] in /home/gabrielx/.rvm/gems/ruby-2.5.3/gems/bundler-2.2.0.rc.2/lib/bundler/cli.rb
   21:     }.freeze
   22:
   23:     def self.start(*)
   24:       super
   25:     ensure
=> 26:       Bundler::SharedHelpers.print_major_deprecations!
   27:     end
   28:
   29:     def self.dispatch(*)
   30:       super do |i|
(byebug)
$

When the setting is true

$ cat ~/.byebugrc
set histfile /home/gabrielx/byebug.history
set ignore_empty_commands true
$
$ bundle exec ./test.rb

[3, 12] in /home/gabrielx/projects/byebug/test.rb
    3:
    4: require 'byebug'
    5:
    6: debugger
    7:
=>  8: sleep 2.1
    9: debugger
   10:
   11: sleep 2.2
   12: debugger
(byebug) c

[3, 12] in /home/gabrielx/projects/byebug/test.rb
    3:
    4: require 'byebug'
    5:
    6: debugger
    7:
    8: sleep 2.1
    9: debugger
   10:
=> 11: sleep 2.2
   12: debugger
(byebug)
(byebug)
(byebug) c

[21, 30] in /home/gabrielx/.rvm/gems/ruby-2.5.3/gems/bundler-2.2.0.rc.2/lib/bundler/cli.rb
   21:     }.freeze
   22:
   23:     def self.start(*)
   24:       super
   25:     ensure
=> 26:       Bundler::SharedHelpers.print_major_deprecations!
   27:     end
   28:
   29:     def self.dispatch(*)
   30:       super do |i|
(byebug)
(byebug)
(byebug) c
$

gabrieldeal avatar Dec 12 '20 01:12 gabrieldeal