Как я могу получить надежный переход к определению для Elixir?

#elixir

#elixir

Вопрос:

Я попробовал плагин Elixir для Jet Brains и два из них для VS Code, но пока ни один из них надежно не приводит меня к определению функций и модулей. По-видимому, одна из причин заключается в том, что elixir-lsp не может обрабатывать данные внутри scope блоков (https://github.com/elixir-lsp/elixir-ls#known-issueslimitations ).

Комментарии:

1. Я могу подтвердить, что плагин intellij работает, проблема была в последних версиях IDE, intellij всегда вносит критические изменения, и для обновления плагина требуется некоторое время.

Ответ №1:

У меня есть временное решение для этого с использованием универсальных 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
 

Затем запустите Vim для некоторых файлов Elixir и используйте ctrl-] для перехода к определениям, ctrl-O для перехода назад.

Чтобы упростить жизнь, я добавил эту цель Makefile:

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

Фальшивая строка сообщает Make всегда запускать команду, даже если файл тегов уже существует.

В VS Code есть плагин под названием ctagsx, который хорошо работает с этими файлами тегов. Я использую его вместе с плагином ElixirLS, и, похоже, это работает до сих пор.

До сих пор я не нашел способа заставить JetBrains / Intellij IDE работать с этими файлами тегов.

Комментарии:

1. Примечание: удобно также распаковать исходный дистрибутив Elixir в подкаталог и перезапустить make tags , чтобы вы также могли перейти к определениям основных модулей и функций.