标签栏插件中的Systemverilog支持

时间:2014-03-07 06:35:18

标签: vim ctags vim-plugin exuberant-ctags tagbar

任何人都可以帮我在tagbar vim插件中添加systemverilog语言支持。

我试过以下的东西,但它对我不起作用

1)创建〜/ .ctags并从https://github.com/shaohao/config.d/blob/master/ctags

复制代码

2)mkdir ftplugin到〜/ .vim并从https://github.com/shaohao/vimfiles/blob/master/bundle/verilog_systemverilog/ftplugin/systemverilog.vim添加systemverilog.vim

3)cd到项目目录并运行ctags -R * 但是低于警告

 ctags: Warning: Unknown language specified in "langmap" option

以下是ctags的一些输出

 ctags --list-languages
 ctags: Warning: Unknown language specified in "langmap" option
 .
 .
 systemverilog

 ctags --list-kinds=systemverilog

 ctags: Warning: Unknown language specified in "langmap" option
 e  clocking 
 i  constraint 
 l  covergroup 
 o  class 
 t  function 
 A  interface 
 G  module 
 J  package 
 M  program 
 W  task 

但是当我在gvim中打开SV文件并使用时:TagbarToggle标签栏窗口是空白的:(

请帮忙

2 个答案:

答案 0 :(得分:1)

背景:TagBar不会使用您的tags文件,它会查询ctags并直接从stdout读取其输出。

我认为问题在于--langmap~/.ctags的定义方式。 AFAIK,昏迷用于分离langmaps,而不同的扩展只是一个接一个地放在没有分隔符的地方:

--langmap=foo:.foo.fo.oo,bar:.bar.ba

我认为~/.ctags文件的第2行应该如下所示:

--langmap=systemverilog:.sv.svh.svp

答案 1 :(得分:1)

我已经介绍了我在Github提供的verilog_systemverilog vim插件的一些改进。如果您使用this开发版本的exuberante-ctags以及我的vim插件和以下Tagbar配置,您应该获得正确的Tagbar支持:

let g:tagbar_type_verilog_systemverilog = {
        \ 'ctagstype'   : 'SystemVerilog',
        \ 'kinds'       : [
            \ 'b:blocks:1:1',
            \ 'c:constants:1:0',
            \ 'e:events:1:0',
            \ 'f:functions:1:1',
            \ 'm:modules:0:1',
            \ 'n:nets:1:0',
            \ 'p:ports:1:0',
            \ 'r:registers:1:0',
            \ 't:tasks:1:1',
            \ 'A:assertions:1:1',
            \ 'C:classes:0:1',
            \ 'V:covergroups:0:1',
            \ 'I:interfaces:0:1',
            \ 'M:modport:0:1',
            \ 'K:packages:0:1',
            \ 'P:programs:0:1',
            \ 'R:properties:0:1',
            \ 'T:typedefs:0:1'
        \ ],
        \ 'sro'         : '.',
        \ 'kind2scope'  : {
            \ 'm' : 'module',
            \ 'b' : 'block',
            \ 't' : 'task',
            \ 'f' : 'function',
            \ 'C' : 'class',
            \ 'V' : 'covergroup',
            \ 'I' : 'interface',
            \ 'K' : 'package',
            \ 'P' : 'program',
            \ 'R' : 'property'
        \ },
    \ }