ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

在 Zed 中配置 Standard ML 开发环境:Millet 语言服务器与 MLB/CM 工程文件的完整指南

在 Zed 中配置 Standard ML 开发环境:Millet 语言服务器与 MLB/CM 工程文件的完整指南 在 Zed 中配置 Standard ML 开发环境Millet 语言服务器与 MLB/CM 工程文件的完整指南【免费下载链接】zedCode at the speed of thought – Zed is a high-performance, multiplayer code editor from the creators of Atom and Tree-sitter.项目地址: https://gitcode.com/GitHub_Trending/ze/zedStandard MLSML在 Zed 中并非开箱即用的内置语言而是通过社区维护的 Standard ML 扩展提供支持其语言服务器采用专为 SML 打造的 Milletmillet-ls。本篇指南以 Zed 官方文档 Standard ML 为核心骨架说明如何安装编译器与语言服务器、在 Zed 中安装扩展以及如何通过millet.toml与 ML Basis.mlb/ SML/NJ Compilation Manager.cm根文件配置多文件工程让代码补全、诊断与工程级分析真正可用。Standard ML 支持在 Zed 中的架构定位在 Zed 中语言支持通常由四部分组成语言元数据与配置、语法文法Grammar、Tree-sitter 查询Queries以及语言服务器其中每种语言都必须在语言的子目录中包含config.toml并通过extension.toml注册 Tree-sitter 文法与语言服务器的机制可参考 语言扩展总览 一文。对照 Zed 的语言支持清单Standard ML 被列入 Languages with Documentation 分类但其条目没有内置标记*这表明 SML 不是像 Rust、Python、Go 那样被直接编译进 Zed 的语言而是依赖第三方扩展提供能力。具体的技术栈为语法文法用于语法高亮、缩进、括号匹配等 Tree-sitter 相关功能来自tree-sitter-sml文法语言服务器用于补全、诊断、悬停等 LSP 能力Millet对外提供millet-ls可执行文件。理解这一分工很重要Zed 本身负责渲染与交互而理解代码的工作绝大多数交给 Millet。因此后续所有配置的核心目标都是让 Zed 找到 Millet、并让 Millet 正确理解你的工程结构。环境准备编译器与语言服务器根据官方文档的 Setup 章节完整的配置需要两类可执行文件组件作用说明Standard ML 实现编译与运行 SML 代码可选 SML/NJ 或 MLton二者与根文件格式的对应关系见下文Milletmillet-ls语言服务器安装完成后需确保millet-ls位于$PATH中Zed 启动语言服务器时才能发现它安装编译器时建议在同一个环境中同时准备 SML/NJ 与 MLton 中的至少一个具体选择取决于你使用的工程格式MLton 通常配合 ML Basis.mlb文件SML/NJ 则配合其 Compilation Manager.cm文件。Millet 的安装不通过 Zed 完成需要按其官方安装说明独立安装例如使用发行版打包或预编译产物最终以命令行里存在millet-ls为验收标准。可以通过which millet-ls快速确认其是否已经进入 PATH。在 Zed 中安装 Standard ML 扩展按 安装扩展 的说明扩展为 Zed 增加语言、主题、AI 工具等功能浏览与安装统一在Extension Gallery中完成通过命令面板Command Palette执行zed::Extensions动作打开扩展库或在菜单栏选择Zed Extensions。在扩展库中搜索并安装社区维护的Standard ML扩展即可获得语法高亮与语言服务器接入能力。该扩展会注册对应的文法与语言服务器配置关于扩展如何声明语言服务器、如何注册 Tree-sitter 文法等底层机制可查阅 语言扩展总览 中的 Grammar 与 Language Servers 章节。扩展的安装位置与自动安装安装后的扩展位于系统特定目录其中包含两个子目录installed存放每个扩展的源码work存放扩展自身运行时产生的文件例如下载的语言服务器。各平台路径如下macOS~/Library/Application Support/Zed/extensionsLinux$XDG_DATA_HOME/zed/extensions或~/.local/share/zed/extensionsWindows%LOCALAPPDATA%\Zed\extensions如果需要为团队或新机器自动化安装/卸载扩展可以借助设置项auto_install_extensions参考 全量设置参考。该设置默认值为{ html: true }取值为布尔型true表示自动安装、false表示永不安装。例如{ auto_install_extensions: { html: true, sml: true } }若希望核实某个扩展的确切名称可以列出扩展安装目录下installed子目录的名称例如 Linux 下执行ls ~/.local/share/zed/extensions/installed多文件工程配置创建根文件与 millet.toml这是 SML 支持中最关键的工程级步骤。与部分语言逐文件独立分析的模式不同Millet 面向的是整个工程由一个根文件定义的模型文档明确指出对于含多个源文件的工程Millet 期望存在唯一的根组文件root group file。因此在 Zed 中打开的目录下需要创建一个millet.tomlversion 1 [workspace] root sources.mlb该文件的语义如下version 1Millet 配置文件格式版本必须保留[workspace]定义工程工作区root工程根组文件的路径上例指向sources.mlb通常填写相对于该millet.toml所在目录即你在 Zed 中打开的目录的路径。millet.toml应放在你在 Zed 中打开的目录下。如果你打开的是一个更大的父目录例如整个代码仓库而 SML 工程位于某个子目录中那么需要把 Zed 的工作区定位到包含millet.toml的那一层Millet 才能正确定位工程根。根文件两种格式MLB 与 CMroot字段指向的文件必须是下列两种格式之一扩展名全称 / 归属典型工具链说明.mlbML BasisMLBMLtonML Basis 文件通过$(SML_LIB)、$(Basis)等机制展开源码与库依赖被 MLton 广泛采用.cmSML/NJ Compilation ManagerCMSML/NJSML/NJ 的编译管理文件描述组成员group与依赖关系选择哪一种根文件主要取决于你的编译工具链与工程习惯以 MLton 为主的工程使用.mlb以 SML/NJ 为主的工程使用.cm。Millet 对二者均提供支持因此在同一个millet.toml中root既可以是sources.mlb也可以是例如sources.cm。可达性规则哪些文件会被分析理解 Millet 的分析边界是避免明明打开了文件却没有诊断这类困惑的关键。官方文档明确说明凡是从根文件出发、不能被传递到达transitively reachable的源文件都不会被 Millet 分析。换句话说Millet 会从root指定的.mlb或.cm出发沿着其中的引用关系递归展开所有源码与库文件不在该依赖闭包内的文件即使你在编辑器中打开也无法获得语言服务器级别的补全与诊断。因此工程根文件必须真实、完整地包含你想要分析的全部源码新增文件后也应记得把引用登记进 MLB/CM 文件例如在.mlb中追加源文件路径分析范围才会随之更新。单文件场景则更简单如果工程只有一个源文件、无需依赖闭包理论上不需要额外的组文件结构即可获得基本编辑体验但一旦涉及多个相互引用的源文件就应当立即引入millet.toml 根文件来获得完整的工程级分析能力。更多配置项与排查建议millet.toml的更多可选项例如工作区级的其它分析策略收录在 Millet 官方手册中可按需查阅不必局限于上例的最小配置。实际使用中可留意以下几个问题语言服务器未启动 / 无诊断优先检查millet-ls是否安装且位于$PATH。Zed 通过扩展指定的命令启动语言服务器若可执行文件不可见将表现为完全没有 SML 相关诊断与补全。多文件工程无补全检查是否缺少millet.toml以及root指向的.mlb/.cm是否覆盖了你正在编辑的文件可达性规则。改动了根文件后分析未更新确认新增的源文件已写入 MLB/CM 组文件Millet 的分析范围由根文件的依赖闭包决定。工程目录定位在 Zed 中打开的目录应包含millet.toml否则 Millet 无法把它与某一工程根关联起来。小结在 Zed 中使用 Standard ML 的关键路径可以概括为三步安装编译器与millet-ls→ 通过扩展库安装 Standard ML 扩展 → 为多文件工程编写millet.toml并指定.mlb/.cm根文件。其中最后一步是 SML 特有的工程模型也是发挥 Millet 语言服务器全部价值诊断、补全、悬停、跳转的前提。更完整的语言支持机制文法注册、查询文件、语言服务器接入方式可继续阅读 语言扩展总览 与 语言支持清单Zed 侧的安装与自动化策略可参考 安装扩展 及 全量设置参考。【免费下载链接】zedCode at the speed of thought – Zed is a high-performance, multiplayer code editor from the creators of Atom and Tree-sitter.项目地址: https://gitcode.com/GitHub_Trending/ze/zed创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表