問題
- Windowsで
cmd.exe
でpryを使っている -
cmd.exe
の色の設定などは標準のまま - たとえば
ls Logger
とした場合、constantsに表示されるクラス名が青色のため、ほとんど見えない
解決策
.pryrc
ファイルにて設定を実施
Pry.config.ls['class_constant_color'] = :bright_blue
Pry.config.ls['instance_var_color'] = :bright_cyan
詳細
pry-theme
を使用したいので最初はそちらの設定かと思ったが、考えてみればpryのlsコマンドの出力結果であって。
それらしい下記を見ると
https://github.com/pry/pry/tree/master/lib/pry/commands/ls
constants.rb
というのがあるので覗いてみた。
https://github.com/pry/pry/blob/master/lib/pry/commands/ls/constants.rb#L33
なんかcolor(:exception_constant, name)
とか、それっぽいのを発見
#color
は下記に
https://github.com/pry/pry/blob/master/lib/pry/commands/ls/formatter.rb#L20
def color(type, str)
Pry::Helpers::Text.send _pry_.config.ls["#{type}_color"], str
end
_pry_.config.ls
にkey名投げれば色の名前が返ってくる
Pry.config.ls['class_constant_color'] # => :blue
Pry.config.ls['instance_var_color'] # => :blue
で、先頭に書いたように設定をしてみたら色が変わった。
なお、設定する色の名前は
https://github.com/pry/pry/blob/master/lib/pry/helpers/text.rb
のCOLORS
に定義されていて、key名もしくはkey名にprefixでbright_
を付けた9色 x 2パターン、
かと思いきやpurple
とmagenta
は同じだったので8色 x 2パターン = 16種類。
補足
lsに設定されているxxx_colorなもの一覧は下記のようにして確認してみた
Pry.config.ls.keys.sort.grep(/color/).each do |key|
puts "#{key.ljust(25)} = :#{Pry.config.ls[key]}"
end
# builtin_global_color = cyan
# class_constant_color = bright_blue
# class_var_color = bright_blue
# constant_color = default
# exception_constant_color = magenta
# global_var_color = default
# heading_color = bright_blue
# instance_var_color = blue
# local_var_color = yellow
# method_missing_color = bright_red
# private_method_color = blue
# protected_method_color = blue
# pry_var_color = default
# pseudo_global_color = cyan
# public_method_color = default
# unloaded_constant_color = yellow
と思ったらもろ下記にかいてあります
https://github.com/pry/pry/blob/master/lib/pry/commands/ls.rb#L4
require 'pry/commands/ls/ls_entity'
class Pry
class Command::Ls < Pry::ClassCommand
DEFAULT_OPTIONS = {
:heading_color => :bright_blue,
:public_method_color => :default,
:private_method_color => :blue,
:protected_method_color => :blue,
:method_missing_color => :bright_red,
:local_var_color => :yellow,
:pry_var_color => :default, # e.g. _, _pry_, _file_
:instance_var_color => :blue, # e.g. @foo
:class_var_color => :bright_blue, # e.g. @@foo
:global_var_color => :default, # e.g. $CODERAY_DEBUG, $eventmachine_library
:builtin_global_color => :cyan, # e.g. $stdin, $-w, $PID
:pseudo_global_color => :cyan, # e.g. $~, $1..$9, $LAST_MATCH_INFO
:constant_color => :default, # e.g. VERSION, ARGF
:class_constant_color => :blue, # e.g. Object, Kernel
:exception_constant_color => :magenta, # e.g. Exception, RuntimeError
:unloaded_constant_color => :yellow, # Any constant that is still in .autoload? state
:separator => " ",
:ceiling => [Object, Module, Class]
}
...