3

谁能帮我在 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 tagbar 窗口仍然是空白的 :(

请帮忙

4

2 回答 2

2

我对我在Github上提供的 verilog_systemverilog vim 插件进行了一些改进。如果你将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'
        \ },
    \ }
于 2015-03-30T15:23:49.453 回答
1

背景:TagBar 不会使用您的tags文件,它会ctags直接从stdout.

我认为问题在于--langmap您的~/.ctags. AFAIK,逗号用于分隔语言映射,而不同的扩展名只是一个接一个地放置,没有分隔符:

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

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

--langmap=systemverilog:.sv.svh.svp
于 2014-03-07T09:07:02.593 回答