-- Стартовый сценарий приложения. -- -- Приложение выполняет этот файл при запуске. Каталог поиска задаётся -- константой SCRIPT_DIR в src/constants.rs (по умолчанию — текущий каталог). print("[lua] init.lua выполнен") -- Доступные методы объекта app (номера вкладок — с нуля): -- app:tabs() -- {{ index = 0, title = "main.rs" }, ...} -- app:active_tab() -- индекс активной вкладки -- app:set_active_tab(index) -- true, если вкладка существует -- app:next_tab() -- переключить на следующую, вернуть индекс -- app:previous_tab() -- переключить на предыдущую, вернуть индекс -- app:open_tab() -- открыть пустую вкладку, вернуть индекс -- app:close_tab(index) -- true, если вкладка закрыта -- app:active_text() -- текст активной вкладки -- app:set_active_text(text) -- заменить текст активной вкладки -- app:set_language(i, "rust") -- включить подсветку (rust|go|js|json|python) -- -- для вкладки i; false — нет вкладки/языка -- app:language(i) -- язык подсветки вкладки или nil -- app:clear_language(i) -- выключить подсветку для вкладки -- app:save() -- сохранить активную вкладку в её файл -- app:map_key(keys, fn) -- обработчик клавиши/сочетания -- -- "a" нажатие A -- -- "1" нажатие 1 -- -- "!a" отпускание A -- -- "" C при зажатом Shift -- -- "" Z при зажатом Ctrl -- -- "" отпускание R при зажатом Alt -- -- клавиша сравнивается с именем клавиши от GPUI: -- -- Caps Lock не важен; на Linux и Windows буквы -- -- берутся по аппаратному keycode, поэтому -- -- работает и на русской раскладке -- app:close() -- закрыть окно -- app:toggle_maximize() -- app:set_maximized(true/false) -- app:minimize() -- app:is_maximized() -- -- Методы добавляются в src/api.rs: всё, что есть в impl AppApi, помеченном -- #[mlua::userdata_impl], автоматически доступно из Lua. -- -- Другие Lua-файлы можно подключать из каталога сценариев: -- include("tools.lua") -- выполнить файл сразу -- require("tools") -- выполнить один раз (как обычный Lua-модуль) -- -- Подсветка синтаксиса по умолчанию выключена. Включить её можно так: -- app:set_language(0, "rust") app:set_language(0, "rust") app:next_tab() -- Пример привязки: Ctrl+S сохраняет вкладку, отпускание Esc закрывает окно. -- app:map_key("", function() app:save() end) -- app:map_key("", function() app:close() end) app:map_key("", function() app:close() end)