diff --git a/plugins/konsole/CMakeLists.txt b/plugins/konsole/CMakeLists.txt --- a/plugins/konsole/CMakeLists.txt +++ b/plugins/konsole/CMakeLists.txt @@ -12,4 +12,4 @@ CATEGORY_NAME "kdevelop.plugins.konsole" ) kdevplatform_add_plugin(kdevkonsoleview JSON kdevkonsoleview.json SOURCES ${kdevkonsoleview_PART_SRCS}) -target_link_libraries(kdevkonsoleview KF5::Parts KDev::Interfaces) +target_link_libraries(kdevkonsoleview KF5::Parts KDev::Interfaces KDev::Util) diff --git a/plugins/konsole/kdevkonsoleview.cpp b/plugins/konsole/kdevkonsoleview.cpp --- a/plugins/konsole/kdevkonsoleview.cpp +++ b/plugins/konsole/kdevkonsoleview.cpp @@ -25,6 +25,10 @@ #include #include +#include +#include +#include +#include #include "kdevkonsoleviewplugin.h" @@ -66,7 +70,17 @@ TerminalInterface* interface = qobject_cast(konsolepart); Q_ASSERT(interface); - interface->showShellInDir( QString() ); + QString dir; + if (KDevelop::IDocument* activeDocument = KDevelop::ICore::self()->documentController()->activeDocument()) + { + KDevelop::IProject* project = KDevelop::ICore::self()->projectController()->findProjectForUrl(activeDocument->url()); + if (project && project->path().isLocalFile()) + dir = project->path().path(); + else if (activeDocument->url().isLocalFile()) + dir = activeDocument->url().adjusted(QUrl::RemoveFilename).path(QUrl::FullyDecoded); + } + interface->showShellInDir( dir ); + interface->sendInput( " kdevelop! -s \"" + KDevelop::ICore::self()->activeSession()->id().toString() + "\"\n" ); }else