@elm-tooling/elm-language-server

中文文档
2.10.0发布于 2026/10/02MITTypeScriptES Module构建来源已验证近 30 天下载 4863

在节点中执行精灵语言服务器.

中文使用文档
文档目录16 节
  1. 安装
  2. 替代品:从源头编译并安装
  3. 替代品:安装方式 无
  4. 所需资源
  5. 配置
  6. 线性
  7. 特征
  8. 服务器设置
  9. 编辑器支持
  10. 虚拟系统
  11. 维姆
  12. 卡库内
  13. 埃马克斯
  14. 高级
  15. 伟大的图书馆 这是基于
  16. 捐款

精灵语言服务器

Matrix Build Status Open in Visual Studio Code

Packaging status

这是Elm编程语言的语言服务器执行.

目录

安装

VSCode 用户说明: 插件 包含语言服务器。 无需安装.

服务器可以通过 npm (或出自出处.

npm install -g @elm-tooling/elm-language-server

然后,您应该能够以以下命令运行语言服务器:

elm-language-server

如果你用电壳的话,你可能需要用这个:

elm-language-server.cmd

遵循以下指令将语言服务器集成到您的编辑器中 .

替代品:从源头编译并安装

首先,复制这个repo并编译它. npm link 将添加 elm-language-server 页:1 PATH。 。 。 .

git clone [email protected]:elm-tooling/elm-language-server.git
cd elm-language-server
npm install
npm run compile
npm link

替代品:安装方式 无

elm-languager-server 联 合 国 依赖关系 可在 nixpkgs。 。 。 .

nix-env -i -A nixpkgs.elmPackages.elm-language-server

所需资源

您需要安装 elm 财务报告和审定财务报表 elm-test 获得所有诊断和 elm-format 用于格式化。 或者您也可以把这些安装到本地 npm package.json。 。 。 .

npm install -g elm elm-test elm-format

如果你想使用的话 elm-review数字 :

npm install -g elm-review

或者使用您的本地版本 node_modules 目录,如果想要这样做,您需要设置路径,通过设置(例如设置) elmPath 改为 ./node_modules/.bin/elm) (中文(简体) ).

配置

我们以前有个档案 elm-tooling.json 在那里,你可以具体 "entrypoints"。 这已经不需要 — — 语言服务器自动找到切入点.

如果你拥有的一切 elm-tooling.json 曾经 "entrypoints",您可以安全删除文件.

目前,根本不需要配置.

线性

榆林语言服务器内置支持林入. 看看这个 文档 用于配置插件.

特征

支持榆树0.19和上

特性说明
诊断通过 elm, (中文(简体) ), elm-test 以及我们自己的推论 和linter
格式化通过 elm-format 并经过后处理后,仅返回变化的 diff。 这样,它不应该像运行那样侵入 elm-format 常规
代码目前仅显示某类型别名、自定义类型或功能从该模块被曝光
完成数显示当前文件的补全和片段
定义允许您跳转到类型别名、模块、自定义类型或函数的定义
文档符号识别文档中的所有符号.
折叠我们把精灵构造的代码叠起来
盘旋显示类型别名、模块、自定义类型或函数的类型说明和文档
链接编辑在类型注释名称被编辑时启用自动重命名函数名称, 或者反之亦然
参考文献列出类型别名、模块、自定义类型或函数的所有引用
重命名允许您重命名一个类型别名、模块、自定义类型或函数
工作空间符号识别当前工作空间中的所有符号
选择区域通过选择区域启用导航( 例如扩展选择)

参数徘徊包括当客户端发布Markdown徘徊支持广告时与被推断类型声明的链接. 这包括函数、匿名函数和大小写参数。 分辨率偏好别名类型而不是其基本类型;未命名或未解决类型没有关联. 链接使用文档 URI 和 单基 #L 线条碎片,不包含编辑器特定命令。 客户端必须支持打开文档URI,而精确行导航依赖于客户端,因为LSP没有将这些碎片标准化.

虚拟榆树包文件使用 LSP 3. 18 workspace/textDocumentContent 当客户端发布支持广告时请求。 执行情况包括: vscode-语言客户端 10, (中文(简体) ), 缩写,以及 二级LSP 2.13。不支持标准请求的榆树客户端可以继续使用 elm/provideFileContents 移民期间.

服务器设置

此服务器提供以下设置 :

  • elmLS.trace.server: 启用/无法跟踪记录客户端和服务器通信
  • elmLS.elmPath: 通往您的路径 elm 可执行文件 。 默认情况下应该是空的,在这种情况下它会假定名称并尝试先从本地npm安装或全局安装中获取. 如果您手动设置它, 它将不会尝试从 npm 文件夹中加载 .
  • elmLS.elmReviewPath: 通往您的路径 elm-review 可执行文件 。 默认情况下应该是空的,在这种情况下它会假定名称并尝试先从本地npm安装或全局安装中获取. 如果您手动设置它, 它将不会尝试从 npm 文件夹中加载 .
  • elmLS.elmReviewDiagnostics: 配置从精灵审查得到的衬里诊断. 可能的数值 : off, (中文(简体) ), warning, (中文(简体) ), error。 。 。 .
  • elmLS.elmFormatPath: 通往您的路径 elm-format 可执行文件 。 默认情况下应该是空的,在这种情况下它会假定名称并尝试先从本地npm安装或全局安装中获取. 如果您手动设置它, 它将不会尝试从 npm 文件夹中加载 .
  • elmLS.elmTestPath: 通往您的路径 elm-test 可执行文件 。 默认情况下应该是空的,在这种情况下它会假定名称并尝试先从本地npm安装或全局安装中获取. 如果您手动设置它, 它将不会尝试从 npm 文件夹中加载 .
  • elmLS.disableElmLSDiagnostics: 启用/ 禁用语言服务器的嵌入诊断 .
  • elmLS.skipInstallPackageConfirmation: 跳过安裝套件代码动作的确认.
  • elmLS.onlyUpdateDiagnosticsOnSave:仅更新保存上的编译器诊断,而不是文档更改.

设置可能需要重新启动才能应用 .

编辑器支持

编辑器诊断格式化代码连线完成情况定义文档符号折叠缓冲链接编辑参考资料重命名工作空间符号
虚拟系统: 重度 检查 标记 :: 重度 检查 标记 :: 重度 检查 标记 :: 重度 检查 标记 :: 重度 检查 标记 :: 重度 检查 标记 :: 重度 检查 标记 :: 重度 检查 标记 :: 重度 检查 标记 :: 重度 检查 标记 :: 重度 检查 标记 :: 重度 检查 标记 :
VIM 化学品: 重度 检查 标记 :: 重度 检查 标记 :: 重度 检查 标记 :: 重度 检查 标记 :: 重度 检查 标记 :: 重度 检查 标记 :: 重度 检查 标记 :: 重度 检查 标记 :: x :: 重度 检查 标记 :: 重度 检查 标记 :: 重度 检查 标记 :
VIM 语言库: 重度 检查 标记 :: 重度 检查 标记 :: grey 问题 :: 重度 检查 标记 :: grey 问题 :: grey 问题 :: grey 问题 :: grey 问题 :: x :: grey 问题 :: grey 问题 :: grey 问题 :
维尔: 重度 检查 标记 :: x :: x :: grey 问题 :: 重度 检查 标记 :: x :: x :: 重度 检查 标记 :: x :: 重度 检查 标记 :: x :: 重度 检查 标记 :
卡库内: 重度 检查 标记 :: 重度 检查 标记 :: grey 问题 :: 重度 检查 标记 :: 重度 检查 标记 :: 重度 检查 标记 :: grey 问题 :: 重度 检查 标记 :: x :: 重度 检查 标记 :: 重度 检查 标记 :: grey 问题 :
埃马克斯: 重度 检查 标记 :: 重度 检查 标记 :: 重度 检查 标记 :: 重度 检查 标记 :: 重度 检查 标记 :: 重度 检查 标记 :: grey 问题 :: 重度 检查 标记 :: x :: 重度 检查 标记 :: 重度 检查 标记 :: 重度 检查 标记 :
高级: 重度 检查 标记 :: 重度 检查 标记 :: x :: 重度 检查 标记 :: 重度 检查 标记 :: 重度 检查 标记 :: 重度 检查 标记 :: 重度 检查 标记 :: x :: 重度 检查 标记 :: 重度 检查 标记 :: 重度 检查 标记 :

虚拟系统

刚刚安装 elm-tooling/elm-language-client-vscode 来自该插件 VSCode 市场定位

要启用 VSCode 中的链接编辑,请使用设置 "editor.linkedEditing": true。 。 。 .

维姆

还有 vim 的一般设置指令和 FAQ。 。 。 .

建议安装 语法突出显示,也添加了所需的 检测到精灵为 filetype。可以在 精灵- vim/ vim- 配置- 实例。 。 。 .

缩写

启用支持方式 缩写运行 :CocConfig 并添加下面的语言服务器配置.

如果需要,可以设置路径 elm, (中文(简体) ), elm-test, (中文(简体) ), elm-review 财务报告和审定财务报表 elm-format 与 elmPath, (中文(简体) ), elmTestPath, (中文(简体) ), elmReviewPath 财务报告和审定财务报表 elmFormatPath 变量.

{
  "languageserver": {
    "elmLS": {
      "command": "elm-language-server",
      "filetypes": ["elm"],
      "rootPatterns": ["elm.json"]
    }
  },
  // If you use neovim you can enable codelenses with this
  "codeLens.enable": true
}

其中很多内容都包含在 示例vim 配置 在Coc的读取器.

特性怎样用
诊断:CocList diagnostics
配置刷新为 "diagnostic.refreshAfterSave": false
格式化:call CocAction('format')
代码需要尼欧维姆。 添加 "coc.preferences.codeLens.enable": true 给您的 coc-settings.json 结束 :CocConfig
完成情况默认情况下,见 完成来源 用于定制
定义以 <Plug> 映射可以自己设定,例如.
nmap <silent> gd <Plug>(coc-definition)
nmap <silent> gy <Plug>(coc-type-definition)
文档符号:CocList outline
折叠你必须 set foldmethod=manual 在你身边 vimrc一组Coc会用通常的命令处理折叠, zc, (中文(简体) ), zo类
缓冲:call CocAction('doHover')
参考资料提供情况 <Plug> 例如,测绘. nmap <silent> gr <Plug>(coc-references)
重命名提供情况 <Plug> 例如,测绘. nmap <leader>rn <Plug>(coc-rename)
工作空间符号:CocList symbols

阿列尔

阿列尔 包含 elm_ls 点燃.

let g:ale_linters = { 'elm': ['elm_ls'] }

如果需要,可以设置路径 elm, (中文(简体) ), elm-test, (中文(简体) ), elm-review 财务报告和审定财务报表 elm-format。配置可以是 在这里找到的

let g:ale_elm_ls_use_global = 1
let g:ale_elm_ls_executable = "/path/to/elm-language-server"
let g:ale_elm_ls_elm_path = "/path/to/elm"
let g:ale_elm_ls_elm_format_path = "/path/to/elm-format"
let g:ale_elm_ls_elm_test_path = "/path/to/elm-test"
特性怎样用
诊断:ALENext编号 ::ALEPrevious
配置刷新为 let g:ale_lint_on_text_changed = 0
let g:ale_lint_on_insert_leave = 1
let g:ale_lint_on_save = 1
格式化ALE目前不通过语言服务器集成支持,但 elm-format 是一个支持的 ALE 修正器
代码目前不支持
完成情况默认情况下,见 :h ale-completion 需要更多信息
定义:ALEGoToDefinition, (中文(简体) ), :ALEGoToTypeDefinition,参见 :h ale-go-to-definition 财务报告和审定财务报表 :h ale-go-to-type-definition
文档符号目前只支持工作空间符号
折叠目前不支持
缓冲:ALEHover
参考资料:ALEFindReferences
重命名目前不支持
工作空间符号:ALESymbolSearch <query>

语言库

要使用此语言服务器 语言库 在您的 neavim/ vim 中添加以下配置.

let g:LanguageClient_serverCommands = {
  \ 'elm': ['elm-language-server'],
  \ }

let g:LanguageClient_rootMarkers = {
  \ 'elm': ['elm.json'],
  \ }

卡库内

kak - lsp (英语)

首先安装 kak - lsp (英语),并启用在kakrc。 一种方法是将这些行添加到您的. config/kak/kakrc文件中:

eval %sh{kak-lsp --kakoune -s $kak_session}
lsp-enable

然后,假设安装 elm-language-server, (中文(简体) ), elm-format,以及 elm-test,将本节添加到您的 .config/kak-lsp/kak-lsp.toml 文件 :

[language.elm]
filetypes = ["elm"]
roots = ["elm.json"]
command = "elm-language-server"

埃马克斯

语言客户端包含在 isp 模式,特别是 这里。具体参见 本节 用于isp-mode的最小使用包配置.

Emacs 毁灭日

  • 无注释 lsp 财务报告和审定财务报表 elm 在您的配置文件中 .doom.d/init.el 并添加 +lsp 榆树地层的特征旗:
lsp
(elm +lsp)
(after! lsp-ui
  (setq lsp-ui-doc-max-width 100)
  (setq lsp-ui-doc-max-height 30)
  (setq lsp-ui-sideline-show-code-actions nil)
  (setq lsp-ui-doc-enable nil)
  (setq lsp-ui-doc-show-with-cursor nil)
  (setq lsp-ui-doc-show-with-mouse nil)
  (setq lsp-lens-enable nil)
  (setq lsp-enable-symbol-highlighting nil)
  )

您也可以启用或禁用更多特性 : https://emacs-lsp.github.io/lsp-mode/tourals/how-to-turn-off 互联网档案馆的存檔,存档日期2013-12-21

  • 运行 ~/.emacs.d/bin/doom sync
特性怎样用
诊断默认
格式化保存时
代码lsp-lens-mode, (中文(简体) ), lsp-show-lens
完成情况默认
定义lsp-find-definition, (中文(简体) ), lsp-ui-peek-find-definitions
文档符号lsp-ui-imenu
折叠+fold/open, (中文(简体) ), +fold/close
缓冲lsp-ui-sideline-mode, (中文(简体) ), lsp-ui-doc-mode, (中文(简体) ), lsp-ui-show-doc
参考资料lsp-ui-peek-find-references, (中文(简体) ), lsp-find-references
重命名lsp-rename
选择区域lsp-extend-selection

高级

  1. 安装 榆树语法突出显示, (中文(简体) ), LSP 软件 财务报告和审定财务报表 LSP- 缩写 从软件包控制.
  2. 复次亚细亚.

你现在应该可以使用来自Sublime的整合. 你也许想读一下 提供的特点

伟大的图书馆 这是基于

捐款

请做( ) 一个语言服务器的最好之处是,多个客户端会以此方式改进.

版本与发布记录

@elm-tooling/elm-language-server 共发布 58 个版本,首次发布于 2019/06/08;过去 12 个月发布了 1 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
2.10.0latest2026/10/021 个月前
2.8.02023/12/272 年前
2.7.32023/09/253 年前
2.7.12023/08/303 年前
2.7.02023/05/043 年前
2.6.02022/12/223 年前

关于 @elm-tooling/elm-language-server 的常见问题

@elm-tooling/elm-language-server 是什么?

在节点中执行精灵语言服务器.

如何安装 @elm-tooling/elm-language-server?

在项目目录运行 npm install @elm-tooling/elm-language-server,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 elm-language-server,可以用 npx elm-language-server 直接运行。

@elm-tooling/elm-language-server 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@elm-tooling/elm-language-server 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@elm-tooling/elm-language-server 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=22.17.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@elm-tooling/elm-language-server 可以商用吗?

@elm-tooling/elm-language-server 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@elm-tooling/elm-language-server 的下载量有多少?

根据 npm 官方下载统计,@elm-tooling/elm-language-server 在 2026/10/14 – 2026/11/12 这 30 天内被下载 4,863 次,日均约 162 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@elm-tooling/elm-language-server 还在维护吗?

最新版本 2.10.0 发布于 2026/10/02(1 个月前);至今共发布 58 个版本,其中过去 12 个月发布了 1 个;首次发布于 2019/06/08。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。