LINUX.ORG.RU

Vim и плагин Airline

 , ,


0

1

Очень давно использую VIM с плагином Airline. Но пару месяцев назад что-то сломалось в нем сломалось. Допускаю, что могла случиться некая коллизия с другими плагинами.

Суть проблемы: периодически отваливается отображение информации в статусбаре (сбрасывается на дефолтный статусбар). Иногда это происходит при перемещении курсора, но чаще при переключении буфера.

Пробовал делать такой костыль:

au VimEnter,WinEnter,BufWinEnter,BufEnter,QuickFixCmdPost,InsertLeave * AirlineRefresh

Но он не решил проблему. Переключаюсь на какой-либо буфер, airline отваливается, выполняю команду :AirlineRefresh - airline корректно обновляет статусбар. Снова переключаю буфер или просто перемещаю курсор - опять дефолтный статусбар.

При этом видно, что airline отобразил корректно информацию в статусбаре и тут же вернулся дефолтный статусбар.

К сожалению мне так и не удалось установить момент, когда возникает эта проблема. Запустил VIM - все прекрасно. Поработал какое-то время - отвалился airline.

★★★★★

Могу только сказать, что держу конфиг актуальным и УМВР на куче машин. Т.е. проблем точно в плагине каком-то. Я бы погрепал все плагины на предмет statusline и поотключал бы по-очереди тех, кто упоминает её.

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

Это. После того как «сбросится» статуслайн напиши сообщение, которое выдаст. А вообще хорошо настроенный статуслайн в конфиге лучше всяких плагинов по типу lightline и airline.

StillSteal
()

Всем ответившим большое спасибо. На выходных работал мало, поэтому с проблемой не столкнулся. Уверен, что завтра она не заставит себя ждать.

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

не показывает, кто изменил опцию?

Вот такой выхлоп после того, как испортился статуслайн:

 statusline=%!airline#statusline(2)
        Last set from ~/configs/config-vim/.vim/bundle/vim-airline/autoload/airline.vim line 184

А это выхлоп после команды :AirlineRefresh:

  statusline=%!airline#statusline(1)
        Last set from ~/configs/config-vim/.vim/bundle/vim-airline/autoload/airline.vim line 184
andreyu ★★★★★
() автор топика
Ответ на: комментарий от StillSteal

А вообще хорошо настроенный статуслайн в конфиге лучше всяких плагинов по типу lightline и airline.

Соглашусь с тем, что лишний плагин - лишняя боль. Какой конфиг посоветуете для statusline?

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

Код:

call setwinvar(a:context.winnr, option, '%!airline#statusline('.a:context.winnr.')')

Раз номер окна неправильный в контексте, то это может быть багом. Ну или каким-то неправильным использованием (AirlineRefresh не оттуда вызывается). Может следует у автора попросить помощи.

xaizek ★★★★★
()

Отключил плагин jceb/vim-orgmode и баг пропал. Еще раз всем спасибо за помощь.

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

У меня вот такое, но еще немоного в процессе настройки. Что имеется: меняется только цвет filename в инсерт моде на один цвет и если файл изменен на другой, также при помощи coc плагина выводится инфа git и количество измененных строк. В остальном пока стандарт. Планирую еще добавить информацию о количестве ошибок в баффере (дел на 10 минут, просто пока не заморачивался), ну и настроить под большее количество filetype по примеру fugitiveblame(но это уже может занять какое-то количетсво времени. Все эти airline плагины оверблоатед с кучей ненужной инфы. Сам только как недели две назад слез с плагина lightline.

set statusline=%{MyStatusLine()}

function! MyStatusLine() abort
  let l:filename = '%< %f '
  if w:active && (mode() == 'i' || mode() == 's')
    let l:filename = '%<%1* %f %*'
  elseif &modified
    let l:filename = '%<%2* %f %*'
  endif
  let l:redraw = '%{MyStatusLine()}'
  let l:coc = "%{get(g:,'coc_git_status','')}%{get(b:,'coc_git_status','')}%{get(b:,'coc_git_blame','')}"

  let l:statusline = l:redraw . l:filename . "%h%r " . l:coc . "%=%-12.(%l,%c%V%) %y  %P "
  call setwinvar(winnr(), '&statusline', l:statusline)
  return ''
endfunction

augroup SetStatusLine
  autocmd!
  autocmd VimEnter,WinEnter,BufWinEnter * let w:active = 1
  autocmd WinNew,WinLeave * let w:active = 0
  autocmd FileType fugitiveblame setlocal statusline=%<\ %(%l/%L%)\ %=%P\ 
augroup END

StillSteal
()
Последнее исправление: StillSteal (всего исправлений: 2)
Ответ на: комментарий от StillSteal

Спасибо. К счастью, airline делает ровно то, что мне нужно. А баг после избавления от плагина orgmode больше не проявлялся.

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

Мля, накаркал. Баг проявился снова. Значит проблема была не в плагине orgmode.

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