LINUX.ORG.RU

Как «прикрутить» свой собственный linter к Vim?

 


0

1

Всем здравствуйте.

Хочется странного. Хочется привязать линтер X к типу файлов Y в редакторе Z (причём Z == Vim).

Я так понимаю, есть два пути:

  1. Создать свой compiler plug-in, который бы определял makeprg и errorformat и положить его ~/.vim/compiler:

    CompilerSet makeprg=...
    CompilerSet errorformat=...
    

    а затем динамически включать и выключать описанный «компилятор» при смене типа файла:

    autocmd Filetype Y compiler X
    
  2. Внедриться в syntastic, который и так уже поддерживает 100500 статических анализаторов кода.

Вопросы:

  1. Какие ещё пути существуют?
  2. Как обычно решается вопрос с проверкой содержимого «безымянного» буфера, у которого уже есть filetype, но которому не соответствует никакой файл на диске?
  3. Стоит ли заморачиваться с написанием модулей расширений на Python или Ruby?
  4. Есть ли возможность непрерывно, как это делают современные IDE, анализировать код по мере ввода текста?
  5. Есть ли возможность выводить результаты анализа не в «линейке редактора» («editor gutter»), как это делают syntastic и vim-gitgutter и не в Error Window (:copen), а прямо в буфере с кодом (возможно, до след. redraw)?

Есть ли расширения Vim, которые уже делают что-то подобное?

★★★★★

Последнее исправление: Bass (всего исправлений: 3)

Какие ещё пути существуют?

По таймеру вызывать линтер и в каллбеке выводить его результаты.

Как обычно решается вопрос с проверкой содержимого «безымянного» буфера, у которого уже есть filetype, но которому не соответствует никакой файл на диске?

Либо временный файл, либо передача содержимого на stdin.

Стоит ли заморачиваться с написанием модулей расширений на Python или Ruby?

Думаю, что нет.

Есть ли возможность непрерывно, как это делают современные IDE, анализировать код по мере ввода текста?

Таймеры есть, события CursorHold и CursorHoldI тоже.

Есть ли возможность выводить результаты анализа не в «линейке редактора» («editor gutter»), как это делают syntastic и vim-gitgutter и не в Error Window (:copen), а прямо в буфере с кодом (возможно, до след. redraw)?

popups, наверное. Не знаю можно ли их несколько за раз показать.

xaizek ★★★★★
()
Ответ на: комментарий от agentgoblin

ALE не подойдёт? ktlint там вроде есть в поддерживаемых.

https://github.com/dense-analysis/ale

В сторону LSP до сих пор смотрел со священным ужасом, но, видимо, пришла пора таки познакомиться.

Спасибо!

Bass ★★★★★
() автор топика
Ответ на: комментарий от zezic

Спасибо.

Названия обоих проектов (LanguageClient-neovim и coc.nvim) обманчивы – на деле, оба работают в т. ч. и с Vim 8+.

Bass ★★★★★
() автор топика
Ответ на: комментарий от xaizek

Спасибо. Очень подробно.

Bass ★★★★★
() автор топика
Ответ на: комментарий от bread

Neomake смотрели?

Спасибо. Не знал. Посмотрю.

Bass ★★★★★
() автор топика

Есть ли возможность непрерывно, как это делают современные IDE, анализировать код по мере ввода текста? Есть ли возможность выводить результаты анализа не в «линейке редактора» («editor gutter»), как это делают syntastic и vim-gitgutter и не в Error Window (:copen), а прямо в буфере с кодом (возможно, до след. redraw)?

ALE это умеет https://i.imgur.com/SCo1Syo.png

habamax ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.