Nearly 100% accurate completion for any editors!!
by rubikitch <rubikitch@ruby-lang.org>
# File lib/rcodetools/completion.rb, line 273 273: def ___prepare_line(recv, all_completion_expr) 274: v = "#{VAR}" 275: rcv = "#{VAR}_recv" 276: idx = 1 277: oneline_ize(#{rcv} = (#{recv})#{v} = (#{all_completion_expr}).map{|x| x.to_s}.grep(/^#{Regexp.quote(@prefix)}/)#{rcv} = Module === #{rcv} ? #{rcv} : #{rcv}.class$stderr.puts("#{MARKER}[#{idx}] => " + #{rcv}.to_s + " " + #{v}.join(" ")) || #{v}exit) 278: end
# File lib/rcodetools/completion.rb, line 264 264: def __prepare_line(recv, all_completion_expr, all_completion_expr_verbose) 265: if self.class.candidates_with_description_flag 266: ___prepare_line(recv, all_completion_expr_verbose.gsub(/%n/, '('+all_completion_expr+')')) 267: else 268: ___prepare_line(recv, all_completion_expr) 269: end 270: 271: end
# File lib/rcodetools/completion.rb, line 294 294: def candidates(code, lineno, column=nil) 295: candidates_with_class(code, lineno, column)[1] 296: end
# File lib/rcodetools/completion.rb, line 286 286: def candidates_with_class(code, lineno, column=nil) 287: klass, methods = runtime_data_with_class(code, lineno, column) rescue ["", ""] 288: raise NoCandidates, "No candidates." if methods.nil? or methods.empty? 289: [klass, methods.split(/ /).sort] 290: end
Completion code for editors.
# File lib/rcodetools/completion.rb, line 299 299: def completion_code(code, lineno, column=nil) 300: candidates(code, lineno, column).join("\n") rescue "\n" 301: end
# File lib/rcodetools/completion.rb, line 209 209: def magic_help_code(recv, meth) 210: oneline_ize __magic_help_code("#{VAR}_result", recv, meth) 211: end
# File lib/rcodetools/completion.rb, line 213 213: def methods_map_code(recv) 214: # delimiter is \0 215: m = "#{VAR}_m" 216: mhc = magic_help_code((recv), m) 217: %[map{|%s| "\#{%s}\\0" + %s}] % [m, m, mhc] 218: end
# File lib/rcodetools/completion.rb, line 224 224: def prepare_line(expr, column) 225: set_expr_and_postfix!(expr, column){|c| /^.{#{c}}/ } 226: @prefix = expr 227: case expr 228: when /^\$\w*$/ # global variable 229: __prepare_line 'nil', 'global_variables', '%n' 230: when /^@@\w*$/ # class variable 231: __prepare_line 'nil', 'Module === self ? class_variables : self.class.class_variables', '%n' 232: when /^@\w*$/ # instance variable 233: __prepare_line 'nil', 'instance_variables', '%n' 234: when /^([A-Z].*)::([^.]*)$/ # nested constants / class methods 235: @prefix = $2 236: __prepare_line $1, "#$1.constants | #$1.methods(true)", 237: %[#$1.constants + #$1.methods(true).#{methods_map_code($1)}] 238: when /^[A-Z]\w*$/ # normal constants 239: __prepare_line 'nil', 'Module.constants', '%n' 240: when /^(.*::.+)\.(.*)$/ # toplevel class methods 241: @prefix = $2 242: __prepare_line $1, "#$1.methods", 243: %[%n.#{methods_map_code($1)}] 244: when /^(::.+)::(.*)$/ # toplevel nested constants 245: @prefix = $2 246: __prepare_line $1, "#$1.constants | #$1.methods", 247: %[#$1.constants + #$1.methods.#{methods_map_code($1)}] 248: when /^::(.*)/ # toplevel constant 249: @prefix = $1 250: __prepare_line 'nil', 'Object.constants', '%n' 251: when /^(:[^:.]*)$/ # symbol 252: __prepare_line 'nil', 'Symbol.all_symbols.map{|s| ":" + s.id2name}', '%n' 253: when /\.([^.]*)$/ # method call 254: @prefix = $1 255: recv = Regexp.last_match.pre_match 256: __prepare_line recv, "(#{recv}).methods(true)", 257: %[%n.#{methods_map_code(recv)}] 258: else # bare words 259: __prepare_line 'self', "methods | private_methods | local_variables | self.class.constants", 260: %[(methods | private_methods).#{methods_map_code('self')} + local_variables | self.class.constants] 261: end 262: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.