Erlang LS指南(二)

Theia IDE

安装

通过在运行实例中包含 Erlang/OTP 并安装 VSCode 扩展,可以在 Theia IDE 中使用 Erlang LS。

如果您想尝试使用 GitPod,请单击此处。 要在您的 Erlang 项目(托管在 GitHub 或 Gitlab)中使用相同的设置,您可以在 .gitpod.yml 中找到 GitPod 配置

Kakoune

Kakoune 编辑器通过 Kakoune 语言服务器协议客户端 (kak-lsp) Kakoune 插件为 Erlang LS 提供支持。

步骤 0:使用最近的 Kakoune 安装

确保您最近安装了 Kakoune。 包管理器可能带有非常旧的 Kakoune 版本。

提示:

  1. 从源代码构建 Kakoune 很容易,并且会为您提供最新的功能
  2. 如果您按照此页面上的步骤操作,Erlang LS 应该可以在 Kakoune 中使用。 但是,除了 Erlang LS 提供的功能(如 goto 定义等)之外,您可能还希望看到 Erlang 的语法突出显示。这仅在 Kakoune 2021.10.28 标记版本(及更高版本)或当前 git 源中可用

第 1 步:安装 Erlang LS

在你的系统上安装 Erlang LS。 您可能会或可能不会决定将 erlang_ls 可执行文件放在 $PATH 上。

第 2 步:安装 kak-lsp

按照存储库上的说明从源代码安装或构建 kak-lsp。

第 3 步:编辑 kak-lsp 配置

寻找 kak-lsp.toml。 该文件具有 Kakoune kak-lsp 插件的语言特定设置。

在 Linux 上,kak-lsp 的配置通常应该位于 $HOME/.config/kak-lsp/kak-lsp.toml 中,其中 $HOME 是您的主目录。

在你最喜欢的编辑器(Kakoune 😄?)中打开 kak-lsp.toml,查找 [language.erlang]。 它应该看起来像这样:

[language.erlang]
filetypes = ["erlang"]
# See https://github.com/erlang-ls/erlang_ls.git for more information and
# how to configure. This default config should work in most cases though.
roots = ["rebar.config", "erlang.mk", ".git", ".hg"]
command = "erlang_ls"

提示:如果您没有找到 [language.erlang],您可能使用的是旧版本的 kak-lsp。 没关系,你可以自己添加这个 toml 片段到 kak-lsp.toml ,这没有任何问题。

如果 erlang_ls 可执行文件在您的 $PATH 上 如果您添加了上述代码片段并重新启动 Kakoune,请保存 kak-lsp.toml。

你完成了! Erlang LS 现在应该可以用于 Erlang 项目和源代码了!

如果 erlang_ls 可执行文件不在您的 $PATH 上 将 [language.erlang] 部分的命令行更改为:

command = "/the/path/to/erlang_ls"

不要忘记保存文件并重新启动 Kakoune!

特性

面包屑

面包屑在页面顶部显示指向当前元素及其祖先的链接列表。

001

VS Code

面包屑可以通过以下方式启用或禁用:

Settings > Workbench > Breadcrumbs

设置部分包含许多额外的首选项来调整要精确显示的内容(例如图标、符号、文件的完整路径等)。

Emacs

面包屑由 lsp-mode 包提供。 要启用面包屑:

(setq lsp-headerline-breadcrumb-mode t)

您还可以通过自定义 lsp-headerline-breadcrumb-segments 变量来自定义在面包屑中显示的内容。 更多信息请参考官方 lsp-mode 文档。

Code Completion

通过获取上下文感知完成函数名称、宏、记录、变量名称等代码。

002

Go To Definition

导航到函数、宏、记录或类型的定义。

003

转到 OTP 行为的实现

在 gen_server:start_link 调用上悬停? 只需按一下键即可跳转到相应的 init 函数。

004

函数签名(Signature)建议

永远不记得函数keytake/3参数列表的顺序? 你并不孤单。 我们为您提供保障。

005

编译器信息诊断

整齐地排列显示来自编译器的警告和错误。

006

Dialyzer诊断信息

让 Dialyzer 毫无错误地完全通过从未如此简单。

007

Elvis 诊断信息

内联显示Elvis的风格建议。 不再有同事的挑剔评论!

008

Edoc

将鼠标悬停在本地或远程函数上以查看其 edoc。 当 edocs 不可用时,您会非常想念这个功能,以至于您将开始主动编写它们!

009

包含文件(Included files)自动导航

只需单击一下即可导航到包含的文件。

010

查找/查看参考

谁在调用这个函数? 可以在不离开当前上下文的情况下弄清楚。

011

大纲(Outline)

在旁边获得一个很好的模块大纲并在功能之间跳转。

012

Related Posts

2021 年你需要知道的关于 Erlang 的一切

今天,我们将看一个相当古老且有些古怪的东西。 你们大多数人可能没有注意到的语言。 虽然 Erlang 不像某些现代编程语言那样流行,但它安静地运行着 WhatsApp 和微信等每天为大量用户提供服务的应用程序。 在这篇文章中,我将告诉你关于这门语言的更多事情、它的历史,以及你是否应该考虑自己学习它。 ## 什么是 Erlang,它在哪里使用? Erl

Read More

Erlang JIT中基于类型的优化

这篇文章探讨了 Erlang/OTP 25 中基于类型的新优化,其中编译器将类型信息嵌入到 BEAM 文件中,以帮助JIT(即时编译器)生成更好的代码。 ## 两全其美 OTP 22 中引入的基于SSA的编译器处理步骤进行了复杂的类型分析,允许进行更多优化和更好的生成代码。然而,Erlang 编译器可以做什么样的优化是有限制的,因为 BEAM 文件必须

Read More

Erlang JIT之路

自从Erlang 存在,就一直有让它更快的需求和野心。这篇博文是一堂历史课,概述了主要的 Erlang 实现以及如何尝试提高 Erlang 的性能。 ## Prolog 解释器 Erlang 的第一个版本是在 1986 年在 Prolog 中实现的。那个版本的 Erlang 对于创建真正的应用程序来说太慢了,但它对于找出Erlang语言的哪些功能有用,哪

Read More