For a project there can be lots of other activities besides actual
code development, building and running/debugging. There are
things like issue tracking, task organization, schedules, CI servers,
communication, documentation, localization, and more. Which usually
are organized with central services, either accessed via web browsers
or specific clients (e.g. irc, mailinglist).
For more _I_ in IDE it would be attractive to integrate more with those
services when useful.
This patch adds a new lib KDevPlatformServices, to start support for
connecting to such services and collecting any related classes & interfaces.
Any plugin providing support for a given type of service would implement
the new interface IProjectServiceHookup, next to IPlugin.
The new plugin kdevprojectservicehookupmanager will collect any such
plugins and enable to add to a project multiple hookup configurations
using any of the available plugins.
Each IProjectServiceHookup plugin would implement all kind of other
interfaces, matching the capabilities of the respective service.
And when their interface is used, they would respond using the
respective configurations for the loaded projects.
There are three service hookup plugins in this patch:
Initially they all only implement the new IProjectServiceUrlMapper
interface. This one maps urls to locations/items in services and
locations/items in the local project. Initially this only covers
getting matching urls for the current document + cursor position
in a repo browsing service. The interface is planned to be extended
to also cover the reverse and other items, like commits/change sets.
A new plugin kdevprojectserviceurlmapper, also in this patch, makes
use of this interface and integrates a submenu into the editor context
menu, to open for the curremt document and cursor position the matching
link of a repo browsing service in the browser or at least copy the link
to the clipboard, to use it e.g. in a chat.
Project providers, like the KDE provider, would automatically
configure any known service hookup. No idea yet how to do that
in a cross-plugin agnostic way. Unless the repo provider is
part of a service suite, like github: there the provider plugin
can be extended into a IProjectServiceHookup one and handle all