lua: Change CompletionRequested handler to use an event table. (#5280)

This commit is contained in:
Mm2PL
2024-03-30 15:23:02 +01:00
committed by GitHub
parent b35f10fa54
commit d4b8feac7d
8 changed files with 62 additions and 15 deletions
+25 -1
View File
@@ -5,6 +5,8 @@
extern "C" {
# include <lua.h>
}
# include "controllers/plugins/LuaUtilities.hpp"
# include <QString>
# include <cassert>
@@ -55,6 +57,28 @@ struct CompletionList {
bool hideOthers{};
};
/**
* @lua@class CompletionEvent
*/
struct CompletionEvent {
/**
* @lua@field query string The word being completed
*/
QString query;
/**
* @lua@field full_text_content string Content of the text input
*/
QString full_text_content;
/**
* @lua@field cursor_position integer Position of the cursor in the text input in unicode codepoints (not bytes)
*/
int cursor_position{};
/**
* @lua@field is_first_word boolean True if this is the first word in the input
*/
bool is_first_word{};
};
/**
* @includefile common/Channel.hpp
* @includefile controllers/plugins/api/ChannelRef.hpp
@@ -74,7 +98,7 @@ int c2_register_command(lua_State *L);
* Registers a callback to be invoked when completions for a term are requested.
*
* @lua@param type "CompletionRequested"
* @lua@param func fun(query: string, full_text_content: string, cursor_position: integer, is_first_word: boolean): CompletionList The callback to be invoked.
* @lua@param func fun(event: CompletionEvent): CompletionList The callback to be invoked.
* @exposed c2.register_callback
*/
int c2_register_callback(lua_State *L);