[О блоге] [наверх] [пред] [2022-01-11 16:14:37+03:00] [c89a9164128730eb856b89e4f99970a6bfb7b7f4]
Темы: [hate][vim]

Задолбал vim-lsp, переехал на vim-lsc

http://www.git.stargrave.org/?p=dotfiles.git;a=commitdiff;h=53366c99f4b3952a830993dac79e002b0dd381a8
https://github.com/natebosch/vim-lsc
Год назад я писал что vim-lsp препаршивнейшего качества:
3d12e5e1768d806eed09e90f07fecd6549dbeb6e. За последний месяц-пару
обновлял его. Changelist как портился, так и портится.

Если показать hover из описания объекта ("K" клавиша), то перестают
работать стрелочки -- вместо них появляется <plug>что-то-там. Если при
этом создать сессию (:mks) и восстановить её, то после входа в режим
ввода, перестаёт работать Esc и куча других клавиш, вставляя <plug>текст
всякий. В итоге я вынужден был убить редактор, ибо не могу из него
выйти. В репозитории есть коммит, который якобы чинит эту проблему с
ломающим hover-ом. Возможно где-то и чинит, но не в моём случае.

Откатился на сколько-то коммитов назад, где не было рефакторинга
hover-а. Но вскоре, переключив tab tmux-а, заметил что имя pane-а
поменялось на какую-то lsp-related кухню! Тут моё терпение уже
окончательно лопнуло. Задолбал! Как же меня этот плагин задолбал! Мне
кажется за всё время он НИ РАЗУ не работал без косяков, не портя позиции
курсора, changelist, не падая, не сбивая keymap-ов и всё в этом духе.

Из всех оставшихся плагинов для Vim нашёл (бегло) только vim-lsc. Всякие
ALE -- это как Nerd*. Какие-то требуют NodeJS или Rust.

vim-lsc я похоже не пробовал прежде вовсе. И об этом надо бы было
пожалеть. На фоне vim-lsp мне всё в нём нравится! Дока на порядок меньше
по размеру. Устанавливается и настраивается на работу с серверами на раз
два. Передать workspace_config -- без проблем. Из коробки ВСЕ настройки
меня полностью удовлетворяют и нравятся, ничего не надо менять или
переопределять. Кроме одной: отключение автоматического completion,
который мог тормозить на огромных проектах. Code action работает.
Подсветка текущего слова работает. Подсветка ошибок linter-а, пояснение
если курсор стоит на строке с ошибкой -- всё работает из коробки.

А главное: авторы vim-lsc упорно хотят засовывать всё на свете в
quickfix. И лично мне это очень нравится, ибо для vim-lsp писал
собственный плагин который бы это делал. В итоге мой плагин для
автодополнения импортов снова работает просто с quickfix окном!

С hover-ом, показывающим сигнатуру объекта, никаких проблем. Ничего
нигде не портится. Даже goto definition команды заточены на
дружелюбность к "vertical" префиксам команды. Проверил и на Python,
на Go и на Си коде.

Думаю что стабильность его работы связана с тем, что ничего лишнего не
пытаются делать и всё только штатное используется.

Не скрою, пришлось повозиться с ним чтобы заработал ручной вызов
completion-а. Автоматически включённый -- работает. Как выключаю и
переопределяю omnifunc, так ничего не выходит. Излазил вдоль и поперёк
его код completion-а, но не нашёл проблемы. Зато понравился его качество
кода. Под конец догадался сделать :set omnifunc? чтобы увидеть что там
совершенно левое значение выставлено. vim-lsp после запуска LSP демона
выполнял hook, в котором выполнялся setlocal omnifunc. vim-lsc такого
hook-а не имеет и поэтому в приоритете оказывается ftplugin/python из
родной поставки Vim, переопределяющий omnifunc. В общем, это первое что
я должен был бы проверить, но обосрался, к vim-lsc никаких претензий.

PS: Ещё в vim-lsp есть больные на голову касательно whitelist/blacklist:
9a174ec74ffb0a499b5415c8c8238d2584b749ed.

    [оставить комментарий]