Sha256: e0aae31eb83bd103fbcf598b7e099fccb1abe6258ccddcea7d56327729ba4887

Contents?: true

Size: 1.66 KB

Versions: 7

Compression:

Stored size: 1.66 KB

Contents

module Bond
  # Namespace in which completion files, ~/.bondrc and ~/.bond/completions/*.rb, are evaluated. Methods in this module
  # and Search are the DSL in completion files and can be used within completion actions.
  #
  # === Example ~/.bondrc
  #   # complete arguments for any object's :respond_to?
  #   complete(:method=>"Object#respond_to?") {|e| e.object.methods }
  #   # complete arguments for any module's :public
  #   complete(:method=>"Module#public") {|e| e.object.instance_methods }
  #
  #   # Share generate_tags action across completions
  #   complete(:method=>"edit_tags", :action=>:generate_tags)
  #   complete(:method=>"delete_tags", :search=>false) {|e| generate_tags(e).grep(/#{e}/i) }
  #
  #   def generate_tags(input)
  #    ...
  #   end
  module Rc
    extend self, Search

    # See {Bond#complete}
    def complete(*args, &block); M.complete(*args, &block); end
    # See {Bond#recomplete}
    def recomplete(*args, &block); M.recomplete(*args, &block); end

    # Action method with search which returns array of files that match current input.
    def files(input)
      (::Readline::FILENAME_COMPLETION_PROC.call(input) || []).map {|f|
        f =~ /^~/ ?  File.expand_path(f) : f
      }
    end

    # Helper method which returns objects of a given class.
    def objects_of(klass)
      object = []
      ObjectSpace.each_object(klass) {|e| object.push(e) }
      object
    end

    # Calls eval with Mission.current_eval, rescuing any exceptions to return nil.
    # If Bond.config[:debug] is true, exceptions are raised again.
    def eval(str)
      Mission.current_eval(str)
    rescue Exception
      raise if Bond.config[:debug]
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
bond-0.3.5 lib/bond/rc.rb
bond-0.3.4 lib/bond/rc.rb
bond-0.3.3 lib/bond/rc.rb
bond-0.3.2 lib/bond/rc.rb
bond-0.3.1 lib/bond/rc.rb
bond-0.3.0 lib/bond/rc.rb
bond-0.2.2 lib/bond/rc.rb