А есть тут кто-нибудь, кто использует Emacs для разработки на Rust, используя rust-analyzer? Можете поделиться конфигами с работающим автодополнением и прочими фичами?
Большая часть того, что вижу в примерах в инете — на основе RLS (Rust Language Server). Но у меня тут такая особенность, что Cargo и прочие стандартные инструменты не используются, а заставить RLS авто-дополнять просто из указанных вручную каталогов у меня не получилось. rust-analyzer вроде как умеет так работать, но у меня сходу не получилось.
IDEA не предлагать. Она прекрасна и это лучшее, что я видел, но она не работает в удалённом режиме, а у меня весь кодинг идёт на удалённом сервере.
Здравствуйте, Artem Korneev, Вы писали:
AK> IDEA не предлагать. Она прекрасна и это лучшее, что я видел, но она не работает в удалённом режиме, а у меня весь кодинг идёт на удалённом сервере.
Файлы редактировать локально и отправлять на сервер через git или rsync. Вариант?
Здравствуйте, Artem Korneev, Вы писали:
AK>Большая часть того, что вижу в примерах в инете — на основе RLS (Rust Language Server). Но у меня тут такая особенность, что Cargo и прочие стандартные инструменты не используются
А чем подобное вызвано? Со стороны кажется, что Cargo — это, возможно, одна из самых главных фич языка.
Здравствуйте, kaa.python, Вы писали:
KP>А чем подобное вызвано? Со стороны кажется, что Cargo — это, возможно, одна из самых главных фич языка.
Система сборки у нас другая. Что-то вроде гугловского Bazel. Из преимуществ — унификация (работает почти со всеми нашими языками) и хорошее отслеживание изменений — как следствие, компиляция идёт быстрее. Но вот из недостатков — то, что оно не родное ни для одного из языков и везде приходится что-то докручивать чтоб оно работало с остальными инструментами.
Здравствуйте, Artem Korneev, Вы писали:
AK>День добрый, коллеги.
AK>А есть тут кто-нибудь, кто использует Emacs для разработки на Rust, используя rust-analyzer? Можете поделиться конфигами с работающим автодополнением и прочими фичами?
Зачем конфиги?
Делаете M-x customize-group для lsp-mode,
там выбираете "Lsp Rust", там выбираете "Lsp Rust Server"
и меняете rls на rust-analyzer. В общем-то и все.
Если "rust-analyzer" не в PATH, то можно там рядом прописать полный путь до него.
В общем если у вас rls работал, то заставить заработать rust-analyzer
дело двух минут.
Здравствуйте, Artem Korneev, Вы писали:
AK> ·>Файлы редактировать локально и отправлять на сервер через git или rsync. Вариант? AK> Через GIT пробовал — утомительно очень.
А что утомительного? Можно скриптик написать и на хоткей повесить.
AK> rsync — не пробовал пока. Коллеги говорят, что пытались — медленно очень. Но надо самому пощупать.
А ещё IDEA умеет какую-то магию делать, я правда не пробовал. https://www.jetbrains.com/help/idea/uploading-and-downloading-files.html#autoupload_definitions
Да с IDEA там ещё другая проблема, которую я тоже вскользь упомянул — система сборки другая и IDEA её не понимает. Пытается найти Cargo-файлы, а их нет.
Есть у нас какой-то полурабочий плагин для этой системы сборки, но он работает с очень старыми версиями IDEA, где Rust сам по себе ещё плохо поддерживается.
Здравствуйте, Zhendos, Вы писали:
Z>В общем если у вас rls работал, то заставить заработать rust-analyzer
Ну если б у меня rls работал, я б этот rls и использовал. Нет у меня ничего рабочего.
Попробовал я rls — там автодополнение не заработало совсем. Проблема в том, что Cargo-файлов нет, система сборки другая. Попробовал rust-analyzer — там работало через раз, в основном в пределах того же файла. Сам я Emacs последний раз настраивал для разработки на С++ по конфигам Alex Ott лет эдак 10 назад. В ту пору проще всего было взять чужой настроенный конфиг и допилить там уже по мелочи своё, там где хочется по-другому. Вот потому и сейчас спросил — поделиться готовым конфигом, если кто уже настраивал Emacs для работы с rust-analyzer.
Здравствуйте, Artem Korneev, Вы писали:
AK>Большая часть того, что вижу в примерах в инете — на основе RLS (Rust Language Server). Но у меня тут такая особенность, что Cargo и прочие стандартные инструменты не используются
AK>IDEA не предлагать. Она прекрасна и это лучшее, что я видел, но она не работает в удалённом режиме, а у меня весь кодинг идёт на удалённом сервере.
А вот я все-таки предложу, ибо "кодинг на удаленном сервере", внезапно, отлично работает и без удаленного сервера. На внутренней вики есть объяснение, как.
Здравствуйте, Artem Korneev, Вы писали:
AK> ·>А что утомительного? Можно скриптик написать и на хоткей повесить. AK> Скриптик и хоткей могут это локально сохранить и запушить. А нужно ещё удалённо это синхронизировать и достать.
Здравствуйте, Artem Korneev, Вы писали:
AK>IDEA не предлагать. Она прекрасна и это лучшее, что я видел, но она не работает в удалённом режиме, а у меня весь кодинг идёт на удалённом сервере.
в таком случае есть fuse+sshfs и запуск make на удаленной машине. полмегабита должно хватить за глаза, и нервы в порядке.
AK>А есть тут кто-нибудь, кто использует Emacs для разработки на Rust, используя rust-analyzer? Можете поделиться конфигами с работающим автодополнением и прочими фичами?
AK>Но у меня тут такая особенность, что Cargo и прочие стандартные инструменты не используются, а заставить RLS авто-дополнять просто из указанных вручную каталогов у меня не получилось. rust-analyzer вроде как умеет так работать, но у меня сходу не получилось.
Это я видел. У меня не заработало. А так как сам я в настройке Emacs и раньше-то слабо разбирался, а сейчас вообще всё забыл, то и спросил тут.
Я подумал, что если кто тут Emacs'ом пользуется, то наверное смогут подсказать, как заставить эту связку работать.
Здравствуйте, Artem Korneev, Вы писали:
AK>IDEA не предлагать. Она прекрасна и это лучшее, что я видел, но она не работает в удалённом режиме, а у меня весь кодинг идёт на удалённом сервере.
Так там же синхронизация отличная. Настраиваешь Build, Execution, Deployment | Deployment, редактируешь локально, а оно все измененное прозрачно синхронизирует с удаленным сервером.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Здравствуйте, ути-пути, Вы писали:
УП>Так там же синхронизация отличная. Настраиваешь Build, Execution, Deployment | Deployment, редактируешь локально, а оно все измененное прозрачно синхронизирует с удаленным сервером.
Это всё работает, когда IDEA хотя бы локально может работать с теми исходниками. В моём случае — не может из-за отсутствия Cargo-файлов. Оно не может распарсить эти исходники. Часть зависимостей можно решить, вручную создав Cargo.toml и прописав пути к исходникам с зависимостями. Но это не работает для автоматически сгенерированного кода, например.
Эту проблему я тоже пытаюсь решить, но там всё долго и болезненно. Пока хочу хотя бы Emacs настроить, чтоб код можно было писать. С Emacs'ом, правда, будут ровно те же проблемы с автоматически сгенерённым кодом, но там я надеюсь какой-нибудь плагин допилить для автодополнения тех структур.
Здравствуйте, Artem Korneev, Вы писали:
AK>Это всё работает, когда IDEA хотя бы локально может работать с теми исходниками. В моём случае — не может из-за отсутствия Cargo-файлов. Оно не может распарсить эти исходники. Часть зависимостей можно решить, вручную создав Cargo.toml и прописав пути к исходникам с зависимостями. Но это не работает для автоматически сгенерированного кода, например.
AK>Эту проблему я тоже пытаюсь решить, но там всё долго и болезненно. Пока хочу хотя бы Emacs настроить, чтоб код можно было писать. С Emacs'ом, правда, будут ровно те же проблемы с автоматически сгенерённым кодом, но там я надеюсь какой-нибудь плагин допилить для автодополнения тех структур.
Там сейчас Shared Indexes сделали, не может помочь?
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.