[ruby/irb] Colorize command input
(https://github.com/ruby/irb/pull/983) https://github.com/ruby/irb/commit/0e64136e76
This commit is contained in:
parent
ccef391140
commit
ce6b0c4425
@ -270,7 +270,13 @@ module IRB
|
||||
proc do |output, complete: |
|
||||
next unless IRB::Color.colorable?
|
||||
lvars = IRB.CurrentContext&.local_variables || []
|
||||
IRB::Color.colorize_code(output, complete: complete, local_variables: lvars)
|
||||
if IRB.CurrentContext&.parse_command(output)
|
||||
name, sep, arg = output.split(/(\s+)/, 2)
|
||||
arg = IRB::Color.colorize_code(arg, complete: complete, local_variables: lvars)
|
||||
"#{IRB::Color.colorize(name, [:BOLD])}\e[m#{sep}#{arg}"
|
||||
else
|
||||
IRB::Color.colorize_code(output, complete: complete, local_variables: lvars)
|
||||
end
|
||||
end
|
||||
else
|
||||
proc do |output|
|
||||
|
@ -8,6 +8,7 @@ module TestIRB
|
||||
class InputMethodTest < TestCase
|
||||
def setup
|
||||
@conf_backup = IRB.conf.dup
|
||||
IRB.init_config(nil)
|
||||
IRB.conf[:LC_MESSAGES] = IRB::Locale.new
|
||||
save_encodings
|
||||
end
|
||||
@ -33,6 +34,21 @@ module TestIRB
|
||||
assert_not_nil Reline.dig_perfect_match_proc
|
||||
end
|
||||
|
||||
def test_colorize
|
||||
original_colorable = IRB::Color.method(:colorable?)
|
||||
IRB::Color.instance_eval { undef :colorable? }
|
||||
IRB::Color.define_singleton_method(:colorable?) { true }
|
||||
workspace = IRB::WorkSpace.new(binding)
|
||||
input_method = IRB::RelineInputMethod.new(IRB::RegexpCompletor.new)
|
||||
IRB.conf[:MAIN_CONTEXT] = IRB::Irb.new(workspace, input_method).context
|
||||
assert_equal "\e[1m$\e[0m\e[m", Reline.output_modifier_proc.call('$', complete: false)
|
||||
assert_equal "\e[1m$\e[0m\e[m \e[34m\e[1m1\e[0m + \e[34m\e[1m2\e[0m", Reline.output_modifier_proc.call('$ 1 + 2', complete: false)
|
||||
assert_equal "\e[32m\e[1m$a\e[0m", Reline.output_modifier_proc.call('$a', complete: false)
|
||||
ensure
|
||||
IRB::Color.instance_eval { undef :colorable? }
|
||||
IRB::Color.define_singleton_method(:colorable?, original_colorable)
|
||||
end
|
||||
|
||||
def test_initialization_without_use_autocomplete
|
||||
original_show_doc_proc = Reline.dialog_proc(:show_doc)&.dialog_proc
|
||||
empty_proc = Proc.new {}
|
||||
|
Loading…
x
Reference in New Issue
Block a user