2016-08-12 10 views

ответ

1

Вы можете настроить ctagsargs для определенного типа файла, что делает ctags не выводить «видимость» информация для тегов в первую очередь, например:

let g:tagbar_type_python = { 
    \ 'ctagsargs' : '-f - --excmd=pattern --fields=nksSmt' 
\ } 

Важный бит здесь является --fields вариант, который определяет поля для каждого тега.

0

Чтобы выполнить операцию вручную выполнить это:

: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()