pry--pry/lib/pry/config/default.rb

123 lines
4.6 KiB
Ruby

class Pry::Config::Default
include Pry::Config::Behavior
default = {
:input => proc { lazy_readline },
:output => proc { $stdout },
:commands => proc { Pry::Commands },
:prompt_name => proc { Pry::DEFAULT_PROMPT_NAME },
:prompt => proc { Pry::DEFAULT_PROMPT },
:prompt_safe_objects => proc { Pry::DEFAULT_PROMPT_SAFE_OBJECTS },
:print => proc { Pry::DEFAULT_PRINT },
:quiet => proc { false },
:exception_handler => proc { Pry::DEFAULT_EXCEPTION_HANDLER },
:exception_whitelist => proc { Pry::DEFAULT_EXCEPTION_WHITELIST },
:hooks => proc { Pry::DEFAULT_HOOKS },
:pager => proc { true },
:system => proc { Pry::DEFAULT_SYSTEM },
:color => proc { Pry::Helpers::BaseHelpers.use_ansi_codes? },
:default_window_size => proc { 5 },
:editor => proc { Pry.default_editor_for_platform }, # TODO: Pry::Platform.editor
:should_load_rc => proc { true },
:should_load_local_rc => proc { true },
:should_trap_interrupts => proc { Pry::Helpers::BaseHelpers.jruby? }, # TODO: Pry::Platform.jruby?
:disable_auto_reload => proc { false },
:command_prefix => proc { "" },
:auto_indent => proc { Pry::Helpers::BaseHelpers.use_ansi_codes? },
:correct_indent => proc { true },
:collision_warning => proc { false },
:output_prefix => proc { "=> "},
:requires => proc { [] },
:should_load_requires => proc { true },
:should_load_plugins => proc { true },
:control_d_handler => proc { Pry::DEFAULT_CONTROL_D_HANDLER },
:memory_size => proc { 100 },
:extra_sticky_locals => proc { {} },
:command_completions => proc { proc { commands.keys } },
:file_completions => proc { proc { Dir["."] } },
:completer => proc {
require "pry/input_completer"
Pry::InputCompleter.start
}
}
def initialize
super(nil)
configure_ls
configure_gist
configure_history
end
def quiet?
quiet
end
default.each do |key, value|
define_method(key) do
if default[key].equal?(value)
default[key] = instance_eval(&value)
end
default[key]
end
end
private
# TODO:
# all of this configure_* stuff is a relic of old code.
# we should try move this code to being command-local.
def configure_ls
self["ls"] = Pry::Config.from_hash({
: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]
})
end
def configure_gist
self["gist"] = Pry::Config.from_hash(inspecter: proc(&:pretty_inspect))
end
def configure_history
self["history"] = Pry::Config.from_hash "should_save" => true,
"should_load" => true
history.file = File.expand_path("~/.pry_history") rescue nil
if history.file.nil?
self.should_load_rc = false
history.should_save = false
history.should_load = false
end
end
def lazy_readline
require 'readline'
Readline
rescue LoadError
warn "Sorry, you can't use Pry without Readline or a compatible library."
warn "Possible solutions:"
warn " * Rebuild Ruby with Readline support using `--with-readline`"
warn " * Use the rb-readline gem, which is a pure-Ruby port of Readline"
warn " * Use the pry-coolline gem, a pure-ruby alternative to Readline"
raise
end
def is_editline?(input)
defined?(input::VERSION) && input::VERSION =~ /editline/i
end
end