aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/copilot/copilotsuggestion.cpp
diff options
context:
space:
mode:
authorDavid Schulz <[email protected]>2023-03-16 06:38:46 +0100
committerDavid Schulz <[email protected]>2023-03-29 07:43:28 +0000
commit6ab923c39fd4ac66edb3cf708e3c789cb4a31428 (patch)
tree14bfee4a6b4fb32b94af7fddf7605536a60a96c7 /src/plugins/copilot/copilotsuggestion.cpp
parent8a1e34f084f24f45d61e0011a2b6486aadc34218 (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.cpp41
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
+