From f2e90325039e81a1a23c905ed78a16673c42b199 Mon Sep 17 00:00:00 2001 From: Lukasz Papierkowski Date: Thu, 8 Aug 2024 11:20:13 +0200 Subject: [PATCH] LUA: Add CyclicSuggestion to TextEdditor bindings Change-Id: I984f886123470f2f63accb39c697f61890cbab98 Reviewed-by: Marcus Tillmanns --- src/plugins/lua/bindings/texteditor.cpp | 19 +++++++++++++++++++ src/plugins/lua/meta/texteditor.lua | 10 ++++++++++ 2 files changed, 29 insertions(+) diff --git a/src/plugins/lua/bindings/texteditor.cpp b/src/plugins/lua/bindings/texteditor.cpp index 626bb205960..a0974b7cf2a 100644 --- a/src/plugins/lua/bindings/texteditor.cpp +++ b/src/plugins/lua/bindings/texteditor.cpp @@ -451,6 +451,25 @@ void setupTextEditorModule() return TextEditor::BaseTextEditor::currentTextEditor(); }; + result["currentSuggestion"] = []() -> CyclicSuggestion * { + const auto textEditor = TextEditor::BaseTextEditor::currentTextEditor(); + if (!textEditor) + return nullptr; + + auto *widget = textEditor->editorWidget(); + if (!widget) + return nullptr; + + auto res = dynamic_cast(widget->currentSuggestion()); + if (!res) + return nullptr; + + return res; + }; + + result.new_usertype( + "CyclicSuggestion", sol::no_constructor, "isLocked", &CyclicSuggestion::isLocked); + result.new_usertype( "MultiTextCursor", sol::no_constructor, diff --git a/src/plugins/lua/meta/texteditor.lua b/src/plugins/lua/meta/texteditor.lua index e03c9032dd5..795a6616fca 100644 --- a/src/plugins/lua/meta/texteditor.lua +++ b/src/plugins/lua/meta/texteditor.lua @@ -23,6 +23,13 @@ local Suggestion = {} ---@return Suggestion suggestion The created suggestion. function Suggestion:create(startLine, startCharacter, endLine, endCharacter, text) end +---@class CyclicSuggestion +local CyclicSuggestion = {} + +---@return boolean True if the suggestion is locked, false otherwise. +---Suggestion is locked when the user selects it and already started aplying it partially. +function CyclicSuggestion:isLocked() end + ---@class TextDocument local TextDocument = {} @@ -59,4 +66,7 @@ function TextEditor:cursor() end ---@return TextEditor|nil editor The currently active editor or nil if there is none. function textEditor.currentEditor() end +---@return CyclicSuggestion|nil The current suggestion if available. Otherwise nil. +function textEditor.currentSuggestion() end + return textEditor