[Differential] [Request, 3,910 lines] D4672: Initial support for hookup of projects with general (web) services
Friedrich W. H. Kossebau
noreply at phabricator.kde.org
Mon Feb 20 01:04:20 UTC 2017
kossebau created this revision.
Restricted Application added a subscriber: kdevelop-devel.
REVISION SUMMARY
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:
- gitlab
- phabricator
- cgit
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.
Future plans:
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
this internally.
REPOSITORY
R33 KDevPlatform
BRANCH
addServiceLocationMapping
REVISION DETAIL
https://phabricator.kde.org/D4672
AFFECTED FILES
CMakeLists.txt
plugins/CMakeLists.txt
plugins/cgit/CMakeLists.txt
plugins/cgit/Messages.sh
plugins/cgit/cgithookupconfigpage.cpp
plugins/cgit/cgithookupconfigpage.h
plugins/cgit/cgithookupconfigpage.ui
plugins/cgit/cgithookupconfiguration.cpp
plugins/cgit/cgithookupconfiguration.h
plugins/cgit/cgitplugin.cpp
plugins/cgit/cgitplugin.h
plugins/cgit/cgitplugin.json
plugins/cgit/icons/96-apps-cgit.png
plugins/cgit/icons/CMakeLists.txt
plugins/cgit/projectvcstracker.cpp
plugins/cgit/projectvcstracker.h
plugins/gitlab/CMakeLists.txt
plugins/gitlab/Messages.sh
plugins/gitlab/gitlabhookupconfigpage.cpp
plugins/gitlab/gitlabhookupconfigpage.h
plugins/gitlab/gitlabhookupconfigpage.ui
plugins/gitlab/gitlabhookupconfiguration.cpp
plugins/gitlab/gitlabhookupconfiguration.h
plugins/gitlab/gitlabplugin.cpp
plugins/gitlab/gitlabplugin.h
plugins/gitlab/gitlabplugin.json
plugins/gitlab/icons/CMakeLists.txt
plugins/gitlab/icons/sc-apps-gitlab.svg
plugins/gitlab/projectvcstracker.cpp
plugins/gitlab/projectvcstracker.h
plugins/phabricator/CMakeLists.txt
plugins/phabricator/Messages.sh
plugins/phabricator/icons/CMakeLists.txt
plugins/phabricator/icons/sc-apps-phabricator.svg
plugins/phabricator/phabricatorhookupconfigpage.cpp
plugins/phabricator/phabricatorhookupconfigpage.h
plugins/phabricator/phabricatorhookupconfigpage.ui
plugins/phabricator/phabricatorhookupconfiguration.cpp
plugins/phabricator/phabricatorhookupconfiguration.h
plugins/phabricator/phabricatorplugin.cpp
plugins/phabricator/phabricatorplugin.h
plugins/phabricator/phabricatorplugin.json
plugins/phabricator/projectvcstracker.cpp
plugins/phabricator/projectvcstracker.h
plugins/projectservicemanager/CMakeLists.txt
plugins/projectservicemanager/Messages.sh
plugins/projectservicemanager/config/projectconfig.kcfg
plugins/projectservicemanager/config/projectconfig.kcfgc
plugins/projectservicemanager/config/projectconfigpage.cpp
plugins/projectservicemanager/config/projectconfigpage.h
plugins/projectservicemanager/config/projectconfigpage.ui
plugins/projectservicemanager/config/projectservicehookuplistmodel.cpp
plugins/projectservicemanager/config/projectservicehookuplistmodel.h
plugins/projectservicemanager/kdevprojectservicehookupmanager.cpp
plugins/projectservicemanager/kdevprojectservicehookupmanager.h
plugins/projectservicemanager/kdevprojectservicehookupmanager.json
plugins/projectserviceurlmapper/CMakeLists.txt
plugins/projectserviceurlmapper/Messages.sh
plugins/projectserviceurlmapper/kdevprojectserviceurlmapper.cpp
plugins/projectserviceurlmapper/kdevprojectserviceurlmapper.h
plugins/projectserviceurlmapper/kdevprojectserviceurlmapper.json
services/CMakeLists.txt
services/interfaces/iprojectservicehookup.cpp
services/interfaces/iprojectservicehookup.h
services/interfaces/iprojectservicehookupconfiguration.cpp
services/interfaces/iprojectservicehookupconfiguration.h
services/interfaces/iprojectserviceurlmapper.cpp
services/interfaces/iprojectserviceurlmapper.h
services/interfaces/projectservicehookupconfigpage.cpp
services/interfaces/projectservicehookupconfigpage.h
EMAIL PREFERENCES
https://phabricator.kde.org/settings/panel/emailpreferences/
To: kossebau, #kdevelop
Cc: kdevelop-devel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kdevelop-devel/attachments/20170220/710fce7d/attachment.html>
More information about the KDevelop-devel
mailing list