diff --git a/src/plugins/languageclient/languageclient.pro b/src/plugins/languageclient/languageclient.pro index 7522ceec5cd..c9c821676f3 100644 --- a/src/plugins/languageclient/languageclient.pro +++ b/src/plugins/languageclient/languageclient.pro @@ -10,7 +10,8 @@ HEADERS += \ languageclientmanager.h \ languageclientoutline.h \ languageclientplugin.h \ - languageclientsettings.h + languageclientsettings.h \ + languageclientutils.h SOURCES += \ @@ -20,7 +21,8 @@ SOURCES += \ languageclientmanager.cpp \ languageclientoutline.cpp \ languageclientplugin.cpp \ - languageclientsettings.cpp + languageclientsettings.cpp \ + languageclientutils.cpp RESOURCES += \ languageclient.qrc diff --git a/src/plugins/languageclient/languageclient.qbs b/src/plugins/languageclient/languageclient.qbs index a79af1e8760..62de6c73092 100644 --- a/src/plugins/languageclient/languageclient.qbs +++ b/src/plugins/languageclient/languageclient.qbs @@ -30,5 +30,7 @@ QtcPlugin { "languageclientplugin.h", "languageclientsettings.cpp", "languageclientsettings.h", + "languageclientutils.cpp", + "languageclientutils.h", ] } diff --git a/src/plugins/languageclient/languageclientmanager.cpp b/src/plugins/languageclient/languageclientmanager.cpp index 074e8721db2..b3fe7b13c15 100644 --- a/src/plugins/languageclient/languageclientmanager.cpp +++ b/src/plugins/languageclient/languageclientmanager.cpp @@ -25,8 +25,8 @@ #include "languageclientmanager.h" -#include -#include +#include "languageclientutils.h" + #include #include #include @@ -108,17 +108,16 @@ void LanguageClientManager::init() void LanguageClientManager::publishDiagnostics(const Core::Id &id, const PublishDiagnosticsParams ¶ms) { - const Utils::FileName filePath = params.uri().toFileName(); - auto doc = qobject_cast( - Core::DocumentModel::documentForFilePath(filePath.toString())); + const Utils::FileName fileName = params.uri().toFileName(); + TextEditor::TextDocument *doc = textDocumentForFileName(fileName); if (!doc) return; - removeMarks(filePath, id); - managerInstance->m_marks[filePath][id].reserve(params.diagnostics().size()); + removeMarks(fileName, id); + managerInstance->m_marks[fileName][id].reserve(params.diagnostics().size()); for (const Diagnostic& diagnostic : params.diagnostics()) { - auto mark = new LanguageClientMark(filePath, diagnostic); - managerInstance->m_marks[filePath][id].append(mark); + auto mark = new LanguageClientMark(fileName, diagnostic); + managerInstance->m_marks[fileName][id].append(mark); doc->addMark(mark); } } @@ -132,8 +131,7 @@ void LanguageClientManager::removeMark(LanguageClientMark *mark) void LanguageClientManager::removeMarks(const Utils::FileName &fileName) { - auto doc = qobject_cast( - Core::DocumentModel::documentForFilePath(fileName.toString())); + TextEditor::TextDocument *doc = textDocumentForFileName(fileName); if (!doc) return; @@ -148,8 +146,7 @@ void LanguageClientManager::removeMarks(const Utils::FileName &fileName) void LanguageClientManager::removeMarks(const Utils::FileName &fileName, const Core::Id &id) { - auto doc = qobject_cast( - Core::DocumentModel::documentForFilePath(fileName.toString())); + TextEditor::TextDocument *doc = textDocumentForFileName(fileName); if (!doc) return; diff --git a/src/plugins/languageclient/languageclientutils.cpp b/src/plugins/languageclient/languageclientutils.cpp new file mode 100644 index 00000000000..cbfb91ccc9f --- /dev/null +++ b/src/plugins/languageclient/languageclientutils.cpp @@ -0,0 +1,38 @@ +/**************************************************************************** +** +** Copyright (C) 2019 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +****************************************************************************/ + +#include "languageclientutils.h" + +#include +#include + +using namespace LanguageClient; +using namespace LanguageServerProtocol; + +TextEditor::TextDocument *LanguageClient::textDocumentForFileName(const Utils::FileName &fileName) +{ + return qobject_cast( + Core::DocumentModel::documentForFilePath(fileName.toString())); +} diff --git a/src/plugins/languageclient/languageclientutils.h b/src/plugins/languageclient/languageclientutils.h new file mode 100644 index 00000000000..2423263954d --- /dev/null +++ b/src/plugins/languageclient/languageclientutils.h @@ -0,0 +1,36 @@ +/**************************************************************************** +** +** Copyright (C) 2019 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +****************************************************************************/ + +#pragma once + +#include + +namespace TextEditor { class TextDocument; } + +namespace LanguageClient { + +TextEditor::TextDocument *textDocumentForFileName(const Utils::FileName &fileName); + +} // namespace LanguageClient