From a52291134e051aa78cb5d3accec2d9d2c08c468f Mon Sep 17 00:00:00 2001 From: s1n7ax Date: Sun, 26 Jan 2025 15:38:50 +0530 Subject: [PATCH] feat: add sync ui select util --- lua/java/utils/ui.lua | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/lua/java/utils/ui.lua b/lua/java/utils/ui.lua index d487775..91860d4 100644 --- a/lua/java/utils/ui.lua +++ b/lua/java/utils/ui.lua @@ -26,6 +26,30 @@ function M.select(prompt, values, format_item, opts) end) end +--Sync vim.ui.select function +---@generic T +---@param prompt string +---@param values T[] +---@param format_item? fun(item: T, index: number): string +---@param opts? { return_one: boolean } +---@return T | nil +function M.select_sync(prompt, values, format_item, opts) + opts = opts or { prompt_single = false } + + if not opts.prompt_single and #values == 1 then + return values[1] + end + + local labels = { prompt } + for index, value in ipairs(values) do + table.insert(labels, format_item and format_item(value, index) or value) + end + + local selected_index = vim.fn.inputlist(labels) + + return values[selected_index] +end + ---Async vim.ui.select function ---@generic T ---@param prompt string