Skip to content

About

Lithe 的 Lua 支持插件(Lithe Store 社区插件示例与模板)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Lua Support for Lithe

为 Lithe 提供 Lua 代码智能和“运行当前文件”。 这是一个社区插件,也是 Lithe Store 的示例插件: 想发布自己插件的开发者可以直接复制这个仓库作为模板。

English: Lua language intelligence (bundled LuaLS) and "Run current file" (via your lua) for Lithe. Also the reference template for Lithe Store community plugins.

功能

功能 依赖的程序
补全、跳转定义、悬停提示、诊断 插件内置的 lua-language-server(LuaLS 3.19.1),无需另外安装
运行当前 .lua 文件 你电脑上的 lua(使用你自己选择的 Lua 版本)

语法高亮由 Lithe 编辑器内置提供,不需要插件。安装时 Lithe 会弹窗列出以上两个程序,确认后才会安装。

LuaLS 在构建时按 language-server.json 固定的版本下载并核对 SHA-256,打进对应平台的插件包; 用户安装时不会再下载任何东西。LuaLS 的警告和错误文件通过宿主提供的 ${logDir} 写入 当前应用日志会话的 plugins/io.github.lithe-idea.lua-support/files/;生成的标准库定义仍写入 ~/Library/Caches/io.github.lithe-idea.lua-support/meta/(设置 XDG_CACHE_HOME 时使用其对应目录)。 日志与缓存生命周期独立,插件目录保持只读(Lithe 会拒绝加载被改动过的插件)。

安装

  1. 想用“运行当前文件”的话,先安装 Lua(只影响运行,补全和跳转不需要):

    brew install lua
  2. 在 macOS Lithe 0.6.7 或更高版本(含 preview)中打开 设置 → 插件 → 插件市场,搜索 “Lua Support”,安装并确认。

  3. 按界面提示重启 Lithe,再打开项目中的 .lua 文件以激活语言服务器。

Lithe 已预置 Lithe Store 社区插件源。如果你之前移除了它,先在 ⚙ → 管理插件仓库… 中重新添加 https://github.com/Lithe-IDEA/Lithe-store。

目前发布 macOS Apple Silicon 与 Intel 两个包;Lithe for Windows 支持插件市场后会增加 Windows 包。

诊断日志

从 0.3.1 起使用 API 2 启动模板,将宿主当前会话的 ${logDir} 传给 LuaLS 启动器。 上游 LuaLS 3.19.1 的 --logpath、--loglevel 和 --metapath 是公开 CLI 参数; 默认只保留 warn/error,避免 trace/debug 的协议和文档内容进入文件。 语言服务生命周期、window/logMessage 与有界 stderr 由宿主统一写入 lsp/lua 通道。

使用 Lithe 的独立日志窗口查看结构化事件。LuaLS 原生 files/ 文件供单独排障, 并不等同于宿主脱敏后的 v2 事件;不要开启详细协议或添加源码、环境变量和凭据。 日志目录由宿主拥有,启动器不再创建独立的 cache/log,也不删除旧版本留下的缓存日志。

0.3.1 起要求能提供本机日志目录的宿主(Lithe 0.6.7 或更高);旧宿主或远程进程缺少 logDirectory 时, 按已有启动契约明确拒绝 ${logDir},不回退到安装目录。 当前包只发布 macOS;Windows 的日志实现仍为 v1,未声明支持 Windows v2。

用这个仓库做模板

先读 lithe-plugin-docs 的LSP 插件完整生命周期教程, 跟着完成清单、服务器打包、激活、状态隔离、停止与升级验收。 需要接入构建工具、运行或测试时,继续读构建工具接入指南。 教程会区分已可发布的 API 与开发中的构建系统接口。

io.github.lithe-idea.lua-support/plugin.json   # 插件描述,目录名必须等于插件 id
io.github.lithe-idea.lua-support/bin/          # 语言服务器启动脚本(日志使用宿主会话目录,meta 使用缓存目录)
language-server.json                           # 固定的 LuaLS 版本、各平台下载地址与 SHA-256
scripts/package.mjs                            # 下载并校验 LuaLS,按平台打包成 dist/<名称>-<版本>-<平台>.zip
.github/workflows/ci.yml                       # PR 时打包,并用 Lithe Store 的规则检查
.github/workflows/release.yml                  # 推送 v<版本> 标签时发布 GitHub Release

改成你自己的插件:

  1. 把目录和 plugin.json 的 id 改成你自己的反向域名(如 io.github.<用户名>.<插件名>), 不要使用 dev.lithe.*;vendor.signatureRequirement 保持 "none"。
  2. 修改 scripts/package.mjs 顶部的 PACKAGE_DIR、ASSET_PREFIX,以及 language-server.json。 包含平台相关可执行文件时按 <名称>-<版本>-<系统>-<架构>.zip 分别打包;可执行文件不能在运行时 往插件目录写文件,需要写的状态请放到用户缓存目录(参考 bin/lithe-lua-language-server)。
  3. 修改启动器中的缓存命名空间,保留宿主注入的日志目录,并修改 .github/workflows/ci.yml 中读取清单的路径, 同步更新作者信息、许可证和第三方声明。项目相关的索引应按工作区隔离。
  4. plugin.json 的完整格式见 lithe-plugin-docs 里的 插件契约。

本地先用 Node.js 22+ 打包(还需要 tar、zip、unzip):

node scripts/package.mjs

脚本重新生成 dist/,输出两个 macOS 架构的 zip 和摘要。CI 还会检查归档结构与社区包声明。 发布前按生命周期验收步骤 在目标 Mac 上确认 LSP、运行、禁用、重启、更新和卸载;打包成功不等于这些交互已经通过。

发布新版本

  1. 修改 plugin.json 的 version(例如 0.2.0),合入 main。

  2. 推送同名标签:

    git tag v0.2.0 && git push origin v0.2.0
  3. Release 工作流会核对标签与版本一致、打包并发布 Release(说明里附 SHA-256)。

  4. Lithe Store 的自动追踪会在 6 小时内发现新版本并开合并请求,合并后用户即可在 Lithe 中更新。

首次收录到 Lithe Store 需要手动提交一次,见 Lithe Store 的 发布文档。

许可

Apache-2.0

About

Lithe 的 Lua 支持插件(Lithe Store 社区插件示例与模板)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages