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.