От vim-javacomplete2 к jc.nvim
С появлением LSP пришло время завершить развитие моего плагина для разработки на java в vim. Прощай vim-javacomplete2, с тобой было весело.
Но, так как я хотел сохранить свой рабочий процесс при работе с java приложениями, я решил перенести функционал из vim-jc2 в новый плагин jc.nvim.
И так, встречайте jc.nvim – neovim плагин для работы с java, с поддержкой LSP.
Старый функционал
Понятно, что основная задача плагина это автодополнение кода при его написании. Теперь эта функция работает ещё лучше, так как под капотом работает LSP сервер Eclipse. jc.nvim заботится о том, чтобы запустить сервер с нужными параметрами.
Для сохранения мышечной памяти своих пальцев я перенёс некоторый функционал из старого плагина. Такие, как:
- привязки по клавишам;
- генерация элементов класса в стиле старой версии, с выбором полей;
- интерфейс для генерации новых классов.
Дополнительный функционал
Автоматическая установка внешних утилит
При активации плагин проверит наличие необходимых и опциональных утилит для java разработки.
В первую очередь будет предпринята попытка установить JDT.LS сервер, с помощью nvim-lsp-installer
.
Затем, при необходимости будет установлено JDT.LS дополнение java-debug
для возможности отладки приложений.
Так же, при необходимости будет скачана и собрана утилита jol
для анализа объектов.
Отладка с Vimspector
Плагин позволяет использовать Vimspector для отладки приложений. Для этого существуют несколько команд:
JCdebugAttach
– запуск отладки с указанием порта для подключения к приложению;JCdebugLaunch
– запуск приложения в режиме отладки и подключение к нему;JCdebugWithConfig
– использование предустановленных настроек Vimspector.
Рефакторинг
С помощью nvim-jtdls
реализованы извлечения методов и переменных. Чтобы использовать эти методы существуют команды:
JCrefactorExtractVar
– привязка клавишь по умолчанию:<leader>jre
;JCrefactorExtractMethod
– привязка клавишь по умолчанию:<leader>jrm
.
Утилиты
JCutilJshell
– запуск JSell;JCutilBytecode
– извлечение байткода;JCutilJol
– анализ класса с помощьюjol
;JCutilUpdateConfig
– обновление конфигурации проекта в JDT.LS, полезно после обновления зависимостей в maven или gradle.
Использование
Для быстрого старта достаточна следующая конфигурация:
call plug#begin('~/.vim/plugged')
Plug 'neovim/nvim-lspconfig'
Plug 'hrsh7th/nvim-cmp'
Plug 'hrsh7th/cmp-nvim-lsp'
Plug 'williamboman/nvim-lsp-installer'
Plug 'puremourning/vimspector'
Plug 'mfussenegger/nvim-jdtls'
Plug 'artur-shaik/jc.nvim'
call plug#end()
lua require('jc').setup{}
После установки всех дополнений и перезагрузки vim‘а, при открытии java файла jc.nvim проверит наличие всех необходимых утилит и при необходимости установит недостающие.