精灵语言服务器
这是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 = 0let 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)
- 可选配置 isp 模式 财务报告和审定财务报表 isp-ui-mode (英语)中添加此选项
.doom.d/config.el。 。 。 .
(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 |
高级
你现在应该可以使用来自Sublime的整合. 你也许想读一下 提供的特点
伟大的图书馆 这是基于
捐款
请做( ) 一个语言服务器的最好之处是,多个客户端会以此方式改进.