LINUX.ORG.RU

vim сброс подсветки длинной строки

 


2

1

Есть

let w:m2=matchadd('ErrorMsg','\%81v.*',-1)
Это подсвечивает длинную строку. Если в другом яп поставить
let w:m2=matchadd('ErrorMsg','\%121v.*',-1)
и загрузить в разные буферы, то при переходе из одного в другой - ломается подсветка более длинного(121). При этом ощущаются некислые тормоза. Это решается
autocmd BufLeave call clearmatches()

Но при этом некоторые плагины начинают высвечивать error

autocmd BufLeave *.py call matchdelete(w:m2)

не сбрасывает подсветку.

Как сбросить подсветку при BufLeave ?


Странно, что не сбрасывает. Может она несколько раз установилась, а удалилась одна? :echo getmatches() может их показать.

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

~/.vim/after/ftplugin/python.vim

let w:m2=matchadd('ErrorMsg','\%81v.*',-1) echo 'aaa'

out: «project.py» 304L, 8831C aaa aaa

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

фигасе, а чего это он два раза выполняется ?

Xwo ()
Ответ на: комментарий от xaizek
runtimepath=~/.vim,~/.vim/plugged/ansible-vim/,~/.vim/plugged/httplog/,~/.vim/plugged/interfaces/,~/.vim/plugged/nginx.vim/,~/.vim/plugged/Nmap-syntax-highlight/,~/.vim/plugged/XChat-IRC-Log/,~/.vim/plugged/vim-bash/,~/.vim/plugged/vim-j
avacomplete2/,~/.vim/plugged/django.vim/,~/.vim/plugged/vim-go/,~/.vim/plugged/vim-pawn/,~/.vim/plugged/vim-autoformat/,~/.vim/plugged/vim-diff-enhanced/,~/.vim/plugged/ctrlp.vim/,~/.vim/plugged/vim-table-mode/,~/.vim/plugged/Tabular/,~/.v
im/plugged/vim-taskwarrior/,~/.vim/plugged/browserlink.vim/,~/.vim/plugged/vim-slime/,~/.vim/plugged/rainbow/,~/.vim/plugged/nerdtree/,~/.vim/plugged/vimproc.vim/,~/.vim/plugged/vim-repeat/,~/.vim/plugged/vim-surround/,~/.vim/plugged/AutoF
enc/,~/.vim/plugged/Colorizer/,~/.vim/plugged/CursorLineCurrentWindow/,~/.vim/plugged/delimitMate.vim/,~/.vim/plugged/easymotion/,~/.vim/plugged/indentLine.vim/,~/.vim/plugged/LargeFile/,~/.vim/plugged/lightline/,~/.vim/plugged/localvimrc/
,~/.vim/plugged/QFixToggle/,~/.vim/plugged/sessionman.vim/,~/.vim/plugged/snipmate/,~/.vim/plugged/syntastic/,~/.vim/plugged/SyntaxRange/,~/.vim/plugged/tagbar/,~/.vim/plugged/tComment/,~/.vim/plugged/timetap/,~/.vim/plugged/vim-easy-align
/,~/.vim/plugged/vim-qlist/,~/.vim/plugged/vim-signature/,~/.vim/plugged/vitality/,~/.vim/plugged/vimwiki/,/usr/local/share/vim/vimfiles,/usr/local/share/vim/vim80,/usr/local/share/vim/vimfiles/after,~/.vim/plugged/Tabular/after,~/.vim/plu
gged/indentLine.vim/after,~/.vim/plugged/snipmate/after,~/.vim/after
Xwo ()
Ответ на: комментарий от Xwo

Может 'filetype' два раза ставится. Можно попробовать получить лог.

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

ты не поверишь, в vim-plug

-Plug 'vim-python/python-syntax', { 'for': ['python'] } "Python
Add a comment to this line
+Plug 'vim-python/python-syntax'

-Plug 'jmcantrell/vim-virtualenv', { 'for': ['python'] }
Add a comment to this line
+Plug 'jmcantrell/vim-virtualenv'

           \ {'do': 
                 \ 'sed -i -e \"s/TIMEOUT_SECONDS = 10.0/TIMEOUT_SECONDS = 0.5/g\" ~/.vim/plugged/YouCompleteMe/python/ycm/client/completion_request.py;
                 \ nice -n 19 ./install.py --clang-completer --tern-completer;
-                \ sed -i -e \"s/TIMEOUT_SECONDS = 0.5/TIMEOUT_SECONDS = 10.0/g\" ~/.vim/plugged/YouCompleteMe/python/ycm/client/completion_request.py',
-            \ 'for': 
-                \ ['python', 
-                \ 'javascript', 
-                \ 'css', 
-                \ 'html', 
-                \ 'noconf', 
-                \ 'go', 
-                \ 'sh', 
-                \ 'java',
-                \ 'noext']}
+                \ sed -i -e \"s/TIMEOUT_SECONDS = 0.5/TIMEOUT_SECONDS = 10.0/g\" ~/.vim/plugged/YouCompleteMe/python/ycm/client/completion_request.py'}
Add a comment to this line
 autocmd! User YouCompleteMe if !has('vim_starting') | call youcompleteme#Enable() | endif

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

Кстати, в sessionman найдена бага. При load session тоже ~/.vim/after/ftplugin/python.vim два раза загружается. Решается комментом в функции function! s:OpenSession(name) строки doautoall FileType. Отписал в почту чуваку, который плагин делал, но не знаю пофиксится ли это.

Xwo ()
Ответ на: комментарий от Xwo

Вообще я не уверен, что это не разрешено делать. Чтобы не ломалось, можно убирать старую подсветку при её наличии прямо перед matchadd().

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

если создать сессию(вручную или с помощью sessionman) и загрузить ее vim -S session.vim, то при таком раскладе дважды ~/.vim/after/ftplugin/python.vim не загружается.

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

но как вариант да, можно чекать есть ли w:m2 и удалять ее

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

что-то ее не получается прочекать

if exists(w:m2)
   call matchdelete(w:m2)
endif

По дефолту ее значение == 5, если выполнить инструкцию let w:m2=matchadd('ErrorMsg','\%81v.*',-1), то w:m2 == 7

Как ее правильно прочекать ?

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

нет

echo exists('w:m2')

out:1

let w:m2=matchadd('ErrorMsg','\%81v.*',-1) echo exists('w:m2') out:1

Xwo ()
Ответ на: комментарий от Xwo

Так это значит, что она уже установлена. Проверяется именно так.

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

установлена да, но не мной же). Вопрос состоял в том, чтобы прочекать. Это не получилось. Ну да, можно w:m2 > 5 чекать, но это через клоаку. Короче решение:

autocmd winEnter,BufEnter *.py call clearmatches() | call matchadd('ErrorMsg', '\%81v.*', -1)

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

иначе, если не делать clearmatches, то получаем тормоза при перемещении по буферам разных типов файлов.

Xwo ()
Ответ на: комментарий от Xwo

установлена да, но не мной же)

А кем ещё? Этот же скрипт и установил.

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

Пользовательские переменные из вакуума сами по себе не появляются.

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

да, извиняюсь, нашел место, откуда она устанавливалась.

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

Но не получилось

if exists('w:m2')
    call matchdelete(w:m2)
endif
let w:m2=matchadd('ErrorMsg','\%81v.*',-1)
При переходе из одного буфера в другой пишет типа id not found. Так что остановился на call clearmatches() в autocmd

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