diff --git a/kdevplatform/shell/ktexteditorpluginintegration.h b/kdevplatform/shell/ktexteditorpluginintegration.h --- a/kdevplatform/shell/ktexteditorpluginintegration.h +++ b/kdevplatform/shell/ktexteditorpluginintegration.h @@ -54,6 +54,10 @@ KTextEditor::Plugin *plugin(const QString &id) const; + QList documents(); + + KTextEditor::Document *openUrl(const QUrl &url, const QString &encoding = QString()); + bool closeDocument(KTextEditor::Document *document) const; }; @@ -76,6 +80,7 @@ QList views() const; KTextEditor::View *activeView() const; + KTextEditor::View *activateView(KTextEditor::Document *doc); QObject *pluginView(const QString &id) const; void splitView(Qt::Orientation orientation); diff --git a/kdevplatform/shell/ktexteditorpluginintegration.cpp b/kdevplatform/shell/ktexteditorpluginintegration.cpp --- a/kdevplatform/shell/ktexteditorpluginintegration.cpp +++ b/kdevplatform/shell/ktexteditorpluginintegration.cpp @@ -215,7 +215,12 @@ bool Application::closeDocument(KTextEditor::Document *document) const { auto documentController = Core::self()->documentControllerInternal(); - return documentController->closeDocument(document->url()); + for (auto doc : documentController->openDocuments()) { + if (doc->textDocument() == document) { + return doc->close(); + } + } + return false; } KTextEditor::Plugin *Application::plugin(const QString &id) const @@ -225,6 +230,23 @@ return plugin ? plugin->interface() : nullptr; } +QList Application::documents() +{ + QList l; + auto documentController = Core::self()->documentControllerInternal(); + for (auto d : documentController->openDocuments()) { + l << d->textDocument(); + } + return l; +} + +KTextEditor::Document * Application::openUrl(const QUrl& url, const QString& encoding) +{ + auto documentController = Core::self()->documentControllerInternal(); + auto doc = url.isEmpty() ? documentController->openDocumentFromText(QString()) : documentController->openDocument(url); + return doc->textDocument(); +} + MainWindow::MainWindow(KDevelop::MainWindow *mainWindow) : QObject(mainWindow) , m_mainWindow(mainWindow) @@ -291,6 +313,22 @@ return toKteView(m_mainWindow->activeView()); } +KTextEditor::View *MainWindow::activateView(KTextEditor::Document *doc) +{ + foreach (auto area, m_mainWindow->areas()) { + foreach (auto view, area->views()) { + if (auto kteView = toKteView(view)) { + if (kteView->document() == doc) { + m_mainWindow->activateView(view); + return kteView; + } + } + } + } + + return activeView(); +} + QObject *MainWindow::pluginView(const QString &id) const { return m_pluginViews.value(id);