Files
qode/docs/window.md
T
2026-11-01 01:54:53 +03:00

4.5 KiB
Raw Blame History

Окно и ввод — api.window

Группа api.window управляет окном приложения, плавающим полем ввода и списком выбора.

Окно

Метод Описание
api.window:close() Закрыть окно
api.window:toggle_maximize() Развернуть окно / вернуть прежний размер
api.window:set_maximized(true/false) Развернуть (true) или восстановить (false) окно
api.window:minimize() Свернуть окно
api.window:is_maximized() Развёрнуто ли окно прямо сейчас

Команды окна не выполняются в момент вызова из Lua: они складываются в очередь и применяются видом в начале следующего кадра.

Плавающее поле ввода

api.window:open_input(options) открывает однострочное поле ввода чуть выше центра окна. Параметры передаются таблицей:

Поле Описание
title Текст над полем; если не задан, окно состоит из одной строки ввода
placeholder Подсказка внутри пустого поля ввода
callback function(text) — вызывается после Enter, когда окно уже закрыто

Пока окно открыто, сочетания клавиш приложения не работают. Текст набирается в поле; Enter подтверждает ввод и запускает callback, Esc и клик мышью вне окна закрывают его без вызова колбэка.

api.window:open_input({
  title = "Имя файла",
  placeholder = "src/main.rs",
  callback = function(text)
    api.editor:open(text, {})
  end,
})

Плавающий список выбора

api.window:open_select(options) открывает список выбора чуть выше центра окна. Параметры передаются таблицей:

Поле Описание
items Непустой массив пунктов (см. ниже)
selected id пункта, выделенного при открытии; если не задан или не найден — первый пункт
title Текст над списком; отделяется горизонтальной чертой, без заголовка черты нет
callback function(id) — вызывается после Enter, когда окно уже закрыто; получает id выбранного пункта

Каждый пункт — таблица с полями:

Поле Описание
label Отображаемое значение (обязательно)
id Строка, которая вернётся в callback (обязательно)
icon Имя иконки Lucide, например "file"; пустое или неизвестное имя — пункт без иконки
description Серое описание справа от названия; обрезается троеточием, название имеет приоритет

Каждый пункт занимает одну строку. Если иконка есть хотя бы у одного пункта, у остальных остаётся пустое место такой же ширины, чтобы названия начинались на одном уровне.

Пока список открыт, сочетания клавиш приложения не работают: стрелки меняют выделение, Home/End прыгают к краям, Enter подтверждает выбор и вызывает callback с id пункта, клик по пункту выбирает и подтверждает его, а Esc и клик вне окна закрывают список без колбэка.

api.window:open_select({
  title = "Режим",
  selected = "release",
  items = {
    { id = "debug", label = "Debug", icon = "file", description = "с отладкой" },
    { id = "release", label = "Release", icon = "folder" },
  },
  callback = function(id)
    api.editor:set_active_text(id)
  end,
})