summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authoraycabta <aycabta@gmail.com>2019-05-15 16:36:33 +0900
committeraycabta <aycabta@gmail.com>2019-05-21 08:57:21 +0900
commit3a9008b9845db544d0788851f9527ce9f9f6bf4a (patch)
tree0bc7cd93696f1a57b2d25e6a72df71bde72ecf44 /lib
parentdf6a673ca55d26a768ead23466c7e055a8596d7a (diff)
Add --colorize and --nocolorize options to IRB
Diffstat (limited to 'lib')
-rw-r--r--lib/irb.rb3
-rw-r--r--lib/irb/context.rb6
-rw-r--r--lib/irb/init.rb5
-rw-r--r--lib/irb/inspector.rb4
-rw-r--r--lib/irb/lc/help-message2
-rw-r--r--lib/irb/lc/ja/help-message2
-rw-r--r--lib/irb/workspace.rb8
7 files changed, 26 insertions, 4 deletions
diff --git a/lib/irb.rb b/lib/irb.rb
index d0246b077c..773d0d07a4 100644
--- a/lib/irb.rb
+++ b/lib/irb.rb
@@ -62,6 +62,8 @@ require "irb/version"
# --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
@@ -96,6 +98,7 @@ require "irb/version"
# IRB.conf[:BACK_TRACE_LIMIT]=16
# IRB.conf[:USE_LOADER] = false
# IRB.conf[:USE_READLINE] = nil
+# IRB.conf[:USE_COLORIZE] = true
# IRB.conf[:USE_TRACER] = false
# IRB.conf[:IGNORE_SIGINT] = true
# IRB.conf[:IGNORE_EOF] = false
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("")