refactoring
This commit is contained in:
@@ -19,6 +19,7 @@ use mlua::{Lua, Table};
|
||||
|
||||
use crate::api::{AppApi, DirEntryInfo, TabInfo};
|
||||
use crate::constants::{STARTUP_SCRIPT, script_dir};
|
||||
use crate::lsp::{DiagnosticInfo, DocumentDiagnostics};
|
||||
|
||||
/// Вкладка превращается в Lua-таблицу `{ index = 0, title = "main.rs", icon = "file" }`.
|
||||
impl mlua::IntoLua for TabInfo {
|
||||
@@ -43,6 +44,38 @@ impl mlua::IntoLua for DirEntryInfo {
|
||||
}
|
||||
}
|
||||
|
||||
/// Диагностика сервера для документа превращается в Lua-таблицу
|
||||
/// `{ server = "gopls", uri = "file:///...", path = "/...", diagnostics = {...} }`.
|
||||
impl mlua::IntoLua for DocumentDiagnostics {
|
||||
fn into_lua(self, lua: &Lua) -> mlua::Result<mlua::Value> {
|
||||
let entry = lua.create_table()?;
|
||||
entry.set("server", self.server)?;
|
||||
entry.set("uri", self.uri)?;
|
||||
entry.set("path", self.path)?;
|
||||
entry.set("diagnostics", self.diagnostics)?;
|
||||
Ok(mlua::Value::Table(entry))
|
||||
}
|
||||
}
|
||||
|
||||
/// Сообщение диагностики превращается в Lua-таблицу с позицией (с нуля),
|
||||
/// уровнем, текстом, источником, кодом и тегами.
|
||||
impl mlua::IntoLua for DiagnosticInfo {
|
||||
fn into_lua(self, lua: &Lua) -> mlua::Result<mlua::Value> {
|
||||
let entry = lua.create_table()?;
|
||||
entry.set("line", self.line)?;
|
||||
entry.set("character", self.character)?;
|
||||
entry.set("end_line", self.end_line)?;
|
||||
entry.set("end_character", self.end_character)?;
|
||||
entry.set("severity", self.severity)?;
|
||||
entry.set("severity_name", self.severity_name)?;
|
||||
entry.set("message", self.message)?;
|
||||
entry.set("source", self.source)?;
|
||||
entry.set("code", self.code)?;
|
||||
entry.set("tags", self.tags)?;
|
||||
Ok(mlua::Value::Table(entry))
|
||||
}
|
||||
}
|
||||
|
||||
/// Движок Lua и состояние его глобального окружения.
|
||||
pub struct ScriptEngine {
|
||||
lua: Lua,
|
||||
|
||||
Reference in New Issue
Block a user