1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-rust-language-server

Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

⚠️ Поддержка RLS больше не осуществляется

RLS был устаревшим и больше не поддерживается. Его заменил rust-analyzer. Пользователям рекомендуется удалить RLS и следовать инструкциям в руководстве rust-analyzer для установки его в вашем редакторе.


Сервер языка Rust (RLS)

RLS предоставляет сервер, который работает в фоновом режиме, предоставляя IDE, редакторы и другие инструменты с информацией о программах на Rust. Он поддерживает функциональность, такую как 'перейти к определению', поиск символов, форматирование и автозавершение кода, а также позволяет переименовывать и рефакторить код.

Высокий уровень обзора архитектуры можно найти здесь.

RLS получает исходные данные из компилятора и Racer. Где это возможно, он использует данные из компилятора, которые точны и полны. Где это невозможно (например, для автозавершения кода и когда сборка слишком медленная), он использует Racer.

Так как Rust-компилятор ещё не поддерживает полную инкрементальную компиляцию, мы не можем предложить идеальный опыт. Однако, оптимизируя использование компилятора и падая обратно на Racer, мы можем предложить довольно хороший опыт для небольших и средних crates. По мере эволюции RLS и компилятора, мы будем предлагать лучший опыт для всё больших и больших crates.RLS спроектирован так, чтобы быть независимым от фронтенда. Мы надеемся, что он будет широко принят различными редакторами и IDE. Чтобы стимулировать развитие, мы предоставляем ссылку на реализацию фронтенда RLS для Visual Studio Code.

Установка

Шаг 1: Установите rustup

Вы можете установить rustup на многих платформах. Это поможет нам быстро установить RLS и его зависимости.

Если у вас уже установлен rustup, обновите его, чтобы убедиться, что у вас последняя версия rustup и компилятора:

rustup update

Если вы собираетесь использовать расширение для VSCode, вы можете пропустить шаг 2.

Шаг 2: Установите RLS

После установки rustup выполните следующие команды:

rustup component add rls rust-analysis rust-src

Ошибка: Компонент 'rls' недоступен для загрузки (ночное)

Развитие внутренних компонентов rustc происходит очень быстро. Проекты, зависящие от внутренних компонентов nightly, особенно clippy, могут часто ломаться из-за этого. Когда такие поломки случаются, ночная версия релиза будет недоступна для rls. Это компромисс по сравнению с другим вариантом, когда просто не публикуется ночная версия, но это избегает блокировки nightly релизов Rust для тех, кто не нуждается в clippy/rls.Чтобы уменьшить проблемы, у нас есть:

  • rustup будет предупреждать, если обновление не содержит всех компонентов, которые вы используете. Это означает, что вы больше не сможете случайно обновиться до версии без rls. Как только rls станет доступен снова, он будет обновлен.
  • rls и clippy доступны в канале stable. Это означает, что большинство разработчиков, устанавливающих Rust впервые, должны использовать stable.
  • Однако, если вам нужна последняя nightly версия rls, вы можете использовать https://rust-lang.github.io/rustup-components-history/ для поиска и установки датированной nightly версии, например rustup install nightly-2018-12-06.Также см. #641.

Запуск

RLS построен для работы с многими IDE и редакторами; мы в основном используем VSCode для тестирования RLS. Самый простой способ — использовать опубликованное расширение.

Вы узнаете, что RLS работает, когда увидите это в строке состояния внизу, с вращающимся индикатором:

RLS: работает ◐

Как только вы увидите:

RLS

Тогда у вас будет полный набор возможностей. Вы можете перейти к определению, найти все ссылки, переименовать, перейти к типу и т.д. Автозавершение также доступно с использованием алгоритмов, предоставляемых Racer. По мере ввода вашего кода он будет проверяться, и сообщения об ошибках будут отображаться, когда они возникают. Вы можете навести курсор на эти сообщения, чтобы увидеть текст ошибки.

Настройка

RLS может быть настроен на уровне проекта; используя расширение Visual Studio Code, это будет сделано через файл настроек рабочего пространства settings.json.

Другие редакторы будут иметь свой собственный способ отправки метода workspace/DidChangeConfiguration. Параметры опций находятся в объекте rust, так что ваш клиент LSP может отправлять {"settings":{"rust":{"unstable_features":true}}} как параметры.

Записи в этом файле будут влиять на то, как работает RLS, и как он собирает ваш проект.В настоящее время мы принимаем следующие опции:

  • unstable_features (bool, по умолчанию false) включает нестабильные функции. В настоящее время ни один параметр не требует этого флага.
  • sysroot (String, по умолчанию "") если заданная строка не пустая, используйте заданный путь в качестве sysroot для всех вызовов rustc вместо автоматического обнаружения sysroot.
  • target (String, по умолчанию "") если заданная строка не пустая, используйте заданный целевой триплет для всех вызовов rustc.
  • wait_to_build (u64) переопределяет длительность дебаунса сборки (мс). В противном случае эта длительность автоматически выводится из последней длительности сборки.
  • all_targets (bool, по умолчанию true) проверяет проект так, словно вы запускаете cargo check --all-targets. То есть, проверяет все цели и интеграционные тесты.
  • crate_blacklist ([String], по умолчанию этот список) позволяет указать, какие crate'ы должны быть пропущены RLS. По умолчанию пропускаются библиотеки значительного размера, которые пользователь часто может не интересовать напрямую, что снижает задержку сборки.
  • build_on_save (bool, по умолчанию false) включает или выключает непрерывный анализ RLS или только после сохранения файла.
  • features ([String], по умолчанию пустой) список функций Cargo для включения.
  • all_features (bool, по умолчанию false) включает все функции Cargo.* no_default_features (bool, по умолчанию false) отключает стандартные функции Cargo.
  • racer_completion (bool, по умолчанию true) включает автозавершение кода с помощью racer (что в настоящее время является нашим единственным бэкендом для автозавершения кода). Также включает подсказки при наведении курсора и переход к определению, чтобы при отсутствии данных save-analysis падать на racer.
  • clippy_preference (String, по умолчанию "opt-in") контролирует настойчивость диагностики clippy при её доступности. Допустимые значения (не чувствительны к регистру):
    • "off" Отключает линтеры clippy.
    • "on" Отображает те же диагностики, что и командная строка clippy, запущенная без аргументов (clippy::all если не переопределено).
    • "opt-in" Отображает только те линтеры явно включенные в коде. Начните с добавления #! [warn(clippy::all)] в корень каждого crate, который вы хотите проверить. и следующие нестабильные опции:* build_lib (bool, по умолчанию false) проверяет проект так, будто вы передали аргумент --lib команде cargo. Мутуально исключающийся с build_bin и предпочитаемый ему.
  • build_bin (String, по умолчанию "") проверяет проект так, будто вы передали аргумент --bin <build_bin> команде cargo. Мутуально исключающийся с build_lib.
  • cfg_test (bool, по умолчанию false) проверяет проект так, будто вы запускаете cargo test вместо cargo build. То есть компилирует (но не запускает) тестовый код.
  • full_docs (bool, по умолчанию false) указывает rustc заполнить данные save-analysis полной документацией исходного кода. Когда значение false, записывается только первый абзац. Эта опция в настоящее время имеет мало или никакого влияния на подсказки при наведении курсора. Документация save-analysis используется только в случае, если извлечение исходного кода не удалось. Эта опция не влияет на стандартную библиотеку.
  • show_hover_context (bool, по умолчанию true) отображает дополнительный контекст в подсказках при наведении курсора, когда он доступен. Часто это локальное объявление переменной. Когда значение false, содержимое доступно только при удержании клавиши Ctrl в некоторых редакторах.

Устранение неполадок

Для советов по отладке и устранению неполадок см. debugging.md.

Вклад

Вы можете посмотреть в contributing.md в этом репозитории, чтобы узнать больше о вкладе в этот проект.Если вы хотите реализовать поддержку RLS в редакторе, см. clients.md.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Язык

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/mirrors-rust-language-server.git
git@api.gitlife.ru:oschina-mirror/mirrors-rust-language-server.git
oschina-mirror
mirrors-rust-language-server
mirrors-rust-language-server
master