refactoring

This commit is contained in:
2026-10-31 15:33:00 +03:00
parent e8e2d25600
commit 838627fb33
27 changed files with 2715 additions and 1259 deletions
+12 -10
View File
@@ -3,9 +3,10 @@
//! При запуске приложение выполняет [`STARTUP_SCRIPT`] из каталога [`script_dir`]
//! (см. [`ScriptEngine::run_startup`]). Скриптам доступны:
//!
//! * объект `app` — управление окном и панелями (методы [`AppApi`], вызываются
//! через двоеточие: `app:next_tab()`); во вложенном `app.editor` живёт API
//! редактора ([`EditorApi`](crate::api::EditorApi)): `app.editor:save()`;
//! * объект `api` — управление приложением ([`AppApi`]). Он разбит на группы:
//! `api.editor` (редактор), `api.panels` (панели), `api.path` (файловая
//! система), `api.window` (окно и поле ввода) и `api.keymap` (глобальные
//! привязки); вызов — через двоеточие: `api.editor:save()`;
//! * функция `include(path)` — выполняет другой Lua-файл относительно [`script_dir`]
//! (или по абсолютному пути) в общем глобальном окружении;
//! * стандартный `require`, который также ищет модули в [`script_dir`].
@@ -102,7 +103,7 @@ impl ScriptEngine {
lua: Lua::new(),
script_dir: directory.as_ref().to_path_buf(),
};
engine.expose_app_api(api)?;
engine.expose_api(api)?;
engine.configure_require()?;
Ok(engine)
}
@@ -121,15 +122,16 @@ impl ScriptEngine {
run_file(&self.lua, path).map(|_| ())
}
/// Публикует объект `app` с функциями управления приложением.
/// Публикует объект `api` с функциями управления приложением.
///
/// Все методы [`AppApi`] из `#[mlua::userdata_impl]`-блока доступны как
/// методы userdata: `app:next_tab()`, `app:set_active_text("...")`.
/// Номера вкладок всюду нумеруются с нуля.
fn expose_app_api(&self, api: AppApi) -> mlua::Result<()> {
/// Все методы объектов [`AppApi`] из `#[mlua::userdata_impl]`-блоков
/// доступны как методы userdata: `api.editor:save()`,
/// `api.path:list("src")`, `api.window:close()`. Номера вкладок всюду
/// нумеруются с нуля.
fn expose_api(&self, api: AppApi) -> mlua::Result<()> {
self.lua
.globals()
.set("app", self.lua.create_userdata(api)?)?;
.set("api", self.lua.create_userdata(api)?)?;
Ok(())
}