Как заставить тэгбар работать с js файлами

Если я открою файл с расширением.html, tagbar работает нормально.

Если я открою файл с расширением.js, то tagbar ничего не отобразит. Просто переименуйте расширение файла в.html, и оно заработает.

Как я могу заставить tagbar работать с файлами.js?

3 ответа

  • Какой тип файла (:set ft?) файла, над которым вы работаете?

  • У тебя есть ctags и / или jsctags установлен и работает?

    Делать $ ctags -R . и / или $ jsctags . выполняется из того места, где вы положили свои файлы JavaScript создать tags файл?

    Если да, что это содержит?

  • Если вы используете jsctagsэто актуально? Что насчет nodejs?

Вы пробовали taglist-plus? Он использует jsctags, и он работал очень хорошо в течение короткого времени, когда у меня был установлен этот плагин.

Столкнулся с этой проблемой при использовании vim, tagbar с участием Arduinoисходный код в файлах * .ino при редактировании Tasmota код.

Мне пришлось осознать две вещи:

  1. Заставьте ctags обрабатывать новое расширение файла (см. /questions/33483191/dobavlenie-novogo-yazyika-v-ctags-ne-rabotaet/57592901#57592901): для ctags-universal, создайте файл ~/.ctags.d/local.ctags с участием --langmap=c++:+.ino в этом.
  2. Сообщите панели тегов, как обрабатывать тип файла vim arduino (запросить тип файла в vim, используя :set filetype?) в .vimrc:
      let g:tagbar_type_arduino = {
    \ 'ctagstype' : 'c++',
    \ 'kinds'     : [
        \ 'd:macros:1:0',
        \ 'p:prototypes:1:0',
        \ 'g:enums',
        \ 'e:enumerators:0:0',
        \ 't:typedefs:0:0',
        \ 'n:namespaces',
        \ 'c:classes',
        \ 's:structs',
        \ 'u:unions',
        \ 'f:functions',
        \ 'm:members:0:0',
        \ 'v:variables:0:0'
    \ ],
    \ 'sro'        : '::',
    \ 'kind2scope' : {
        \ 'g' : 'enum',
        \ 'n' : 'namespace',
        \ 'c' : 'class',
        \ 's' : 'struct',
        \ 'u' : 'union'
    \ },
    \ 'scope2kind' : {
        \ 'enum'      : 'g',
        \ 'namespace' : 'n',
        \ 'class'     : 'c',
        \ 'struct'    : 's',
        \ 'union'     : 'u'
    \ }
\ }

Найдите инструкции и это определение в :help tagbar -> tagbar-extend. Javascript и другие определения приведены в ~/.vim/bundle/tagbar/autoload/tagbar/types/uctags.vim

Могут быть и другие способы сделать это. У меня работает (тм).

Осталось только одно: снова открыть *.ino исходный файл, нажмите <F8> чтобы показать панель тегов.

HTH

Другие вопросы по тегам