lib/irb.rb in irb-1.1.0.pre.1 vs lib/irb.rb in irb-1.1.0.pre.2

- old
+ new

@@ -108,30 +108,29 @@ # IRB.conf[:PROMPT_MODE] = :DEFAULT # IRB.conf[:PROMPT] = {...} # # === Auto indentation # -# To enable auto-indent mode in irb, add the following to your +.irbrc+: +# To disable auto-indent mode in irb, add the following to your +.irbrc+: # -# IRB.conf[:AUTO_INDENT] = true +# IRB.conf[:AUTO_INDENT] = false # # === Autocompletion # # To enable autocompletion for irb, add the following to your +.irbrc+: # # require 'irb/completion' # # === History # -# By default, irb disables history and will not store any commands you used. +# By default, irb will store the last 1000 commands you used in +# <code>~/.irb_history</code>. # -# If you want to enable history, add the following to your +.irbrc+: +# If you want to disable history, add the following to your +.irbrc+: # -# IRB.conf[:SAVE_HISTORY] = 1000 +# IRB.conf[:SAVE_HISTORY] = nil # -# This will now store the last 1000 commands in <code>~/.irb_history</code>. -# # See IRB::Context#save_history= for more information. # # == Customizing the IRB Prompt # # In order to customize the prompt, you can change the following Hash: @@ -139,11 +138,11 @@ # IRB.conf[:PROMPT] # # This example can be used in your +.irbrc+ # # IRB.conf[:PROMPT][:MY_PROMPT] = { # name of prompt mode -# :AUTO_INDENT => true, # enables auto-indent mode +# :AUTO_INDENT => false, # disables auto-indent mode # :PROMPT_I => ">> ", # simple prompt # :PROMPT_S => nil, # prompt for continuated strings # :PROMPT_C => nil, # prompt for continuated statement # :RETURN => " ==>%s\n" # format to return value # } @@ -168,10 +167,11 @@ # # For instance, the default prompt mode is defined as follows: # # IRB.conf[:PROMPT_MODE][:DEFAULT] = { # :PROMPT_I => "%N(%m):%03n:%i> ", +# :PROMPT_N => "%N(%m):%03n:%i> ", # :PROMPT_S => "%N(%m):%03n:%i%l ", # :PROMPT_C => "%N(%m):%03n:%i* ", # :RETURN => "%s\n" # used to printf # } # @@ -459,18 +459,20 @@ if @context.prompting? @context.io.prompt = p = prompt(f, ltype, indent, line_no) else @context.io.prompt = p = "" end - if @context.auto_indent_mode + if @context.auto_indent_mode and !@context.io.respond_to?(:auto_indent) unless ltype - ind = prompt(@context.prompt_i, ltype, indent, line_no)[/.*\z/].size + + prompt_i = @context.prompt_i.nil? ? "" : @context.prompt_i + ind = prompt(prompt_i, ltype, indent, line_no)[/.*\z/].size + indent * 2 - p.size ind += 2 if continue @context.io.prompt = p + " " * ind if ind > 0 end end + @context.io.prompt end @scanner.set_input(@context.io) do signal_status(:IN_INPUT) do if l = @context.io.gets @@ -487,10 +489,12 @@ end l end end + @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 @context.evaluate(line, line_no, exception: exc) @@ -664,13 +668,21 @@ when "M" @context.main.inspect when "l" ltype when "i" - if $1 - format("%" + $1 + "d", indent) + if indent < 0 + if $1 + "-".rjust($1.to_i) + else + "-" + end else - indent.to_s + if $1 + format("%" + $1 + "d", indent) + else + indent.to_s + end end when "n" if $1 format("%" + $1 + "d", line_no) else