def config(reload=false)
      if reload || @config.nil?
        begin
          @config = Boson::CONFIG.dup
          @config.merge!(YAML::load_file(config_file(true))) if File.exists?(config_file)
        rescue ArgumentError
          message = $!.message !~ /syntax error on line (\d+)/ ? "Error"+$!.message :
            "Error: Syntax error in line #{$1} of config file '#{config_file}'"
          Kernel.abort message
        end
      end
      @config
    end
def config(reload=false)
      if reload || @config.nil?
        begin
          @config = Boson::CONFIG.dup
          @config.merge!(YAML::load_file(config_file(true))) if File.exists?(config_file)
        rescue ArgumentError
          message = $!.message !~ /syntax error on line (\d+)/ ? "Error"+$!.message :
            "Error: Syntax error in line #{$1} of config file '#{config_file}'"
          Kernel.abort message
        end
      end
      @config
    end
A hash read from the YAML config file at config/boson.yml.
 {See here}[http://github.com/cldwalker/irbfiles/blob/master/boson/config/boson.yml] for an example config file.
 Top level config keys, library attributes and config attributes need to be symbols.
 ==== Config keys for all repositories:
 [:libraries] Hash of libraries mapping their name to attribute hashes. See Library.new for configurable attributes.
               Example:
               :libraries=>{'completion'=>{:namespace=>true}}
 [:command_aliases] Hash of commands names and their aliases. Since this is global it will be read by _all_ libraries.
                    This is useful for quickly creating aliases without having to worry about placing them under
                    the correct library config. For non-global aliasing, aliases should be placed under the :command_aliases
                    key of a library entry in :libraries.
                     Example:
                      :command_aliases=>{'libraries'=>'lib', 'commands'=>'com'}
 [:defaults] Array of libraries to load at start up for commandline and irb. This is useful for extending boson i.e. adding your
             own option types since these are loaded before any other libraries. Default is no libraries.
 [:bin_defaults] Array of libraries to load at start up when used from the commandline. Default is no libraries.
 [:add_load_path] Boolean specifying whether to add a load path pointing to the lib subdirectory/. This is useful in sharing
                  classes between libraries without resorting to packaging them as gems. Defaults to false if the lib
                  subdirectory doesn't exist in the boson directory.

 ==== Config keys specific to the main repo config ~/.boson/config/boson.yml
 [:error_method_conflicts] Boolean specifying library loading behavior when its methods conflicts with existing methods in
                           the global namespace. When set to false, Boson automatically puts the library in its own namespace.
                           When set to true, the library fails to load explicitly. Default is false.
 [:auto_namespace] Boolean which automatically namespaces all user-defined libraries. Be aware this can break libraries which
                   depend on commands from other libraries. Default is false.
 [:ignore_directories] Array of directories to ignore when detecting local repositories for Boson.local_repo.
 [:option_underscore_search] When set, OptionParser option values (with :values or :keys) are auto aliased with underscore searching.
                             Default is true. See Util.underscore_search.