Мы не можем обойтись во время разработки без автокомплитов, которые может предложить нам полноценная IDE. Покрыть эту реализацию поможет нам плагин Cmp
Конфиг будет включать в себя сразу несколько различных пакетов:
lua / plugins / cmp.lua
Но пока этот плагин не будет нормально работать, так как у нас не установлены LSP, которые и отвечают за поддержку различных языков
В итоге наш автокомплит будет предлагать нам завершение строк в зависимости от контекста его вызова и доступных вариантов.
LSP + Быстрые переходы
И сейчас для полноценной поддержки наших ЯПов в разработке, нам понадобится подключить Lsp
LSP - это language server protocol, который представляет из себя иснтрумент для взаимодействия с языком (проверка, подсказки и так далее)
Для подключения большого количества различных lsp, мы можем воспользоваться nvim-lspconfig
Тут мы добавили базовые LSP для TS, GO и Lua, а так же клавиши быстрых переходов по коду:
gd - пройти к определению
K - сигнатура функции (какие аргументы она принимает)
ctrl + k - помощь сигнатуры
gi - имплементация
Тут осуществился переход к компоненту из прошлого скрина
leader + D - переход к определнию типа
leader + lr - переименовывает объект
leader + la - выводит быстрое действие, которое можно выполнить
leader + lf - форматирование кода
lua / plugins / lsp.lua
Ну и так же нам нужно установить языковые сервера, чтобы протоклы могли с ними общаться
Либо мы можем установить Mason, который упростит установку языковых серверов
Mason + Ensure install
Далее нам понадобится пакетный менеджер Mason, который пзволит нам устанавливать языковые-сервера и связанные с разработкой пакеты в NeoVim
Первым объектом мы установим сам Mason
а дальше пакет автоматической установки LSP после установки самого Mason
lua / plugins / mason.lua
Командой :Mason мы вызываем окно, в котором сами ищем и через i запускаем установку интересующего нас сервера
Так же он сам за нас добавляет сервер в $PATH
И теперь у нас на данном этапе появляется автокомплит
Treesitter
Теперь нам понадобится плагин для того, чтобы подсвечивать синтаксис Treesitter
lua / plugins / treesitter.lua
В итоге мы из обычной белой подсветки получим полноценную подсветку функций, методов, классов и других конструкций языков
Dressing
Далее было бы удобно открывать быстрые действия с помощью Dressing, которые предоставляет нам LSP в отдельном маленьком попапчике, который будет более удобным отображением, чем окошко в районе поля команд
lua / plugins / dressing.lua
Теперь под каждое действие, которое мы добавили через LSP, у нас открываются попапчики
Trouble
Так же нам очень понадобится плагин, который отобразит более подробно ошибку, которая произошла в коде и в этом нам поможет Trouble
lua / plugins / trouble.lua
leader + qq - тугл диагностики
Она позволяет сразу переключаться по проблемам в проекте. Закрывается окошко просто через q (предварительно перейдя в него через ctrl + направление)
Formatting
Далее нам нужно настроить форматирование кода с помощью плагина Conform
Форматтиер не работает как LSP и мы его должны вызывать будем вызывать ивентом “перед сохранением”
lua / plugins / conform.lua
Далее нам нужно будет запустить команду :MasonInstall stylelua prettier для установки серверов линтеров
В результате после сохранения файла, у нас будет прогоняться форматтиер, чтобы почистить наш код
Linting
И последним этапом в форматировании кода у нас остаётся специфичный под каждую среду разработки линтинг через nvim-lint
Линтер так же не является LSP, но его мы уже будем вызывать после сохранения
lua / plugins / nvim-lint.lua
Чтобы линтер работал внутри ts, нужно, чтобы в конфигурации LSP была строчка с сетапом сервера языка по типу:
lua / plugins / lsp.lua
Теперь мы всегда будем получать ошибки, которые нарушают наши правила eslint и они будут так же выходить в окно с ошибками leader + qq