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