diff options
author | David Schulz <[email protected]> | 2023-03-16 06:38:46 +0100 |
---|---|---|
committer | David Schulz <[email protected]> | 2023-03-29 07:43:28 +0000 |
commit | 6ab923c39fd4ac66edb3cf708e3c789cb4a31428 (patch) | |
tree | 14bfee4a6b4fb32b94af7fddf7605536a60a96c7 /src/plugins/copilot/copilotsuggestion.cpp | |
parent | 8a1e34f084f24f45d61e0011a2b6486aadc34218 (diff) |
Copilot: add copilot suggestion tooltips
These tooltips allow to switch the currently visible suggestion as well
as applying it using
the mouse.
Change-Id: I30b9a76ae57c66887f4e1b1311e1a7248ed0f194
Reviewed-by: Marcus Tillmanns <[email protected]>
Diffstat (limited to 'src/plugins/copilot/copilotsuggestion.cpp')
-rw-r--r-- | src/plugins/copilot/copilotsuggestion.cpp | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/src/plugins/copilot/copilotsuggestion.cpp b/src/plugins/copilot/copilotsuggestion.cpp new file mode 100644 index 00000000000..96ccbbcd18a --- /dev/null +++ b/src/plugins/copilot/copilotsuggestion.cpp @@ -0,0 +1,41 @@ +// Copyright (C) 2023 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 + +#include "copilotsuggestion.h" + +namespace Copilot::Internal { + +CopilotSuggestion::CopilotSuggestion(const QList<Completion> &completions, + QTextDocument *origin, + int currentCompletion) + : m_completions(completions) + , m_currentCompletion(currentCompletion) +{ + const Completion completion = completions.value(currentCompletion); + document()->setPlainText(completion.text()); + m_start = completion.position().toTextCursor(origin); + m_start.setKeepPositionOnInsert(true); + setCurrentPosition(m_start.position()); +} + +bool CopilotSuggestion::apply() +{ + reset(); + const Completion completion = m_completions.value(m_currentCompletion); + QTextCursor cursor = completion.range().toSelection(m_start.document()); + cursor.insertText(completion.text()); + return true; +} + +void CopilotSuggestion::reset() +{ + m_start.removeSelectedText(); +} + +int CopilotSuggestion::position() +{ + return m_start.position(); +} + +} // namespace Copilot::Internal + |