docs: def _register_plotter(cls, identifier, module, plotter_name,
                            plotter_cls=None, summary='', prefer_list=False,
                            default_slice=None, default_dims={},
                            show_examples=True,
                            example_call="filename, name=['my_variable'], ...",
                            plugin=None):
          """
          Register a plotter for making plots
  
          This class method registeres a plot function for the :class:`Project`
          class under the name of the given `identifier`
  
          Parameters
          ----------
          %(Project._register_plotter.parameters)s
  
          Other Parameters
          ----------------
          prefer_list: bool
              Determines the `prefer_list` parameter in the `from_dataset`
              method. If True, the plotter is expected to work with instances of
              :class:`psyplot.InteractiveList` instead of
              :class:`psyplot.InteractiveArray`.
          %(ArrayList.from_dataset.parameters.default_slice)s
          default_dims: dict
              Default dimensions that shall be used for plotting (e.g.
              {'x': slice(None), 'y': slice(None)} for longitude-latitude plots)
          show_examples: bool, optional
              If True, examples how to access the plotter documentation are
              included in class documentation
          example_call: str, optional
              The arguments and keyword arguments that shall be included in the
              example of the generated plot method. This call will then appear as
              ``>>> psy.plot.%%(identifier)s(%%(example_call)s)`` in the
              documentation
          plugin: str
              The name of the plugin
          """
          full_name = '%s.%s' % (module, plotter_name)
          if plotter_cls is not None:  # plotter has already been imported
              docstrings.params['%s.formatoptions' % (full_name)] = \
                  plotter_cls.show_keys(
                      indent=4, func=str,
                      # include links in sphinx doc
                      include_links=None)
              doc_str = ('Possible formatoptions are\n\n'
                         '%%(%s.formatoptions)s') % full_name
          else:
              doc_str = ''
  
          summary = summary or (
              'Open and plot data via :class:`%s.%s` plotters' % (
                  module, plotter_name))
  
          if plotter_cls is not None:
              _versions.update(get_versions(key=lambda s: s == plugin))
  
          class PlotMethod(cls._plot_method_base_cls):
              __doc__ = cls._gen_doc(summary, full_name, identifier,
                                     example_call, doc_str, show_examples)
  
              _default_slice = default_slice
              _default_dims = default_dims
              _plotter_cls = plotter_cls
              _prefer_list = prefer_list
              _plugin = plugin
  
              _summary = summary
  
          setattr(cls, identifier, PlotMethod(identifier, module, plotter_name))