我怎样才能为 Elixir 获得可靠的跳转到定义?

How can I get reliable jump-to-definition for Elixir?

我尝试了 Jet Brains 的 Elixir 插件,其中两个用于 VS Code,但到目前为止 none 它们可靠地引导我定义函数和模块。显然部分原因是因为 elixir-lsp 无法处理 scope 块 (https://github.com/elixir-lsp/elixir-ls#known-issueslimitations).

内的东西

我有一个使用 Universal Ctags 的权宜之计。

在 Mac 上:

brew install --HEAD universal-ctags/universal-ctags/universal-ctags
/usr/local/bin/ctags --exclude=node_modules -R .

将类似这样的内容添加到您的 ~/.vimrc:

set tags=tags,./tags,../tags,../../tags,../../../tags,../../../../tags,../../../../../tags

然后在某些 Elixir 文件上启动 Vim 并使用 ctrl-] 跳转到定义,ctrl-O 跳回。

为了让生活更轻松,我添加了这个 Makefile 目标:

echo '
.PHONY: tags
tags: 
        /usr/local/bin/ctags --exclude=node_modules -R .
' >> Makefile

PHONY 行告诉 Make 总是 运行 命令,即使已经有一个标签文件。

VS Code 有一个名为 ctagsx 的插件,可以很好地处理这些标记文件。我将它与 ElixirLS 插件一起使用,到目前为止似乎可以正常工作。

到目前为止,我还没有找到让 JetBrains/Intellij IDE 使用这些标记文件的方法。