irb 1.0.0 → 1.1.0.pre.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/irb.gemspec +1 -1
- data/lib/irb.rb +11 -8
- data/lib/irb/cmd/fork.rb +1 -1
- data/lib/irb/completion.rb +125 -30
- data/lib/irb/context.rb +55 -36
- data/lib/irb/ext/save-history.rb +6 -4
- data/lib/irb/init.rb +9 -4
- data/lib/irb/input-method.rb +96 -0
- data/lib/irb/inspector.rb +12 -2
- data/lib/irb/lc/help-message +2 -1
- data/lib/irb/lc/ja/help-message +2 -2
- data/lib/irb/ruby-lex.rb +216 -1063
- data/lib/irb/version.rb +2 -2
- data/lib/irb/workspace.rb +24 -6
- metadata +5 -12
- data/.gitignore +0 -9
- data/.travis.yml +0 -6
- data/Gemfile +0 -5
- data/Rakefile +0 -10
- data/bin/console +0 -6
- data/bin/setup +0 -6
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: f66136bc4e18da53d6d29f7b04244c16f4e195012723da1a35de758683092667
         | 
| 4 | 
            +
              data.tar.gz: be8a4c66b1823e4ac852c08a6299523edc6921b5a4ae9313a025d98105ee99e3
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 643216ead68eb3cf7e0b01164067c6f9ab41ad2f849a490e8f4eafbdbf97b4df4e2795cd87c30ae294cf6a9c6aa137fcce71e41700c8f4a0aa40fb47d9f5a779
         | 
| 7 | 
            +
              data.tar.gz: a069be08937a2fc54a31ea7c0ae4447027850b05b03a0f3a47e3ec2689099229666c33a83b593c1c8b0fe7b190dd90598fa22d9f367d5444dbae0cee57ac8365
         | 
    
        data/irb.gemspec
    CHANGED
    
    | @@ -16,7 +16,7 @@ Gem::Specification.new do |spec| | |
| 16 16 | 
             
              spec.homepage      = "https://github.com/ruby/irb"
         | 
| 17 17 | 
             
              spec.license       = "BSD-2-Clause"
         | 
| 18 18 |  | 
| 19 | 
            -
              spec.files         = [" | 
| 19 | 
            +
              spec.files         = ["LICENSE.txt", "README.md", "exe/irb", "irb.gemspec", "lib/irb.rb", "lib/irb/cmd/chws.rb", "lib/irb/cmd/fork.rb", "lib/irb/cmd/help.rb", "lib/irb/cmd/load.rb", "lib/irb/cmd/nop.rb", "lib/irb/cmd/pushws.rb", "lib/irb/cmd/subirb.rb", "lib/irb/completion.rb", "lib/irb/context.rb", "lib/irb/ext/change-ws.rb", "lib/irb/ext/history.rb", "lib/irb/ext/loader.rb", "lib/irb/ext/multi-irb.rb", "lib/irb/ext/save-history.rb", "lib/irb/ext/tracer.rb", "lib/irb/ext/use-loader.rb", "lib/irb/ext/workspaces.rb", "lib/irb/extend-command.rb", "lib/irb/frame.rb", "lib/irb/help.rb", "lib/irb/init.rb", "lib/irb/input-method.rb", "lib/irb/inspector.rb", "lib/irb/lc/.document", "lib/irb/lc/error.rb", "lib/irb/lc/help-message", "lib/irb/lc/ja/encoding_aliases.rb", "lib/irb/lc/ja/error.rb", "lib/irb/lc/ja/help-message", "lib/irb/locale.rb", "lib/irb/magic-file.rb", "lib/irb/notifier.rb", "lib/irb/output-method.rb", "lib/irb/ruby-lex.rb", "lib/irb/ruby-token.rb", "lib/irb/slex.rb", "lib/irb/src_encoding.rb", "lib/irb/version.rb", "lib/irb/workspace.rb", "lib/irb/ws-for-case-2.rb", "lib/irb/xmp.rb"]
         | 
| 20 20 | 
             
              spec.bindir        = "exe"
         | 
| 21 21 | 
             
              spec.executables   = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
         | 
| 22 22 | 
             
              spec.require_paths = ["lib"]
         | 
    
        data/lib/irb.rb
    CHANGED
    
    | @@ -18,6 +18,7 @@ require "irb/extend-command" | |
| 18 18 | 
             
            require "irb/ruby-lex"
         | 
| 19 19 | 
             
            require "irb/input-method"
         | 
| 20 20 | 
             
            require "irb/locale"
         | 
| 21 | 
            +
            require "irb/color"
         | 
| 21 22 |  | 
| 22 23 | 
             
            require "irb/version"
         | 
| 23 24 |  | 
| @@ -59,21 +60,24 @@ require "irb/version" | |
| 59 60 | 
             
            #     -W[level=2]       Same as `ruby -W`
         | 
| 60 61 | 
             
            #     --inspect         Use `inspect' for output (default except for bc mode)
         | 
| 61 62 | 
             
            #     --noinspect       Don't use inspect for output
         | 
| 63 | 
            +
            #     --reidline        Use Reidline extension module
         | 
| 64 | 
            +
            #     --noreidline      Don't use Reidline extension module
         | 
| 62 65 | 
             
            #     --readline        Use Readline extension module
         | 
| 63 66 | 
             
            #     --noreadline      Don't use Readline extension module
         | 
| 67 | 
            +
            #     --colorize        Use colorization
         | 
| 68 | 
            +
            #     --nocolorize      Don't use colorization
         | 
| 64 69 | 
             
            #     --prompt prompt-mode
         | 
| 65 70 | 
             
            #     --prompt-mode prompt-mode
         | 
| 66 71 | 
             
            #                       Switch prompt mode. Pre-defined prompt modes are
         | 
| 67 72 | 
             
            #                       `default', `simple', `xmp' and `inf-ruby'
         | 
| 68 73 | 
             
            #     --inf-ruby-mode   Use prompt appropriate for inf-ruby-mode on emacs.
         | 
| 69 | 
            -
            #                       Suppresses --readline.
         | 
| 74 | 
            +
            #                       Suppresses --reidline and --readline.
         | 
| 70 75 | 
             
            #     --simple-prompt   Simple prompt mode
         | 
| 71 76 | 
             
            #     --noprompt        No prompt mode
         | 
| 72 77 | 
             
            #     --tracer          Display trace for each execution of commands.
         | 
| 73 78 | 
             
            #     --back-trace-limit n
         | 
| 74 79 | 
             
            #                       Display backtrace top n and tail n. The default
         | 
| 75 80 | 
             
            #                       value is 16.
         | 
| 76 | 
            -
            #     --irb_debug n     Set internal debug level to n (not for popular use)
         | 
| 77 81 | 
             
            #     -v, --version     Print the version of irb
         | 
| 78 82 | 
             
            #
         | 
| 79 83 | 
             
            # == Configuration
         | 
| @@ -95,13 +99,14 @@ require "irb/version" | |
| 95 99 | 
             
            #     IRB.conf[:IRB_RC] = nil
         | 
| 96 100 | 
             
            #     IRB.conf[:BACK_TRACE_LIMIT]=16
         | 
| 97 101 | 
             
            #     IRB.conf[:USE_LOADER] = false
         | 
| 102 | 
            +
            #     IRB.conf[:USE_REIDLINE] = nil
         | 
| 98 103 | 
             
            #     IRB.conf[:USE_READLINE] = nil
         | 
| 104 | 
            +
            #     IRB.conf[:USE_COLORIZE] = true
         | 
| 99 105 | 
             
            #     IRB.conf[:USE_TRACER] = false
         | 
| 100 106 | 
             
            #     IRB.conf[:IGNORE_SIGINT] = true
         | 
| 101 107 | 
             
            #     IRB.conf[:IGNORE_EOF] = false
         | 
| 102 108 | 
             
            #     IRB.conf[:PROMPT_MODE] = :DEFAULT
         | 
| 103 109 | 
             
            #     IRB.conf[:PROMPT] = {...}
         | 
| 104 | 
            -
            #     IRB.conf[:DEBUG_LEVEL]=0
         | 
| 105 110 | 
             
            #
         | 
| 106 111 | 
             
            # === Auto indentation
         | 
| 107 112 | 
             
            #
         | 
| @@ -410,9 +415,7 @@ module IRB | |
| 410 415 | 
             
                  @context = Context.new(self, workspace, input_method, output_method)
         | 
| 411 416 | 
             
                  @context.main.extend ExtendCommandBundle
         | 
| 412 417 | 
             
                  @signal_status = :IN_IRB
         | 
| 413 | 
            -
             | 
| 414 418 | 
             
                  @scanner = RubyLex.new
         | 
| 415 | 
            -
                  @scanner.exception_on_syntax_error = false
         | 
| 416 419 | 
             
                end
         | 
| 417 420 |  | 
| 418 421 | 
             
                def run(conf = IRB.conf)
         | 
| @@ -749,8 +752,8 @@ class Binding | |
| 749 752 | 
             
              #
         | 
| 750 753 | 
             
              #     Potato.new
         | 
| 751 754 | 
             
              #
         | 
| 752 | 
            -
              # Running  | 
| 753 | 
            -
              # called, and you will see the following:
         | 
| 755 | 
            +
              # Running <code>ruby potato.rb</code> will open an IRB session where
         | 
| 756 | 
            +
              # +binding.irb+ is called, and you will see the following:
         | 
| 754 757 | 
             
              #
         | 
| 755 758 | 
             
              #     $ ruby potato.rb
         | 
| 756 759 | 
             
              #
         | 
| @@ -780,7 +783,7 @@ class Binding | |
| 780 783 | 
             
              #     irb(#<Potato:0x00007feea1916670>):004:0> @cooked = true
         | 
| 781 784 | 
             
              #     => true
         | 
| 782 785 | 
             
              #
         | 
| 783 | 
            -
              # You can exit the IRB session with the  | 
| 786 | 
            +
              # You can exit the IRB session with the +exit+ command. Note that exiting will
         | 
| 784 787 | 
             
              # resume execution where +binding.irb+ had paused it, as you can see from the
         | 
| 785 788 | 
             
              # output printed to standard output in this example:
         | 
| 786 789 | 
             
              #
         | 
    
        data/lib/irb/cmd/fork.rb
    CHANGED
    
    
    
        data/lib/irb/completion.rb
    CHANGED
    
    | @@ -8,6 +8,7 @@ | |
| 8 8 | 
             
            #
         | 
| 9 9 |  | 
| 10 10 | 
             
            require "readline"
         | 
| 11 | 
            +
            require "rdoc"
         | 
| 11 12 |  | 
| 12 13 | 
             
            module IRB
         | 
| 13 14 | 
             
              module InputCompletor # :nodoc:
         | 
| @@ -35,7 +36,13 @@ module IRB | |
| 35 36 | 
             
                  yield
         | 
| 36 37 | 
             
                ]
         | 
| 37 38 |  | 
| 39 | 
            +
                BASIC_WORD_BREAK_CHARACTERS = " \t\n`><=;|&{("
         | 
| 40 | 
            +
             | 
| 38 41 | 
             
                CompletionProc = proc { |input|
         | 
| 42 | 
            +
                  retrieve_completion_data(input).compact.map{ |i| i.encode(Encoding.default_external) }
         | 
| 43 | 
            +
                }
         | 
| 44 | 
            +
             | 
| 45 | 
            +
                def self.retrieve_completion_data(input, doc_namespace = false)
         | 
| 39 46 | 
             
                  bind = IRB.conf[:MAIN_CONTEXT].workspace.binding
         | 
| 40 47 |  | 
| 41 48 | 
             
                  case input
         | 
| @@ -45,7 +52,11 @@ module IRB | |
| 45 52 | 
             
                    message = Regexp.quote($3)
         | 
| 46 53 |  | 
| 47 54 | 
             
                    candidates = String.instance_methods.collect{|m| m.to_s}
         | 
| 48 | 
            -
                     | 
| 55 | 
            +
                    if doc_namespace
         | 
| 56 | 
            +
                      "String.#{message}"
         | 
| 57 | 
            +
                    else
         | 
| 58 | 
            +
                      select_message(receiver, message, candidates)
         | 
| 59 | 
            +
                    end
         | 
| 49 60 |  | 
| 50 61 | 
             
                  when /^(\/[^\/]*\/)\.([^.]*)$/
         | 
| 51 62 | 
             
                    # Regexp
         | 
| @@ -53,7 +64,11 @@ module IRB | |
| 53 64 | 
             
                    message = Regexp.quote($2)
         | 
| 54 65 |  | 
| 55 66 | 
             
                    candidates = Regexp.instance_methods.collect{|m| m.to_s}
         | 
| 56 | 
            -
                     | 
| 67 | 
            +
                    if doc_namespace
         | 
| 68 | 
            +
                      "Regexp.#{message}"
         | 
| 69 | 
            +
                    else
         | 
| 70 | 
            +
                      select_message(receiver, message, candidates)
         | 
| 71 | 
            +
                    end
         | 
| 57 72 |  | 
| 58 73 | 
             
                  when /^([^\]]*\])\.([^.]*)$/
         | 
| 59 74 | 
             
                    # Array
         | 
| @@ -61,19 +76,28 @@ module IRB | |
| 61 76 | 
             
                    message = Regexp.quote($2)
         | 
| 62 77 |  | 
| 63 78 | 
             
                    candidates = Array.instance_methods.collect{|m| m.to_s}
         | 
| 64 | 
            -
                     | 
| 79 | 
            +
                    if doc_namespace
         | 
| 80 | 
            +
                      "Array.#{message}"
         | 
| 81 | 
            +
                    else
         | 
| 82 | 
            +
                      select_message(receiver, message, candidates)
         | 
| 83 | 
            +
                    end
         | 
| 65 84 |  | 
| 66 85 | 
             
                  when /^([^\}]*\})\.([^.]*)$/
         | 
| 67 86 | 
             
                    # Proc or Hash
         | 
| 68 87 | 
             
                    receiver = $1
         | 
| 69 88 | 
             
                    message = Regexp.quote($2)
         | 
| 70 89 |  | 
| 71 | 
            -
                     | 
| 72 | 
            -
                     | 
| 73 | 
            -
                     | 
| 90 | 
            +
                    proc_candidates = Proc.instance_methods.collect{|m| m.to_s}
         | 
| 91 | 
            +
                    hash_candidates = Hash.instance_methods.collect{|m| m.to_s}
         | 
| 92 | 
            +
                    if doc_namespace
         | 
| 93 | 
            +
                      ["Proc.#{message}", "Hash.#{message}"]
         | 
| 94 | 
            +
                    else
         | 
| 95 | 
            +
                      select_message(receiver, message, proc_candidates | hash_candidates)
         | 
| 96 | 
            +
                    end
         | 
| 74 97 |  | 
| 75 98 | 
             
                  when /^(:[^:.]*)$/
         | 
| 76 99 | 
             
                    # Symbol
         | 
| 100 | 
            +
                    return nil if doc_namespace
         | 
| 77 101 | 
             
                    if Symbol.respond_to?(:all_symbols)
         | 
| 78 102 | 
             
                      sym = $1
         | 
| 79 103 | 
             
                      candidates = Symbol.all_symbols.collect{|s| ":" + s.id2name}
         | 
| @@ -86,7 +110,11 @@ module IRB | |
| 86 110 | 
             
                    # Absolute Constant or class methods
         | 
| 87 111 | 
             
                    receiver = $1
         | 
| 88 112 | 
             
                    candidates = Object.constants.collect{|m| m.to_s}
         | 
| 89 | 
            -
                     | 
| 113 | 
            +
                    if doc_namespace
         | 
| 114 | 
            +
                      candidates.find { |i| i == receiver }
         | 
| 115 | 
            +
                    else
         | 
| 116 | 
            +
                      candidates.grep(/^#{receiver}/).collect{|e| "::" + e}
         | 
| 117 | 
            +
                    end
         | 
| 90 118 |  | 
| 91 119 | 
             
                  when /^([A-Z].*)::([^:.]*)$/
         | 
| 92 120 | 
             
                    # Constant or class methods
         | 
| @@ -98,7 +126,11 @@ module IRB | |
| 98 126 | 
             
                    rescue Exception
         | 
| 99 127 | 
             
                      candidates = []
         | 
| 100 128 | 
             
                    end
         | 
| 101 | 
            -
                     | 
| 129 | 
            +
                    if doc_namespace
         | 
| 130 | 
            +
                      "#{receiver}::#{message}"
         | 
| 131 | 
            +
                    else
         | 
| 132 | 
            +
                      select_message(receiver, message, candidates, "::")
         | 
| 133 | 
            +
                    end
         | 
| 102 134 |  | 
| 103 135 | 
             
                  when /^(:[^:.]+)(\.|::)([^.]*)$/
         | 
| 104 136 | 
             
                    # Symbol
         | 
| @@ -107,20 +139,33 @@ module IRB | |
| 107 139 | 
             
                    message = Regexp.quote($3)
         | 
| 108 140 |  | 
| 109 141 | 
             
                    candidates = Symbol.instance_methods.collect{|m| m.to_s}
         | 
| 110 | 
            -
                     | 
| 142 | 
            +
                    if doc_namespace
         | 
| 143 | 
            +
                      "Symbol.#{message}"
         | 
| 144 | 
            +
                    else
         | 
| 145 | 
            +
                      select_message(receiver, message, candidates, sep)
         | 
| 146 | 
            +
                    end
         | 
| 111 147 |  | 
| 112 | 
            -
                  when /^( | 
| 148 | 
            +
                  when /^(?<num>-?(0[dbo])?[0-9_]+(\.[0-9_]+)?([eE][+-]?[0-9]+i?|r)?)(?<sep>\.|::)(?<mes>[^.]*)$/
         | 
| 113 149 | 
             
                    # Numeric
         | 
| 114 | 
            -
                    receiver =  | 
| 115 | 
            -
                    sep =  | 
| 116 | 
            -
                    message = Regexp.quote( | 
| 150 | 
            +
                    receiver = $~[:num]
         | 
| 151 | 
            +
                    sep = $~[:sep]
         | 
| 152 | 
            +
                    message = Regexp.quote($~[:mes])
         | 
| 117 153 |  | 
| 118 154 | 
             
                    begin
         | 
| 119 | 
            -
                       | 
| 155 | 
            +
                      instance = eval(receiver, bind)
         | 
| 156 | 
            +
                      if doc_namespace
         | 
| 157 | 
            +
                        "#{instance.class.name}.#{message}"
         | 
| 158 | 
            +
                      else
         | 
| 159 | 
            +
                        candidates = instance.methods.collect{|m| m.to_s}
         | 
| 160 | 
            +
                        select_message(receiver, message, candidates, sep)
         | 
| 161 | 
            +
                      end
         | 
| 120 162 | 
             
                    rescue Exception
         | 
| 121 | 
            -
                       | 
| 163 | 
            +
                      if doc_namespace
         | 
| 164 | 
            +
                        nil
         | 
| 165 | 
            +
                      else
         | 
| 166 | 
            +
                        candidates = []
         | 
| 167 | 
            +
                      end
         | 
| 122 168 | 
             
                    end
         | 
| 123 | 
            -
                    select_message(receiver, message, candidates, sep)
         | 
| 124 169 |  | 
| 125 170 | 
             
                  when /^(-?0x[0-9a-fA-F_]+)(\.|::)([^.]*)$/
         | 
| 126 171 | 
             
                    # Numeric(0xFFFF)
         | 
| @@ -129,16 +174,30 @@ module IRB | |
| 129 174 | 
             
                    message = Regexp.quote($3)
         | 
| 130 175 |  | 
| 131 176 | 
             
                    begin
         | 
| 132 | 
            -
                       | 
| 177 | 
            +
                      instance = eval(receiver, bind)
         | 
| 178 | 
            +
                      if doc_namespace
         | 
| 179 | 
            +
                        "#{instance.class.name}.#{message}"
         | 
| 180 | 
            +
                      else
         | 
| 181 | 
            +
                        candidates = instance.methods.collect{|m| m.to_s}
         | 
| 182 | 
            +
                        select_message(receiver, message, candidates, sep)
         | 
| 183 | 
            +
                      end
         | 
| 133 184 | 
             
                    rescue Exception
         | 
| 134 | 
            -
                       | 
| 185 | 
            +
                      if doc_namespace
         | 
| 186 | 
            +
                        nil
         | 
| 187 | 
            +
                      else
         | 
| 188 | 
            +
                        candidates = []
         | 
| 189 | 
            +
                      end
         | 
| 135 190 | 
             
                    end
         | 
| 136 | 
            -
                    select_message(receiver, message, candidates, sep)
         | 
| 137 191 |  | 
| 138 192 | 
             
                  when /^(\$[^.]*)$/
         | 
| 139 193 | 
             
                    # global var
         | 
| 140 | 
            -
                     | 
| 141 | 
            -
                     | 
| 194 | 
            +
                    gvar = $1
         | 
| 195 | 
            +
                    all_gvars = global_variables.collect{|m| m.to_s}
         | 
| 196 | 
            +
                    if doc_namespace
         | 
| 197 | 
            +
                      all_gvars.find{ |i| i == gvar }
         | 
| 198 | 
            +
                    else
         | 
| 199 | 
            +
                      all_gvars.grep(Regexp.new(Regexp.quote(gvar)))
         | 
| 200 | 
            +
                    end
         | 
| 142 201 |  | 
| 143 202 | 
             
                  when /^([^."].*)(\.|::)([^.]*)$/
         | 
| 144 203 | 
             
                    # variable.func or func.func
         | 
| @@ -177,7 +236,11 @@ module IRB | |
| 177 236 | 
             
                      candidates.sort!
         | 
| 178 237 | 
             
                      candidates.uniq!
         | 
| 179 238 | 
             
                    end
         | 
| 180 | 
            -
                     | 
| 239 | 
            +
                    if doc_namespace
         | 
| 240 | 
            +
                      "#{rec.class.name}#{sep}#{candidates.find{ |i| i == message }}"
         | 
| 241 | 
            +
                    else
         | 
| 242 | 
            +
                      select_message(receiver, message, candidates, sep)
         | 
| 243 | 
            +
                    end
         | 
| 181 244 |  | 
| 182 245 | 
             
                  when /^\.([^.]*)$/
         | 
| 183 246 | 
             
                    # unknown(maybe String)
         | 
| @@ -186,12 +249,50 @@ module IRB | |
| 186 249 | 
             
                    message = Regexp.quote($1)
         | 
| 187 250 |  | 
| 188 251 | 
             
                    candidates = String.instance_methods(true).collect{|m| m.to_s}
         | 
| 189 | 
            -
                     | 
| 252 | 
            +
                    if doc_namespace
         | 
| 253 | 
            +
                      "String.#{candidates.find{ |i| i == message }}"
         | 
| 254 | 
            +
                    else
         | 
| 255 | 
            +
                      select_message(receiver, message, candidates)
         | 
| 256 | 
            +
                    end
         | 
| 190 257 |  | 
| 191 258 | 
             
                  else
         | 
| 192 259 | 
             
                    candidates = eval("methods | private_methods | local_variables | instance_variables | self.class.constants", bind).collect{|m| m.to_s}
         | 
| 260 | 
            +
                    conditions |= ReservedWords
         | 
| 261 | 
            +
             | 
| 262 | 
            +
                    if doc_namespace
         | 
| 263 | 
            +
                      candidates.find{ |i| i == input }
         | 
| 264 | 
            +
                    else
         | 
| 265 | 
            +
                      candidates.grep(/^#{Regexp.quote(input)}/)
         | 
| 266 | 
            +
                    end
         | 
| 267 | 
            +
                  end
         | 
| 268 | 
            +
                end
         | 
| 193 269 |  | 
| 194 | 
            -
             | 
| 270 | 
            +
                RDocRIDriver = RDoc::RI::Driver.new
         | 
| 271 | 
            +
                PerfectMatchedProc = ->(matched) {
         | 
| 272 | 
            +
                  if matched =~ /\A(?:::)?RubyVM/ and not ENV['RUBY_YES_I_AM_NOT_A_NORMAL_USER']
         | 
| 273 | 
            +
                    File.open(File.join(__dir__, 'ruby_logo.aa')) do |f|
         | 
| 274 | 
            +
                      RDocRIDriver.page do |io|
         | 
| 275 | 
            +
                        IO.copy_stream(f, io)
         | 
| 276 | 
            +
                      end
         | 
| 277 | 
            +
                    end
         | 
| 278 | 
            +
                    return
         | 
| 279 | 
            +
                  end
         | 
| 280 | 
            +
                  namespace = retrieve_completion_data(matched, true)
         | 
| 281 | 
            +
                  return unless matched
         | 
| 282 | 
            +
                  if namespace.is_a?(Array)
         | 
| 283 | 
            +
                    out = RDoc::Markup::Document.new
         | 
| 284 | 
            +
                    namespace.each do |m|
         | 
| 285 | 
            +
                      begin
         | 
| 286 | 
            +
                        RDocRIDriver.add_method(out, m)
         | 
| 287 | 
            +
                      rescue RDoc::RI::Driver::NotFoundError
         | 
| 288 | 
            +
                      end
         | 
| 289 | 
            +
                    end
         | 
| 290 | 
            +
                    RDocRIDriver.display(out)
         | 
| 291 | 
            +
                  else
         | 
| 292 | 
            +
                    begin
         | 
| 293 | 
            +
                      RDocRIDriver.display_names([namespace])
         | 
| 294 | 
            +
                    rescue RDoc::RI::Driver::NotFoundError
         | 
| 295 | 
            +
                    end
         | 
| 195 296 | 
             
                  end
         | 
| 196 297 | 
             
                }
         | 
| 197 298 |  | 
| @@ -236,9 +337,3 @@ module IRB | |
| 236 337 | 
             
                end
         | 
| 237 338 | 
             
              end
         | 
| 238 339 | 
             
            end
         | 
| 239 | 
            -
             | 
| 240 | 
            -
            if Readline.respond_to?("basic_word_break_characters=")
         | 
| 241 | 
            -
              Readline.basic_word_break_characters= " \t\n`><=;|&{("
         | 
| 242 | 
            -
            end
         | 
| 243 | 
            -
            Readline.completion_append_character = nil
         | 
| 244 | 
            -
            Readline.completion_proc = IRB::InputCompletor::CompletionProc
         | 
    
        data/lib/irb/context.rb
    CHANGED
    
    | @@ -22,7 +22,7 @@ module IRB | |
| 22 22 | 
             
                #
         | 
| 23 23 | 
             
                # The optional +input_method+ argument:
         | 
| 24 24 | 
             
                #
         | 
| 25 | 
            -
                # +nil+::     uses stdin or Readline
         | 
| 25 | 
            +
                # +nil+::     uses stdin or Reidline or Readline
         | 
| 26 26 | 
             
                # +String+::  uses a File
         | 
| 27 27 | 
             
                # +other+::   uses this as InputMethod
         | 
| 28 28 | 
             
                def initialize(irb, workspace = nil, input_method = nil, output_method = nil)
         | 
| @@ -40,6 +40,8 @@ module IRB | |
| 40 40 | 
             
                  @load_modules = IRB.conf[:LOAD_MODULES]
         | 
| 41 41 |  | 
| 42 42 | 
             
                  @use_readline = IRB.conf[:USE_READLINE]
         | 
| 43 | 
            +
                  @use_reidline = IRB.conf[:USE_REIDLINE]
         | 
| 44 | 
            +
                  @use_colorize = IRB.conf[:USE_COLORIZE]
         | 
| 43 45 | 
             
                  @verbose = IRB.conf[:VERBOSE]
         | 
| 44 46 | 
             
                  @io = nil
         | 
| 45 47 |  | 
| @@ -64,23 +66,41 @@ module IRB | |
| 64 66 |  | 
| 65 67 | 
             
                  case input_method
         | 
| 66 68 | 
             
                  when nil
         | 
| 67 | 
            -
                     | 
| 69 | 
            +
                    @io = nil
         | 
| 70 | 
            +
                    case use_reidline?
         | 
| 68 71 | 
             
                    when nil
         | 
| 69 | 
            -
                      if  | 
| 70 | 
            -
             | 
| 71 | 
            -
                        @io = ReadlineInputMethod.new
         | 
| 72 | 
            +
                      if STDIN.tty? && IRB.conf[:PROMPT_MODE] != :INF_RUBY && !use_readline?
         | 
| 73 | 
            +
                        @io = ReidlineInputMethod.new
         | 
| 72 74 | 
             
                      else
         | 
| 73 | 
            -
                        @io =  | 
| 75 | 
            +
                        @io = nil
         | 
| 74 76 | 
             
                      end
         | 
| 75 77 | 
             
                    when false
         | 
| 76 | 
            -
                      @io =  | 
| 78 | 
            +
                      @io = nil
         | 
| 77 79 | 
             
                    when true
         | 
| 78 | 
            -
                       | 
| 79 | 
            -
             | 
| 80 | 
            +
                      @io = ReidlineInputMethod.new
         | 
| 81 | 
            +
                    end
         | 
| 82 | 
            +
                    unless @io
         | 
| 83 | 
            +
                      case use_readline?
         | 
| 84 | 
            +
                      when nil
         | 
| 85 | 
            +
                        if (defined?(ReadlineInputMethod) && STDIN.tty? &&
         | 
| 86 | 
            +
                            IRB.conf[:PROMPT_MODE] != :INF_RUBY)
         | 
| 87 | 
            +
                          @io = ReadlineInputMethod.new
         | 
| 88 | 
            +
                        else
         | 
| 89 | 
            +
                          @io = nil
         | 
| 90 | 
            +
                        end
         | 
| 91 | 
            +
                      when false
         | 
| 92 | 
            +
                        @io = nil
         | 
| 93 | 
            +
                      when true
         | 
| 94 | 
            +
                        if defined?(ReadlineInputMethod)
         | 
| 95 | 
            +
                          @io = ReadlineInputMethod.new
         | 
| 96 | 
            +
                        else
         | 
| 97 | 
            +
                          @io = nil
         | 
| 98 | 
            +
                        end
         | 
| 80 99 | 
             
                      else
         | 
| 81 | 
            -
                        @io =  | 
| 100 | 
            +
                        @io = nil
         | 
| 82 101 | 
             
                      end
         | 
| 83 102 | 
             
                    end
         | 
| 103 | 
            +
                    @io = StdioInputMethod.new unless @io
         | 
| 84 104 |  | 
| 85 105 | 
             
                  when String
         | 
| 86 106 | 
             
                    @io = FileInputMethod.new(input_method)
         | 
| @@ -101,7 +121,6 @@ module IRB | |
| 101 121 | 
             
                  if @echo.nil?
         | 
| 102 122 | 
             
                    @echo = true
         | 
| 103 123 | 
             
                  end
         | 
| 104 | 
            -
                  self.debug_level = IRB.conf[:DEBUG_LEVEL]
         | 
| 105 124 | 
             
                end
         | 
| 106 125 |  | 
| 107 126 | 
             
                # The top-level workspace, see WorkSpace#main
         | 
| @@ -117,9 +136,9 @@ module IRB | |
| 117 136 | 
             
                attr_reader :thread
         | 
| 118 137 | 
             
                # The current input method
         | 
| 119 138 | 
             
                #
         | 
| 120 | 
            -
                # Can be either StdioInputMethod, ReadlineInputMethod, | 
| 121 | 
            -
                # other specified when the | 
| 122 | 
            -
                # information on +input_method+.
         | 
| 139 | 
            +
                # Can be either StdioInputMethod, ReadlineInputMethod,
         | 
| 140 | 
            +
                # ReidlineInputMethod, FileInputMethod or other specified when the
         | 
| 141 | 
            +
                # context is created. See ::new for more # information on +input_method+.
         | 
| 123 142 | 
             
                attr_accessor :io
         | 
| 124 143 |  | 
| 125 144 | 
             
                # Current irb session
         | 
| @@ -137,12 +156,22 @@ module IRB | |
| 137 156 | 
             
                # +input_method+ passed to Context.new
         | 
| 138 157 | 
             
                attr_accessor :irb_path
         | 
| 139 158 |  | 
| 159 | 
            +
                # Whether +Reidline+ is enabled or not.
         | 
| 160 | 
            +
                #
         | 
| 161 | 
            +
                # A copy of the default <code>IRB.conf[:USE_REIDLINE]</code>
         | 
| 162 | 
            +
                #
         | 
| 163 | 
            +
                # See #use_reidline= for more information.
         | 
| 164 | 
            +
                attr_reader :use_reidline
         | 
| 140 165 | 
             
                # Whether +Readline+ is enabled or not.
         | 
| 141 166 | 
             
                #
         | 
| 142 167 | 
             
                # A copy of the default <code>IRB.conf[:USE_READLINE]</code>
         | 
| 143 168 | 
             
                #
         | 
| 144 169 | 
             
                # See #use_readline= for more information.
         | 
| 145 170 | 
             
                attr_reader :use_readline
         | 
| 171 | 
            +
                # Whether colorization is enabled or not.
         | 
| 172 | 
            +
                #
         | 
| 173 | 
            +
                # A copy of the default <code>IRB.conf[:USE_COLORIZE]</code>
         | 
| 174 | 
            +
                attr_reader :use_colorize
         | 
| 146 175 | 
             
                # A copy of the default <code>IRB.conf[:INSPECT_MODE]</code>
         | 
| 147 176 | 
             
                attr_reader :inspect_mode
         | 
| 148 177 |  | 
| @@ -211,10 +240,6 @@ module IRB | |
| 211 240 | 
             
                #
         | 
| 212 241 | 
             
                # A copy of the default <code>IRB.conf[:VERBOSE]</code>
         | 
| 213 242 | 
             
                attr_accessor :verbose
         | 
| 214 | 
            -
                # The debug level of irb
         | 
| 215 | 
            -
                #
         | 
| 216 | 
            -
                # See #debug_level= for more information.
         | 
| 217 | 
            -
                attr_reader :debug_level
         | 
| 218 243 |  | 
| 219 244 | 
             
                # The limit of backtrace lines displayed as top +n+ and tail +n+.
         | 
| 220 245 | 
             
                #
         | 
| @@ -225,8 +250,12 @@ module IRB | |
| 225 250 | 
             
                # See IRB@Command+line+options for more command line options.
         | 
| 226 251 | 
             
                attr_accessor :back_trace_limit
         | 
| 227 252 |  | 
| 253 | 
            +
                # Alias for #use_reidline
         | 
| 254 | 
            +
                alias use_reidline? use_reidline
         | 
| 228 255 | 
             
                # Alias for #use_readline
         | 
| 229 256 | 
             
                alias use_readline? use_readline
         | 
| 257 | 
            +
                # Alias for #use_colorize
         | 
| 258 | 
            +
                alias use_colorize? use_colorize
         | 
| 230 259 | 
             
                # Alias for #rc
         | 
| 231 260 | 
             
                alias rc? rc
         | 
| 232 261 | 
             
                alias ignore_sigint? ignore_sigint
         | 
| @@ -236,7 +265,9 @@ module IRB | |
| 236 265 | 
             
                # Returns whether messages are displayed or not.
         | 
| 237 266 | 
             
                def verbose?
         | 
| 238 267 | 
             
                  if @verbose.nil?
         | 
| 239 | 
            -
                    if  | 
| 268 | 
            +
                    if @io.kind_of?(ReidlineInputMethod)
         | 
| 269 | 
            +
                      false
         | 
| 270 | 
            +
                    elsif defined?(ReadlineInputMethod) && @io.kind_of?(ReadlineInputMethod)
         | 
| 240 271 | 
             
                      false
         | 
| 241 272 | 
             
                    elsif !STDIN.tty? or @io.kind_of?(FileInputMethod)
         | 
| 242 273 | 
             
                      true
         | 
| @@ -249,9 +280,11 @@ module IRB | |
| 249 280 | 
             
                end
         | 
| 250 281 |  | 
| 251 282 | 
             
                # Whether #verbose? is +true+, and +input_method+ is either
         | 
| 252 | 
            -
                # StdioInputMethod or ReadlineInputMethod, see #io | 
| 283 | 
            +
                # StdioInputMethod or ReidlineInputMethod or ReadlineInputMethod, see #io
         | 
| 284 | 
            +
                # for more information.
         | 
| 253 285 | 
             
                def prompting?
         | 
| 254 286 | 
             
                  verbose? || (STDIN.tty? && @io.kind_of?(StdioInputMethod) ||
         | 
| 287 | 
            +
                               @io.kind_of?(ReidlineInputMethod) ||
         | 
| 255 288 | 
             
                               (defined?(ReadlineInputMethod) && @io.kind_of?(ReadlineInputMethod)))
         | 
| 256 289 | 
             
                end
         | 
| 257 290 |  | 
| @@ -361,25 +394,11 @@ module IRB | |
| 361 394 | 
             
                  print "Do nothing."
         | 
| 362 395 | 
             
                end
         | 
| 363 396 |  | 
| 364 | 
            -
                # Sets the debug level of irb
         | 
| 365 | 
            -
                #
         | 
| 366 | 
            -
                # Can also be set using the +--irb_debug+ command line option.
         | 
| 367 | 
            -
                #
         | 
| 368 | 
            -
                # See IRB@Command+line+options for more command line options.
         | 
| 369 | 
            -
                def debug_level=(value)
         | 
| 370 | 
            -
                  @debug_level = value
         | 
| 371 | 
            -
                  RubyLex.debug_level = value
         | 
| 372 | 
            -
                end
         | 
| 373 | 
            -
             | 
| 374 | 
            -
                # Whether or not debug mode is enabled, see #debug_level=.
         | 
| 375 | 
            -
                def debug?
         | 
| 376 | 
            -
                  @debug_level > 0
         | 
| 377 | 
            -
                end
         | 
| 378 | 
            -
             | 
| 379 397 | 
             
                def evaluate(line, line_no, exception: nil) # :nodoc:
         | 
| 380 398 | 
             
                  @line_no = line_no
         | 
| 381 399 | 
             
                  if exception
         | 
| 382 | 
            -
                     | 
| 400 | 
            +
                    line_no -= 1
         | 
| 401 | 
            +
                    line = "begin ::Kernel.raise _; rescue _.class\n#{line}\n""end"
         | 
| 383 402 | 
             
                    @workspace.local_variable_set(:_, exception)
         | 
| 384 403 | 
             
                  end
         | 
| 385 404 | 
             
                  set_last_value(@workspace.evaluate(self, line, irb_path, line_no))
         |