refactor: Make DocumentContextReader::prepareContext() testable (#96)

This commit is contained in:
Povilas Kanapickas
2025-03-05 21:18:59 +02:00
committed by GitHub
parent e218699e64
commit 69a8aa80d9
5 changed files with 113 additions and 32 deletions

View File

@ -244,39 +244,29 @@ CopyrightInfo DocumentContextReader::copyrightInfo() const
return m_copyrightInfo;
}
LLMCore::ContextData DocumentContextReader::prepareContext(int lineNumber, int cursorPosition) const
LLMCore::ContextData DocumentContextReader::prepareContext(
int lineNumber, int cursorPosition, const Settings::CodeCompletionSettings &settings) const
{
QString contextBefore = getContextBefore(lineNumber, cursorPosition);
QString contextAfter = getContextAfter(lineNumber, cursorPosition);
QString contextBefore;
QString contextAfter;
if (settings.readFullFile()) {
contextBefore = readWholeFileBefore(lineNumber, cursorPosition);
contextAfter = readWholeFileAfter(lineNumber, cursorPosition);
} else {
contextBefore
= getContextBefore(lineNumber, cursorPosition, settings.readStringsBeforeCursor());
contextAfter
= getContextAfter(lineNumber, cursorPosition, settings.readStringsAfterCursor());
}
QString fileContext;
fileContext.append("\n ").append(getLanguageAndFileInfo());
if (Settings::codeCompletionSettings().useProjectChangesCache())
if (settings.useProjectChangesCache())
fileContext.append("\n ").append(
ChangesManager::instance().getRecentChangesContext(m_textDocument));
return {.prefix = contextBefore, .suffix = contextAfter, .fileContext = fileContext};
}
QString DocumentContextReader::getContextBefore(int lineNumber, int cursorPosition) const
{
if (Settings::codeCompletionSettings().readFullFile()) {
return readWholeFileBefore(lineNumber, cursorPosition);
} else {
int linesCount = Settings::codeCompletionSettings().readStringsBeforeCursor();
return getContextBefore(lineNumber, cursorPosition, linesCount);
}
}
QString DocumentContextReader::getContextAfter(int lineNumber, int cursorPosition) const
{
if (Settings::codeCompletionSettings().readFullFile()) {
return readWholeFileAfter(lineNumber, cursorPosition);
} else {
int linesCount = Settings::codeCompletionSettings().readStringsAfterCursor();
return getContextAfter(lineNumber, cursorPosition, linesCount);
}
}
} // namespace QodeAssist::Context

View File

@ -23,6 +23,7 @@
#include <QTextDocument>
#include <llmcore/ContextData.hpp>
#include <settings/CodeCompletionSettings.hpp>
namespace QodeAssist::Context {
@ -72,11 +73,8 @@ public:
CopyrightInfo copyrightInfo() const;
LLMCore::ContextData prepareContext(int lineNumber, int cursorPosition) const;
private:
QString getContextBefore(int lineNumber, int cursorPosition) const;
QString getContextAfter(int lineNumber, int cursorPosition) const;
LLMCore::ContextData prepareContext(
int lineNumber, int cursorPosition, const Settings::CodeCompletionSettings &settings) const;
private:
TextEditor::TextDocument *m_textDocument;