diff --git a/LLMClientInterface.cpp b/LLMClientInterface.cpp index 1b0f3af..690d57f 100644 --- a/LLMClientInterface.cpp +++ b/LLMClientInterface.cpp @@ -170,7 +170,8 @@ void LLMClientInterface::handleCompletion(const QJsonObject &request) auto updatedContext = prepareContext(request, documentInfo); - bool isPreset1Active = Context::ContextManager::isSpecifyCompletion(request, m_generalSettings); + bool isPreset1Active + = Context::ContextManager::isSpecifyCompletion(documentInfo, m_generalSettings); const auto providerName = !isPreset1Active ? m_generalSettings.ccProvider() : m_generalSettings.ccPreset1Provider(); @@ -279,7 +280,10 @@ LLMCore::ContextData LLMClientInterface::prepareContext( void LLMClientInterface::sendCompletionToClient( const QString &completion, const QJsonObject &request, bool isComplete) { - bool isPreset1Active = Context::ContextManager::isSpecifyCompletion(request, m_generalSettings); + auto filePath = Context::extractFilePathFromRequest(request); + auto documentInfo = m_documentReader.readDocument(filePath); + bool isPreset1Active + = Context::ContextManager::isSpecifyCompletion(documentInfo, m_generalSettings); auto templateName = !isPreset1Active ? m_generalSettings.ccTemplate() : m_generalSettings.ccPreset1Template(); diff --git a/context/ContextManager.cpp b/context/ContextManager.cpp index f4ccd88..bffa6e8 100644 --- a/context/ContextManager.cpp +++ b/context/ContextManager.cpp @@ -26,9 +26,6 @@ #include "GeneralSettings.hpp" #include "Logger.hpp" -#include "Utils.hpp" -#include -#include namespace QodeAssist::Context { @@ -71,24 +68,20 @@ ContentFile ContextManager::createContentFile(const QString &filePath) const return contentFile; } -ProgrammingLanguage ContextManager::getDocumentLanguage(const QJsonObject &request) +ProgrammingLanguage ContextManager::getDocumentLanguage(const DocumentInfo &documentInfo) { - auto filePath = extractFilePathFromRequest(request); - TextEditor::TextDocument *textDocument = TextEditor::TextDocument::textDocumentForFilePath( - Utils::FilePath::fromString(filePath)); - - if (!textDocument) { - LOG_MESSAGE("Error: Document is not available for" + filePath); + if (!documentInfo.document) { + LOG_MESSAGE("Error: Document is not available for" + documentInfo.filePath); return Context::ProgrammingLanguage::Unknown; } - return Context::ProgrammingLanguageUtils::fromMimeType(textDocument->mimeType()); + return Context::ProgrammingLanguageUtils::fromMimeType(documentInfo.mimeType); } bool ContextManager::isSpecifyCompletion( - const QJsonObject &request, const Settings::GeneralSettings &generalSettings) + const DocumentInfo &documentInfo, const Settings::GeneralSettings &generalSettings) { - Context::ProgrammingLanguage documentLanguage = getDocumentLanguage(request); + Context::ProgrammingLanguage documentLanguage = getDocumentLanguage(documentInfo); Context::ProgrammingLanguage preset1Language = Context::ProgrammingLanguageUtils::fromString( generalSettings.preset1Language.displayForIndex(generalSettings.preset1Language())); diff --git a/context/ContextManager.hpp b/context/ContextManager.hpp index 3326d28..260959d 100644 --- a/context/ContextManager.hpp +++ b/context/ContextManager.hpp @@ -23,6 +23,7 @@ #include #include "ContentFile.hpp" +#include "IDocumentReader.hpp" #include "ProgrammingLanguage.hpp" #include "settings/GeneralSettings.hpp" @@ -37,9 +38,9 @@ public: QString readFile(const QString &filePath) const; QList getContentFiles(const QStringList &filePaths) const; - static ProgrammingLanguage getDocumentLanguage(const QJsonObject &request); + static ProgrammingLanguage getDocumentLanguage(const DocumentInfo &documentInfo); static bool isSpecifyCompletion( - const QJsonObject &request, const Settings::GeneralSettings &generalSettings); + const DocumentInfo &documentInfo, const Settings::GeneralSettings &generalSettings); private: explicit ContextManager(QObject *parent = nullptr);