lib/irb.rb in irb-1.1.0.pre.3 vs lib/irb.rb in irb-1.1.0.pre.4

- old
+ new

@@ -43,12 +43,12 @@ # irb(main):004:2> print 1 # irb(main):005:2> end # irb(main):006:1> end # #=> nil # -# The Readline extension module can be used with irb. Use of Readline is -# default if it's installed. +# The singleline editor module or multiline editor module can be used with irb. +# Use of multiline editor is default if it's installed. # # == Command line options # # Usage: irb.rb [options] [programfile] [arguments] # -f Suppress read of ~/.irbrc @@ -59,22 +59,22 @@ # -E enc Same as `ruby -E` # -w Same as `ruby -w` # -W[level=2] Same as `ruby -W` # --inspect Use `inspect' for output (default except for bc mode) # --noinspect Don't use inspect for output -# --reidline Use Reidline extension module -# --noreidline Don't use Reidline extension module -# --readline Use Readline extension module -# --noreadline Don't use Readline extension module +# --multiline Use multiline editor module +# --nomultiline Don't use multiline editor module +# --singleline Use singleline editor module +# --nosingleline Don't use singleline editor 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' # --inf-ruby-mode Use prompt appropriate for inf-ruby-mode on emacs. -# Suppresses --reidline and --readline. +# Suppresses --multiline and --singleline. # --simple-prompt Simple prompt mode # --noprompt No prompt mode # --tracer Display trace for each execution of commands. # --back-trace-limit n # Display backtrace top n and tail n. The default @@ -98,12 +98,12 @@ # IRB.conf[:IRB_NAME]="irb" # IRB.conf[:INSPECT_MODE]=nil # IRB.conf[:IRB_RC] = nil # IRB.conf[:BACK_TRACE_LIMIT]=16 # IRB.conf[:USE_LOADER] = false -# IRB.conf[:USE_REIDLINE] = nil -# IRB.conf[:USE_READLINE] = nil +# IRB.conf[:USE_MULTILINE] = nil +# IRB.conf[:USE_SINGLELINE] = nil # IRB.conf[:USE_COLORIZE] = true # IRB.conf[:USE_TRACER] = false # IRB.conf[:IGNORE_SIGINT] = true # IRB.conf[:IGNORE_EOF] = false # IRB.conf[:PROMPT_MODE] = :DEFAULT @@ -122,18 +122,26 @@ # require 'irb/completion' # # === History # # By default, irb will store the last 1000 commands you used in -# <code>~/.irb_history</code>. +# <code>IRB.conf[:HISTORY_FILE]</code> (<code>~/.irb_history</code> by default). # # If you want to disable history, add the following to your +.irbrc+: # # IRB.conf[:SAVE_HISTORY] = nil # # See IRB::Context#save_history= for more information. # +# The history of _resuls_ of commands evaluated is not stored by default, +# but can be turned on to be stored with this +.irbrc+ setting: +# +# IRB.conf[:EVAL_HISTORY] = <number> +# +# See IRB::Context#eval_history= and History class. The history of command +# results is not permanently saved in any file. +# # == Customizing the IRB Prompt # # In order to customize the prompt, you can change the following Hash: # # IRB.conf[:PROMPT] @@ -272,11 +280,13 @@ # There are a few variables in every Irb session that can come in handy: # # <code>_</code>:: # The value command executed, as a local variable # <code>__</code>:: -# The history of evaluated commands +# The history of evaluated commands. Available only if +# <code>IRB.conf[:EVAL_HISTORY]</code> is not +nil+ (which is the default). +# See also IRB::Context#eval_history= and IRB::History. # <code>__[line_no]</code>:: # Returns the evaluation value at the given line number, +line_no+. # If +line_no+ is a negative, the return value +line_no+ many lines before # the most recent return value. # @@ -439,12 +449,12 @@ # "foo.bar=(1)" and "foo.[]=(1, bar)", when expressed that way, the former # be parsed as :assign and echo will be suppressed, but the latter is # parsed as a :method_add_arg and the output won't be suppressed # Creates a new irb session - def initialize(workspace = nil, input_method = nil, output_method = nil) - @context = Context.new(self, workspace, input_method, output_method) + def initialize(workspace = nil, input_method = nil) + @context = Context.new(self, workspace, input_method) @context.main.extend ExtendCommandBundle @signal_status = :IN_IRB @scanner = RubyLex.new end @@ -524,11 +534,11 @@ @scanner.set_auto_indent(@context) if @context.auto_indent_mode @scanner.each_top_level_statement do |line, line_no| signal_status(:IN_EVAL) do begin - line.untaint + line.untaint if RUBY_VERSION < '2.7' @context.evaluate(line, line_no, exception: exc) output_value if @context.echo? && (@context.echo_on_assignment? || !assignment_expression?(line)) rescue Interrupt => exc rescue SystemExit, SignalException raise @@ -754,11 +764,14 @@ # If the expression is invalid, Ripper.sexp should return nil which will # result in false being returned. Any valid expression should return an # s-expression where the second selement of the top level array is an # array of parsed expressions. The first element of each expression is the # expression's type. - ASSIGNMENT_NODE_TYPES.include?(Ripper.sexp(line)&.dig(1,-1,0)) + verbose, $VERBOSE = $VERBOSE, nil + result = ASSIGNMENT_NODE_TYPES.include?(Ripper.sexp(line)&.dig(1,-1,0)) + $VERBOSE = verbose + result end ATTR_TTY = "\e[%sm" def ATTR_TTY.[](*a) self % a.join(";"); end ATTR_PLAIN = "" @@ -848,8 +861,10 @@ # See IRB@IRB+Usage for more information. def irb IRB.setup(source_location[0], argv: []) workspace = IRB::WorkSpace.new(self) STDOUT.print(workspace.code_around_binding) - IRB::Irb.new(workspace).run(IRB.conf) + binding_irb = IRB::Irb.new(workspace) + binding_irb.context.irb_path = File.expand_path(source_location[0]) + binding_irb.run(IRB.conf) end end