From bb03afd52440a58520cdef6436727dd06045ae68 Mon Sep 17 00:00:00 2001 From: Koichi Sasada Date: Wed, 4 Jun 2025 16:45:51 +0900 Subject: [PATCH] skip "\n" from `$stdin` before showing prompt Any input into `$stdin` before showing prompt will be appear on the next prompt, and entering new empty line will dispatch previous command. This patch consumes empty lines ("\n"+) from $stdin just before showing the prompt. --- lib/debug/console.rb | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/lib/debug/console.rb b/lib/debug/console.rb index ec860b423..10a08f1ce 100644 --- a/lib/debug/console.rb +++ b/lib/debug/console.rb @@ -97,6 +97,7 @@ def readline_setup prompt end def readline prompt + clear_stdin readline_setup prompt do Reline.readmultiline(prompt, true){ true } end @@ -132,6 +133,7 @@ def readline_setup end def readline prompt + clear_stdin readline_setup Readline.readline(prompt, true) end @@ -142,6 +144,7 @@ def history rescue LoadError def readline prompt + clear_stdin print prompt $stdin.gets end @@ -152,6 +155,22 @@ def history end end + def clear_stdin + # consume all STDIN input just before prompt + loop do + case r = $stdin.read_nonblock(1, exception: false) + when "\n" + # drop \n + next + when nil, :wait_readable + break + else + $stdin.ungetc r + break + end + end + end + def history_file case when (path = CONFIG[:history_file]) && !path.empty?