Я хочу, чтобы g:tagbar_show_visibility
был установлен в '0'
для файлов Python, так как в Python нет открытого/защищенного/приватного. Как настроить Vim таким образом?Как отключить отображение символов видимости в Tagbar для определенного типа файлов?
ответ
Вы можете настроить ctagsargs
для определенного типа файла, что делает ctags
не выводить «видимость» информация для тегов в первую очередь, например:
let g:tagbar_type_python = {
\ 'ctagsargs' : '-f - --excmd=pattern --fields=nksSmt'
\ }
Важный бит здесь является --fields
вариант, который определяет поля для каждого тега.
Чтобы выполнить операцию вручную выполнить это:
:TagbarClose
:let g:tagbar_show_visibility = 0
:TagbarOpen
вы можете добавить следующую строку в ваш vimrc, чтобы сделать это автоматически:
au BufRead *.py :let g:tagbar_show_visibility = 0
В автокоманде (АС) выполнить команду на конкретном Мероприятия. В этом конкретном примере он устанавливает переменную в 0 для буферов .py в настоящий момент vim их читает.
EDIT
Мое решение не работает очень хорошо. Поскольку переменная g: tagbar_show_bisibility является глобальной. Плагин Tagbar, кажется, читает его, когда вызывается TagbarOpen. Поэтому лучше использовать функцию для открытия Tagbar, например TagbarOpen2 или что-то в этом роде. Функция проверяет тип файла текущего буфера и соответственно устанавливает переменную видимости.
EDIT2
Я сделал скрипт, который будет установить видимость каждый раз при входе в буфер. Затем, чтобы обновить Tagbar, я использую TagbarToggle два раза подряд. Это немного неприятно, но это лучшее, что я получил. Может быть, вы могли бы придумать что-то, что лучше избегать flikering, если вы потратите некоторое время.
Пожалуйста, поделитесь, если вы улучшите этот скрипт.
function! TagbarUpdate()
if (&ft == 'tagbar')
return
endif
let g:tagbar_show_visibility = 1
if (&ft == 'python')
let g:tagbar_show_visibility = 0
endif
exec ":TagbarToggle"
exec ":TagbarToggle"
endfunction
au! BufEnter * :call TagbarUpdate()