code: def register_plugin(self, plugin):
          
          if hasattr(plugin, 'initialise'):
              plugin.initialise()
          if self.valid_api_plugin(plugin):
              log.debug("Registering API plugin: {}".format(plugin))
              self._api_plugins[plugin.request] = plugin()
          elif self.valid_debugger_plugin(plugin):
              log.debug("Registering debugger plugin: {}".format(plugin))
              self._debugger_plugins[plugin.host] = plugin()
          elif self.valid_view_plugin(plugin):
              log.debug("Registering view plugin: {}".format(plugin))
              self._view_plugins[plugin.name] = plugin()
          elif self.valid_web_plugin(plugin):
              log.debug("Registering web plugin: {}".format(plugin))
              self._web_plugins[plugin.name] = plugin()
          elif self.valid_command_plugin(plugin):
              log.debug("Registering command plugin: {}".format(plugin))
              self._command_plugins[plugin.name] = plugin()
              if voltron.debugger:
                  voltron.debugger.register_command_plugin(plugin.name, plugin.command_class)
          else:
              log.debug("Ignoring invalid plugin: {}".format(plugin))
docs: Register a new plugin with the PluginManager.
  
          `plugin` is a subclass of scruffy's Plugin class.
  
          This is called by __init__(), but may also be called by the debugger
          host to load a specific plugin at runtime.