Что: b6692e5ff393fc54ea8e6c568d1e7e2fb7795560 Когда: 2022-07-16 15:01:50+03:00 ------------------------------------------------------------------------ Темы: go vim ------------------------------------------------------------------------ Снова про форматирование кода в Vim http://www.git.stargrave.org/?p=dotfiles.git;a=commitdiff;h=1e761ea8af276caa2ff605cb4d7d0a63fac51a36 http://www.git.stargrave.org/?p=dotfiles.git;a=commitdiff;h=f0f5d759e21858dc6a50f88ce80cdec24493a52c В 3a417a68fd72f8b882dfc760b7dd6fa3a3940cd4 писал про то, что можно существенно упростить вызов форматировалки кода. Но был не прав: оно не учитывает что команда может упасть и выдать ошибки. И в моём случае полностью перетирает содержимое выводом об ошибке. Оказалось, что Go-шный родной плагин не делает ничего лишнего: проверяет код ошибки, парсит вывод с ошибками из текущего буфера, заполняя quickfix, дальше выполняет undo. Использование самого буфера как временное хранилище мне нравится. Плагин был сделан отлично. Но я его портировал на vim9script. Но есть другая проблема: если были ошибки, то из-за перетирания всего буфера, его changelist становится полностью невалидным. Я делаю :Fmt, получаю ошибку, но уже ни одна команда перемещения по изменениями у меня не отработает. Можно вызвать команду через system(), получить её вывод и код возврата, ничего не делая с буфером. Но я не нашёл способа как бы обновить весь буфер не инвалидировав changelist, тогда как equalprg вызов оставляет его почти полностью неизменным. Поэтому в фоне (если вызывать system() или systemlist(), то они скармливают данные не через pipe, а через временный файл) запускаю equalprg, агрегирую её строчки, и при плохом коде возврата заполняю ими quickfix. В противном случае вызываю =-форматирование. ------------------------------------------------------------------------ оставить комментарий: mailto:comment@blog.stargrave.org?subject=Re:%20%D0%A1%D0%BD%D0%BE%D0%B2%D0%B0%20%D0%BF%D1%80%D0%BE%20%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%20%D0%BA%D0%BE%D0%B4%D0%B0%20%D0%B2%20Vim%20%28b6692e5ff393fc54ea8e6c568d1e7e2fb7795560%29 ------------------------------------------------------------------------ Сгенерирован: SGBlog 0.34.0