diff options
author | aycabta <[email protected]> | 2019-05-15 16:36:33 +0900 |
---|---|---|
committer | aycabta <[email protected]> | 2019-05-21 08:57:21 +0900 |
commit | 3a9008b9845db544d0788851f9527ce9f9f6bf4a (patch) | |
tree | 0bc7cd93696f1a57b2d25e6a72df71bde72ecf44 /lib/irb | |
parent | df6a673ca55d26a768ead23466c7e055a8596d7a (diff) |
Add --colorize and --nocolorize options to IRB
Diffstat (limited to 'lib/irb')
-rw-r--r-- | lib/irb/context.rb | 6 | ||||
-rw-r--r-- | lib/irb/init.rb | 5 | ||||
-rw-r--r-- | lib/irb/inspector.rb | 4 | ||||
-rw-r--r-- | lib/irb/lc/help-message | 2 | ||||
-rw-r--r-- | lib/irb/lc/ja/help-message | 2 | ||||
-rw-r--r-- | lib/irb/workspace.rb | 8 |
6 files changed, 23 insertions, 4 deletions
diff --git a/lib/irb/context.rb b/lib/irb/context.rb index f8a6009d17..749130edb2 100644 --- a/lib/irb/context.rb +++ b/lib/irb/context.rb @@ -142,6 +142,10 @@ module IRB # # See #use_readline= for more information. attr_reader :use_readline + # Whether colorization is enabled or not. + # + # A copy of the default <code>IRB.conf[:USE_COLORIZE]</code> + attr_reader :use_colorize # A copy of the default <code>IRB.conf[:INSPECT_MODE]</code> attr_reader :inspect_mode @@ -222,6 +226,8 @@ module IRB # Alias for #use_readline alias use_readline? use_readline + # Alias for #use_colorize + alias use_colorize? use_colorize # Alias for #rc alias rc? rc alias ignore_sigint? ignore_sigint diff --git a/lib/irb/init.rb b/lib/irb/init.rb index 344b243f12..d2e325b86e 100644 --- a/lib/irb/init.rb +++ b/lib/irb/init.rb @@ -44,6 +44,7 @@ module IRB # :nodoc: @CONF[:IRB_RC] = nil @CONF[:USE_READLINE] = false unless defined?(ReadlineInputMethod) + @CONF[:USE_COLORIZE] = true @CONF[:INSPECT_MODE] = true @CONF[:USE_TRACER] = false @CONF[:USE_LOADER] = false @@ -171,6 +172,10 @@ module IRB # :nodoc: @CONF[:VERBOSE] = true when "--noverbose" @CONF[:VERBOSE] = false + when "--colorize" + @CONF[:USE_COLORIZE] = true + when "--nocolorize" + @CONF[:USE_COLORIZE] = false when /^--prompt-mode(?:=(.+))?/, /^--prompt(?:=(.+))?/ opt = $1 || argv.shift prompt_mode = opt.upcase.tr("-", "_").intern diff --git a/lib/irb/inspector.rb b/lib/irb/inspector.rb index 7d2278a1f2..bc7fb0b125 100644 --- a/lib/irb/inspector.rb +++ b/lib/irb/inspector.rb @@ -107,7 +107,7 @@ module IRB # :nodoc: Inspector.def_inspector([true, :p, :inspect]){|v| begin result = v.inspect - if Color.inspect_colorable?(v) + if IRB.conf[:MAIN_CONTEXT]&.use_colorize? && Color.inspect_colorable?(v) result = Color.colorize_code(result) end result @@ -117,7 +117,7 @@ module IRB # :nodoc: } Inspector.def_inspector([:pp, :pretty_inspect], proc{require "pp"}){|v| result = v.pretty_inspect.chomp - if Color.inspect_colorable?(v) + if IRB.conf[:MAIN_CONTEXT]&.use_colorize? && Color.inspect_colorable?(v) result = Color.colorize_code(result) end result diff --git a/lib/irb/lc/help-message b/lib/irb/lc/help-message index d1a66dddda..207b941959 100644 --- a/lib/irb/lc/help-message +++ b/lib/irb/lc/help-message @@ -26,6 +26,8 @@ Usage: irb.rb [options] [programfile] [arguments] --noinspect Don't use inspect for output --readline Use Readline extension module --noreadline Don't use Readline extension module + --colorize Use colorization + --nocolorize Don't use colorization --prompt prompt-mode/--prompt-mode prompt-mode Switch prompt mode. Pre-defined prompt modes are `default', `simple', `xmp' and `inf-ruby' diff --git a/lib/irb/lc/ja/help-message b/lib/irb/lc/ja/help-message index 7a15f973c6..8393ed0539 100644 --- a/lib/irb/lc/ja/help-message +++ b/lib/irb/lc/ja/help-message @@ -25,6 +25,8 @@ Usage: irb.rb [options] [programfile] [arguments] --noinspect 結果出力にinspectを用いない. --readline readlineライブラリを利用する. --noreadline readlineライブラリを利用しない. + --colorize 色付けを利用する. + --nocolorize 色付けを利用しない. --prompt prompt-mode/--prompt-mode prompt-mode プロンプトモードを切替えます. 現在定義されているプ ロンプトモードは, default, simple, xmp, inf-rubyが diff --git a/lib/irb/workspace.rb b/lib/irb/workspace.rb index c23668b998..bb7407aa0f 100644 --- a/lib/irb/workspace.rb +++ b/lib/irb/workspace.rb @@ -131,13 +131,17 @@ EOF return end end - lines = Color.colorize_code(code).lines + lines = IRB.conf[:MAIN_CONTEXT]&.use_colorize? ? Color.colorize_code(code).lines : code.lines pos -= 1 start_pos = [pos - 5, 0].max end_pos = [pos + 5, lines.size - 1].min - fmt = " %2s #{Color.colorize("%#{end_pos.to_s.length}d", [:BLUE, :BOLD])}: %s" + if IRB.conf[:MAIN_CONTEXT]&.use_colorize? + fmt = " %2s #{Color.colorize("%#{end_pos.to_s.length}d", [:BLUE, :BOLD])}: %s" + else + fmt = " %2s %#{end_pos.to_s.length}d: %s" + end body = (start_pos..end_pos).map do |current_pos| sprintf(fmt, pos == current_pos ? '=>' : '', current_pos + 1, lines[current_pos]) end.join("") |