select
This commit is contained in:
@@ -76,6 +76,16 @@ print("[lua] init.lua выполнен")
|
||||
-- -- Enter подтверждает и вызывает callback,
|
||||
-- -- Esc или клик вне окна закрывают без него;
|
||||
-- -- пока окно открыто, привязки клавиш молчат
|
||||
-- api.window:open_select(options) -- плавающий список выбора чуть выше центра;
|
||||
-- -- options = { title = "...",
|
||||
-- -- selected = "id",
|
||||
-- -- items = {{ id = "...", label = "...",
|
||||
-- -- icon = "file", description = "..." }},
|
||||
-- -- callback = function(id) ... end };
|
||||
-- -- стрелки/Home/End меняют выделение,
|
||||
-- -- Enter или клик по пункту вызывают callback,
|
||||
-- -- Esc или клик вне окна закрывают без него;
|
||||
-- -- пока окно открыто, привязки клавиш молчат
|
||||
--
|
||||
-- Редактор api.editor (номера вкладок — с нуля):
|
||||
-- api.editor:tabs() -- {{ index = 0, title = "main.rs",
|
||||
@@ -481,6 +491,56 @@ api.keymap:map_key("", "<C-g>", function()
|
||||
})
|
||||
end)
|
||||
|
||||
-- Демонстрация списка выбора. Ctrl+J открывает пункты с иконками и
|
||||
-- описаниями: title отделён разделителем, selected заранее выделяет пункт,
|
||||
-- у части пунктов иконки нет (их текст остаётся выровненным), длинное
|
||||
-- описание обрезается троеточием и не перетирает название. Enter или клик
|
||||
-- передаёт в callback id выбранного пункта.
|
||||
api.keymap:map_key("", "<C-j>", function()
|
||||
api.window:open_select({
|
||||
title = "Демонстрация списка выбора",
|
||||
selected = "info",
|
||||
items = {
|
||||
{
|
||||
id = "info",
|
||||
label = "Информация",
|
||||
icon = "info",
|
||||
description = "короткое описание",
|
||||
},
|
||||
{
|
||||
id = "file",
|
||||
label = "Открыть файл",
|
||||
icon = "file",
|
||||
description = "Ctrl+G",
|
||||
},
|
||||
{
|
||||
id = "folder",
|
||||
label = "Папка",
|
||||
icon = "folder",
|
||||
description = "длинное описание, которое обрезается троеточием, не перетирая название",
|
||||
},
|
||||
{
|
||||
id = "plain",
|
||||
label = "Без иконки",
|
||||
description = "место иконки остаётся пустым для выравнивания",
|
||||
},
|
||||
{
|
||||
id = "note",
|
||||
label = "Без описания",
|
||||
icon = "notebook",
|
||||
},
|
||||
},
|
||||
callback = function(id)
|
||||
-- Колбэк получает id уже после закрытия списка. Он может открыть
|
||||
-- новое окно — здесь это поле ввода с итогом выбора.
|
||||
api.window:open_input({
|
||||
title = "Выбрано: " .. id,
|
||||
placeholder = "Enter закроет окно",
|
||||
})
|
||||
end,
|
||||
})
|
||||
end)
|
||||
|
||||
api.keymap:map_key("", "<C-t>", "toggle_bottom_panel")
|
||||
|
||||
-- Дерево диагностики в нижней панели.
|
||||
|
||||
Reference in New Issue
Block a user